$:/plugins/bimlas/locator/field-templates/text
{
"author": "comment",
"responder": "comment",
"developer": "comment"
}
{
"keywords": "comment"
}
\define searchTerm() [search:$(field)$<userInput>]
<$list filter="[[$:/config/field-search/data/Any Field]indexes[]sortby{$:/config/field-search/sortby}]" variable=field emptyMessage="[[- configuration needed -|$:/plugins/wikilabs/field-search/readme]]">
{{||$:/plugins/wikilabs/field-search/templates/Results}}
</$list>
\define searchTerm() [search:$(field)$<userInput>]
\define openConfig()
<$button>
<$action-setfield $tiddler="$:/state/tab-1749438307" text="$:/plugins/wikilabs/field-search/CP/Settings/field-search"/>
<$action-navigate $to="$:/ControlPanel"/>
- configuration needed -
</$button>
\end
<$list filter="[[$:/config/field-search/data/Authors]indexes[]sortby{$:/config/field-search/sortby}]" variable=field emptyMessage="<<openConfig>>">
{{||$:/plugins/wikilabs/field-search/templates/Results}}
</$list>
\define searchTerm() [search:$(field)$<userInput>]
\define openConfig()
<$button>
<$action-setfield $tiddler="$:/state/tab-1749438307" text="$:/plugins/wikilabs/field-search/CP/Settings/field-search"/>
<$action-navigate $to="$:/ControlPanel"/>
- configuration needed -
</$button>
\end
<$list filter="[[$:/config/field-search/data/Keywords]indexes[]sortby{$:/config/field-search/sortby}]" variable=field emptyMessage="<<openConfig>>">
{{||$:/plugins/wikilabs/field-search/templates/Results}}
</$list>
\define searchTerm() [search:$(field)$<userInput>]
\define openConfig()
<$button>
<$action-setfield $tiddler="$:/state/tab-1749438307" text="$:/plugins/wikilabs/field-search/CP/Settings/field-search"/>
<$action-navigate $to="$:/ControlPanel"/>
- configuration needed -
</$button>
\end
<$list filter="[[$:/config/field-search/data/Tags]indexes[]sortby{$:/config/field-search/sortby}]" variable=field emptyMessage="<<openConfig>>">
{{||$:/plugins/wikilabs/field-search/templates/Results}}
</$list>
Kookma plugin library is a set of plugins developed by [[Mohammad|https://github.com/kookma]]. A good recommendation is to backup your data before installing any plugins. These plugins distributed under MIT license.
To use in other wikis, drag and drop this link to those wikis: [[Kookma Plugin Library|$:/config/KookmaPluginLibrary]]
The prerelease version of the official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team.
Scripts in Tiddlywiki <<version>>.html
~WikiLabs plugin library latest version!
{"tiddlers":{"$:/Acknowledgements":{"text":"TiddlyWiki incorporates code from these fine OpenSource projects:\n\n* [[The Stanford Javascript Crypto Library|http://bitwiseshiftleft.github.io/sjcl/]]\n* [[The Jasmine JavaScript Test Framework|http://pivotal.github.io/jasmine/]]\n* [[Normalize.css by Nicolas Gallagher|http://necolas.github.io/normalize.css/]]\n\nAnd media from these projects:\n\n* World flag icons from [[Wikipedia|http://commons.wikimedia.org/wiki/Category:SVG_flags_by_country]]\n"},"$:/core/copyright.txt":{"type":"text/plain","text":"TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\n\nCopyright (c) 2004-2007, Jeremy Ruston\nCopyright (c) 2007-2021, UnaMesa Association\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."},"$:/core/icon":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path d=\"M64 0l54.56 32v64L64 128 9.44 96V32L64 0zm21.127 95.408c-3.578-.103-5.15-.094-6.974-3.152l-1.42.042c-1.653-.075-.964-.04-2.067-.097-1.844-.07-1.548-1.86-1.873-2.8-.52-3.202.687-6.43.65-9.632-.014-1.14-1.593-5.17-2.157-6.61-1.768.34-3.546.406-5.34.497-4.134-.01-8.24-.527-12.317-1.183-.8 3.35-3.16 8.036-1.21 11.44 2.37 3.52 4.03 4.495 6.61 4.707 2.572.212 3.16 3.18 2.53 4.242-.55.73-1.52.864-2.346 1.04l-1.65.08c-1.296-.046-2.455-.404-3.61-.955-1.93-1.097-3.925-3.383-5.406-5.024.345.658.55 1.938.24 2.53-.878 1.27-4.665 1.26-6.4.47-1.97-.89-6.73-7.162-7.468-11.86 1.96-3.78 4.812-7.07 6.255-11.186-3.146-2.05-4.83-5.384-4.61-9.16l.08-.44c-3.097.59-1.49.37-4.82.628-10.608-.032-19.935-7.37-14.68-18.774.34-.673.664-1.287 1.243-.994.466.237.4 1.18.166 2.227-3.005 13.627 11.67 13.732 20.69 11.21.89-.25 2.67-1.936 3.905-2.495 2.016-.91 4.205-1.282 6.376-1.55 5.4-.63 11.893 2.276 15.19 2.37 3.3.096 7.99-.805 10.87-.615 2.09.098 4.143.483 6.16 1.03 1.306-6.49 1.4-11.27 4.492-12.38 1.814.293 3.213 2.818 4.25 4.167 2.112-.086 4.12.46 6.115 1.066 3.61-.522 6.642-2.593 9.833-4.203-3.234 2.69-3.673 7.075-3.303 11.127.138 2.103-.444 4.386-1.164 6.54-1.348 3.507-3.95 7.204-6.97 7.014-1.14-.036-1.805-.695-2.653-1.4-.164 1.427-.81 2.7-1.434 3.96-1.44 2.797-5.203 4.03-8.687 7.016-3.484 2.985 1.114 13.65 2.23 15.594 1.114 1.94 4.226 2.652 3.02 4.406-.37.58-.936.785-1.54 1.01l-.82.11zm-40.097-8.85l.553.14c.694-.27 2.09.15 2.83.353-1.363-1.31-3.417-3.24-4.897-4.46-.485-1.47-.278-2.96-.174-4.46l.02-.123c-.582 1.205-1.322 2.376-1.72 3.645-.465 1.71 2.07 3.557 3.052 4.615l.336.3z\" fill-rule=\"evenodd\"/></svg>"},"$:/core/images/add-comment":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-add-comment tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 56H36a8 8 0 100 16h20v20a8 8 0 1016 0V72h20a8 8 0 100-16H72V36a8 8 0 10-16 0v20zm-12.595 58.362c-6.683 7.659-20.297 12.903-36.006 12.903-2.196 0-4.35-.102-6.451-.3 9.652-3.836 17.356-12.24 21.01-22.874C8.516 94.28 0 79.734 0 63.5 0 33.953 28.206 10 63 10s63 23.953 63 53.5S97.794 117 63 117c-6.841 0-13.428-.926-19.595-2.638z\"/></svg>"},"$:/core/images/advanced-search-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-advanced-search-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M74.565 87.985A47.776 47.776 0 0148 96C21.49 96 0 74.51 0 48S21.49 0 48 0s48 21.49 48 48c0 9.854-2.97 19.015-8.062 26.636l34.347 34.347a9.443 9.443 0 010 13.36 9.446 9.446 0 01-13.36 0l-34.36-34.358zM48 80c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32z\"/><circle cx=\"48\" cy=\"48\" r=\"8\"/><circle cx=\"28\" cy=\"48\" r=\"8\"/><circle cx=\"68\" cy=\"48\" r=\"8\"/></g></svg>"},"$:/core/images/auto-height":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-auto-height tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M67.987 114.356l-.029-14.477a4 4 0 00-2.067-3.494l-15.966-8.813-1.933 7.502H79.9c4.222 0 5.564-5.693 1.786-7.58L49.797 71.572 48.01 79.15h31.982c4.217 0 5.564-5.682 1.795-7.575L49.805 55.517l-1.795 7.575h31.982c4.212 0 5.563-5.67 1.805-7.57l-16.034-8.105 2.195 3.57V35.614l9.214 9.213a4 4 0 105.656-5.656l-16-16a4 4 0 00-5.656 0l-16 16a4 4 0 105.656 5.656l9.13-9.13v15.288a4 4 0 002.195 3.57l16.035 8.106 1.804-7.57H48.01c-4.217 0-5.564 5.682-1.795 7.574l31.982 16.059 1.795-7.575H48.01c-4.222 0-5.564 5.693-1.787 7.579l31.89 15.923 1.787-7.578H47.992c-4.133 0-5.552 5.504-1.933 7.501l15.966 8.813-2.067-3.494.029 14.436-9.159-9.158a4 4 0 00-5.656 5.656l16 16a4 4 0 005.656 0l16-16a4 4 0 10-5.656-5.656l-9.185 9.184zM16 20h96a4 4 0 100-8H16a4 4 0 100 8z\"/></svg>"},"$:/core/images/blank":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-blank tc-image-button\" viewBox=\"0 0 128 128\"/>"},"$:/core/images/bold":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-bold tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M41.146 51.81V21.87h26.353c2.51 0 4.93.21 7.26.628 2.33.418 4.392 1.165 6.185 2.24 1.793 1.076 3.227 2.57 4.302 4.482 1.076 1.913 1.614 4.363 1.614 7.35 0 5.379-1.613 9.263-4.84 11.653-3.227 2.39-7.35 3.586-12.37 3.586H41.146zM13 0v128h62.028a65.45 65.45 0 0016.762-2.151c5.438-1.434 10.278-3.645 14.52-6.633 4.244-2.988 7.62-6.842 10.13-11.563 2.51-4.721 3.764-10.308 3.764-16.762 0-8.008-1.942-14.85-5.826-20.527-3.884-5.677-9.77-9.65-17.658-11.921 5.737-2.75 10.069-6.275 12.997-10.577 2.928-4.303 4.392-9.681 4.392-16.135 0-5.976-.986-10.995-2.958-15.059-1.972-4.063-4.75-7.32-8.336-9.77-3.585-2.45-7.888-4.213-12.907-5.289C84.888.538 79.33 0 73.235 0H13zm28.146 106.129V70.992H71.8c6.095 0 10.995 1.404 14.7 4.212 3.705 2.81 5.558 7.5 5.558 14.073 0 3.347-.568 6.096-1.703 8.247-1.136 2.151-2.66 3.854-4.572 5.11-1.912 1.254-4.123 2.15-6.633 2.688-2.51.538-5.139.807-7.888.807H41.146z\"/></svg>"},"$:/core/images/cancel-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-cancel-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 76.314l-16.97 16.97a7.999 7.999 0 01-11.314 0c-3.118-3.118-3.124-8.19 0-11.313L52.686 65l-16.97-16.97a7.999 7.999 0 010-11.314c3.118-3.118 8.19-3.124 11.313 0L64 53.686l16.97-16.97a7.999 7.999 0 0111.314 0c3.118 3.118 3.124 8.19 0 11.313L75.314 65l16.97 16.97a7.999 7.999 0 010 11.314c-3.118 3.118-8.19 3.124-11.313 0L64 76.314zM64 129c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 1 0 29.654 0 65c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 17 64 17 16 38.49 16 65s21.49 48 48 48z\"/></svg>"},"$:/core/images/chevron-down":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-down tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64.053 85.456a7.889 7.889 0 01-5.6-2.316L2.473 27.16a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0L64.05 66.344l50.382-50.382a7.92 7.92 0 0111.195 0c3.085 3.086 3.092 8.105 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.317z\"/><path d=\"M64.053 124.069a7.889 7.889 0 01-5.6-2.316l-55.98-55.98a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0l50.382 50.382 50.382-50.382a7.92 7.92 0 0111.195 0c3.085 3.086 3.092 8.104 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.316z\"/></g></svg>"},"$:/core/images/chevron-left":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-left tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M47.544 64.053c0-2.027.77-4.054 2.316-5.6l55.98-55.98a7.92 7.92 0 0111.196 0c3.085 3.086 3.092 8.105 0 11.196L66.656 64.05l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.085-8.105 3.092-11.196 0l-55.98-55.98a7.892 7.892 0 01-2.317-5.595z\"/><path d=\"M8.931 64.053c0-2.027.77-4.054 2.316-5.6l55.98-55.98a7.92 7.92 0 0111.196 0c3.085 3.086 3.092 8.105 0 11.196L28.041 64.05l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.085-8.104 3.092-11.196 0l-55.98-55.98a7.892 7.892 0 01-2.316-5.595z\"/></g></svg>"},"$:/core/images/chevron-right":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-right tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M83.456 63.947c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196L64.344 63.95 13.963 13.567a7.92 7.92 0 010-11.195c3.086-3.085 8.105-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.317 5.595z\"/><path d=\"M122.069 63.947c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l50.382-50.382-50.382-50.382a7.92 7.92 0 010-11.195c3.086-3.085 8.104-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.316 5.595z\"/></g></svg>"},"$:/core/images/chevron-up":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-up tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M63.947 44.544c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.105 3.092-11.196 0L63.95 63.656l-50.382 50.382a7.92 7.92 0 01-11.195 0c-3.085-3.086-3.092-8.105 0-11.196l55.98-55.98a7.892 7.892 0 015.595-2.317z\"/><path d=\"M63.947 5.931c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.105 3.092-11.196 0L63.95 25.041 13.567 75.423a7.92 7.92 0 01-11.195 0c-3.085-3.086-3.092-8.104 0-11.196l55.98-55.98a7.892 7.892 0 015.595-2.316z\"/></g></svg>"},"$:/core/images/clone-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-clone-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M32.265 96v24.002A7.996 7.996 0 0040.263 128h79.74a7.996 7.996 0 007.997-7.998v-79.74a7.996 7.996 0 00-7.998-7.997H96V48h12.859a2.99 2.99 0 012.994 2.994v57.865a2.99 2.99 0 01-2.994 2.994H50.994A2.99 2.99 0 0148 108.859V96H32.265z\"/><path d=\"M40 56h-7.993C27.588 56 24 52.418 24 48c0-4.41 3.585-8 8.007-8H40v-7.993C40 27.588 43.582 24 48 24c4.41 0 8 3.585 8 8.007V40h7.993C68.412 40 72 43.582 72 48c0 4.41-3.585 8-8.007 8H56v7.993C56 68.412 52.418 72 48 72c-4.41 0-8-3.585-8-8.007V56zM8 0C3.58 0 0 3.588 0 8v80c0 4.419 3.588 8 8 8h80c4.419 0 8-3.588 8-8V8c0-4.419-3.588-8-8-8H8zM19 16A2.997 2.997 0 0016 19.001v57.998A2.997 2.997 0 0019.001 80h57.998A2.997 2.997 0 0080 76.999V19.001A2.997 2.997 0 0076.999 16H19.001z\"/></g></svg>"},"$:/core/images/close-all-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-close-all-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M28 111.314l-14.144 14.143a8 8 0 01-11.313-11.313L16.686 100 2.543 85.856a8 8 0 0111.313-11.313L28 88.686l14.144-14.143a8 8 0 0111.313 11.313L39.314 100l14.143 14.144a8 8 0 01-11.313 11.313L28 111.314zM28 39.314L13.856 53.457A8 8 0 012.543 42.144L16.686 28 2.543 13.856A8 8 0 0113.856 2.543L28 16.686 42.144 2.543a8 8 0 0111.313 11.313L39.314 28l14.143 14.144a8 8 0 01-11.313 11.313L28 39.314zM100 39.314L85.856 53.457a8 8 0 01-11.313-11.313L88.686 28 74.543 13.856A8 8 0 0185.856 2.543L100 16.686l14.144-14.143a8 8 0 0111.313 11.313L111.314 28l14.143 14.144a8 8 0 01-11.313 11.313L100 39.314zM100 111.314l-14.144 14.143a8 8 0 01-11.313-11.313L88.686 100 74.543 85.856a8 8 0 0111.313-11.313L100 88.686l14.144-14.143a8 8 0 0111.313 11.313L111.314 100l14.143 14.144a8 8 0 01-11.313 11.313L100 111.314z\"/></g></svg>"},"$:/core/images/close-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-close-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M65.086 75.41l-50.113 50.113c-3.121 3.121-8.192 3.126-11.316.002-3.118-3.118-3.123-8.19.002-11.316l50.114-50.114L3.659 13.982C.538 10.86.533 5.79 3.657 2.666c3.118-3.118 8.19-3.123 11.316.002l50.113 50.114L115.2 2.668c3.121-3.121 8.192-3.126 11.316-.002 3.118 3.118 3.123 8.19-.002 11.316L76.4 64.095l50.114 50.114c3.121 3.121 3.126 8.192.002 11.316-3.118 3.118-8.19 3.123-11.316-.002L65.086 75.409z\"/></svg>"},"$:/core/images/close-others-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-close-others-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48zm0-16c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32zm0-16c8.837 0 16-7.163 16-16s-7.163-16-16-16-16 7.163-16 16 7.163 16 16 16z\"/></svg>"},"$:/core/images/copy-clipboard":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-copy-clipboard tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"33\" height=\"8\" x=\"40\" y=\"40\" rx=\"4\"/><rect width=\"17\" height=\"8\" x=\"40\" y=\"82\" rx=\"4\"/><rect width=\"17\" height=\"8\" x=\"40\" y=\"54\" rx=\"4\"/><rect width=\"33\" height=\"8\" x=\"40\" y=\"96\" rx=\"4\"/><rect width=\"12\" height=\"8\" x=\"40\" y=\"68\" rx=\"4\"/><path d=\"M40 16H24c-4.419 0-8 3.59-8 8a8.031 8.031 0 000 .01v95.98a8.03 8.03 0 000 .01c0 4.41 3.581 8 8 8h80a7.975 7.975 0 005.652-2.34 7.958 7.958 0 002.348-5.652v-16.016c0-4.414-3.582-7.992-8-7.992-4.41 0-8 3.578-8 7.992V112H32V32h64v8.008C96 44.422 99.582 48 104 48c4.41 0 8-3.578 8-7.992V23.992a7.963 7.963 0 00-2.343-5.651A7.995 7.995 0 00104.001 16H88c0-4.41-3.585-8-8.007-8H48.007C43.588 8 40 11.582 40 16zm4-1.004A4.001 4.001 0 0148 11h32c2.21 0 4 1.797 4 3.996v4.008A4.001 4.001 0 0180 23H48c-2.21 0-4-1.797-4-3.996v-4.008z\"/><rect width=\"66\" height=\"16\" x=\"62\" y=\"64\" rx=\"8\"/><path d=\"M84.657 82.343l-16-16v11.314l16-16a8 8 0 10-11.314-11.314l-16 16a8 8 0 000 11.314l16 16a8 8 0 1011.314-11.314z\"/></g></svg>"},"$:/core/images/delete-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-delete-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\" transform=\"translate(12)\"><rect width=\"105\" height=\"16\" y=\"11\" rx=\"8\"/><rect width=\"48\" height=\"16\" x=\"28\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"8\" y=\"16\" rx=\"8\"/><rect width=\"88\" height=\"16\" x=\"8\" y=\"112\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"80\" y=\"16\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"56\" y=\"16\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"32\" y=\"16\" rx=\"8\"/></g></svg>"},"$:/core/images/done-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-done-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M42.26 111.032c-2.051.001-4.103-.78-5.668-2.345L2.662 74.758a8 8 0 01-.005-11.32c3.118-3.117 8.192-3.12 11.32.007l28.278 28.278 72.124-72.124a8.002 8.002 0 0111.314-.001c3.118 3.118 3.124 8.19 0 11.315l-77.78 77.78a7.978 7.978 0 01-5.658 2.343z\"/></svg>"},"$:/core/images/down-arrow":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-down-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M64.177 100.069a7.889 7.889 0 01-5.6-2.316l-55.98-55.98a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0l50.382 50.382 50.382-50.382a7.92 7.92 0 0111.195 0c3.086 3.086 3.092 8.104 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.316z\"/></svg>"},"$:/core/images/download-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-download-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48z\" class=\"tc-image-download-button-ring\"/><path d=\"M34.35 66.43l26.892 27.205a4.57 4.57 0 006.516 0L94.65 66.43a4.7 4.7 0 000-6.593 4.581 4.581 0 00-3.258-1.365h-8.46c-2.545 0-4.608-2.087-4.608-4.661v-15.15c0-2.575-2.063-4.662-4.608-4.662H55.284c-2.545 0-4.608 2.087-4.608 4.662v15.15c0 2.574-2.063 4.661-4.608 4.661h-8.46c-2.545 0-4.608 2.087-4.608 4.662a4.69 4.69 0 001.35 3.296z\"/></g></svg>"},"$:/core/images/edit-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-edit-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M95.627 10.059l-5.656 5.657 11.313 11.313 5.657-5.656-11.314-11.314zm5.657-5.657l1.966-1.966c3.123-3.122 8.194-3.129 11.319-.005 3.117 3.118 3.122 8.192-.005 11.32l-1.966 1.965-11.314-11.314zm-16.97 16.97l-60.25 60.25a8.12 8.12 0 00-.322.342c-.1.087-.198.179-.295.275-5.735 5.735-10.702 22.016-10.702 22.016s16.405-5.09 22.016-10.702c.095-.096.186-.193.272-.292a8.12 8.12 0 00.345-.325l60.25-60.25-11.314-11.313zM35.171 124.19c6.788-.577 13.898-2.272 23.689-5.348 1.825-.573 3.57-1.136 6.336-2.04 16-5.226 21.877-6.807 28.745-7.146 8.358-.413 13.854 2.13 17.58 8.699a4 4 0 006.959-3.946c-5.334-9.406-13.745-13.296-24.933-12.744-7.875.39-14.057 2.052-30.835 7.533-2.739.894-4.46 1.45-6.25 2.012-19.46 6.112-30.77 7.072-39.597 1.747a4 4 0 10-4.132 6.85c6.333 3.82 13.754 5.12 22.438 4.383z\"/></g></svg>"},"$:/core/images/erase":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-erase tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60.087 127.996l63.015-63.015c6.535-6.535 6.528-17.115-.003-23.646L99.466 17.702c-6.539-6.538-17.117-6.532-23.646-.003L4.898 88.62c-6.535 6.534-6.528 17.115.003 23.646l15.73 15.73h39.456zm-34.95-7.313l-14.324-14.325c-3.267-3.268-3.268-8.564-.008-11.824L46.269 59.07l35.462 35.462-26.15 26.15H25.137z\"/></svg>"},"$:/core/images/excise":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-excise tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 107.314l-2.343 2.343a8 8 0 11-11.314-11.314l16-16a8 8 0 0111.314 0l16 16a8 8 0 11-11.314 11.314L72 107.314v14.284c0 3.536-3.582 6.402-8 6.402s-8-2.866-8-6.402v-14.284zM0 40.007C0 35.585 3.59 32 8 32c4.418 0 8 3.588 8 8.007v31.986C16 76.415 12.41 80 8 80c-4.418 0-8-3.588-8-8.007V40.007zm32 0C32 35.585 35.59 32 40 32c4.418 0 8 3.588 8 8.007v31.986C48 76.415 44.41 80 40 80c-4.418 0-8-3.588-8-8.007V40.007zm48 0C80 35.585 83.59 32 88 32c4.418 0 8 3.588 8 8.007v31.986C96 76.415 92.41 80 88 80c-4.418 0-8-3.588-8-8.007V40.007zm-24-32C56 3.585 59.59 0 64 0c4.418 0 8 3.588 8 8.007v31.986C72 44.415 68.41 48 64 48c-4.418 0-8-3.588-8-8.007V8.007zm56 32c0-4.422 3.59-8.007 8-8.007 4.418 0 8 3.588 8 8.007v31.986c0 4.422-3.59 8.007-8 8.007-4.418 0-8-3.588-8-8.007V40.007z\"/></svg>"},"$:/core/images/export-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-export-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.003 128H119.993a7.984 7.984 0 005.664-2.349v.007A7.975 7.975 0 00128 120V56c0-4.418-3.59-8-8-8-4.418 0-8 3.58-8 8v56H16V56c0-4.418-3.59-8-8-8-4.418 0-8 3.58-8 8v64c0 4.418 3.59 8 8 8h.003zm48.62-100.689l-8.965 8.966c-3.125 3.125-8.195 3.13-11.319.005-3.118-3.118-3.122-8.192.005-11.319L58.962 2.346A7.986 7.986 0 0164.625 0l-.006.002c2.05-.001 4.102.78 5.666 2.344l22.618 22.617c3.124 3.125 3.129 8.195.005 11.319-3.118 3.118-8.192 3.122-11.319-.005l-8.965-8.966v61.256c0 4.411-3.582 8-8 8-4.41 0-8-3.582-8-8V27.311z\"/></svg>"},"$:/core/images/file":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-file tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M111.968 30.5H112V120a8 8 0 01-8 8H24a8 8 0 01-8-8V8a8 8 0 018-8h57v.02a7.978 7.978 0 015.998 2.337l22.627 22.627a7.975 7.975 0 012.343 5.516zM81 8H24v112h80V30.5H89c-4.418 0-8-3.578-8-8V8z\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"36\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"52\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"68\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"84\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"100\" rx=\"4\"/><rect width=\"40\" height=\"8\" x=\"32\" y=\"20\" rx=\"4\"/></svg>"},"$:/core/images/fixed-height":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fixed-height tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60 35.657l-9.172 9.171a4 4 0 11-5.656-5.656l16-16a4 4 0 015.656 0l16 16a4 4 0 01-5.656 5.656L68 35.657v57.686l9.172-9.171a4 4 0 115.656 5.656l-16 16a4 4 0 01-5.656 0l-16-16a4 4 0 115.656-5.656L60 93.343V35.657zM16 116h96a4 4 0 100-8H16a4 4 0 100 8zm0-96h96a4 4 0 100-8H16a4 4 0 100 8z\"/></svg>"},"$:/core/images/fold-all-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold-all tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"64\" rx=\"8\"/><path d=\"M64.03 20.004c-2.05 0-4.102.78-5.667 2.344L35.746 44.966c-3.125 3.124-3.13 8.194-.005 11.318 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.965 16.966 16.965c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.191-.005-11.318L69.687 22.348a7.986 7.986 0 00-5.663-2.346zM64.03 85.002c-2.05-.001-4.102.78-5.667 2.344l-22.617 22.617c-3.125 3.125-3.13 8.195-.005 11.319 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.966 16.966 16.966c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.192-.005-11.319L69.687 87.346A7.986 7.986 0 0064.024 85z\"/></g></svg>"},"$:/core/images/fold-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><path d=\"M64.03 25.004c-2.05 0-4.102.78-5.667 2.344L35.746 49.966c-3.125 3.124-3.13 8.194-.005 11.318 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.965 16.966 16.965c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.191-.005-11.318L69.687 27.348a7.986 7.986 0 00-5.663-2.346zM64.005 67.379c-2.05 0-4.102.78-5.666 2.344L35.722 92.34c-3.125 3.125-3.13 8.195-.006 11.32 3.118 3.117 8.192 3.121 11.32-.006L64 86.69l16.965 16.965c3.125 3.125 8.195 3.13 11.319.005 3.118-3.118 3.122-8.192-.005-11.319L69.663 69.723A7.986 7.986 0 0064 67.377z\"/></g></svg>"},"$:/core/images/fold-others-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold-others tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" y=\"56.031\" rx=\"8\"/><path d=\"M86.632 79.976c-2.05 0-4.102.78-5.666 2.345L64 99.286 47.034 82.321a7.986 7.986 0 00-5.662-2.346l.005.001c-2.05 0-4.102.78-5.666 2.345l-22.618 22.617c-3.124 3.125-3.129 8.195-.005 11.319 3.118 3.118 8.192 3.122 11.319-.005l16.966-16.966 16.965 16.966a7.986 7.986 0 005.663 2.346l-.005-.002c2.05 0 4.102-.78 5.666-2.344l16.965-16.966 16.966 16.966c3.125 3.124 8.194 3.129 11.319.005 3.118-3.118 3.122-8.192-.005-11.319L92.289 82.321a7.986 7.986 0 00-5.663-2.346zM86.7 48.024c-2.05 0-4.102-.78-5.666-2.345L64.07 28.714 47.103 45.679a7.986 7.986 0 01-5.663 2.346l.005-.001c-2.05 0-4.101-.78-5.666-2.345L13.162 23.062c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L41.44 28.714l16.966-16.966a7.986 7.986 0 015.662-2.346l-.005.002c2.05 0 4.102.78 5.666 2.344l16.966 16.966 16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L92.358 45.679a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"},"$:/core/images/folder":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-folder tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.694 128H8C3.58 128 0 124.414 0 119.996V48.004C0 43.584 3.584 40 7.999 40H16v-8c0-4.418 3.578-8 8-8h32a8 8 0 018 8v8h40.001c4.418 0 7.999 3.586 7.999 8.004V59.83l-8-.082v-7.749A4 4 0 0099.997 48H56V36c0-2.21-1.793-4-4.004-4H28.004A4 4 0 0024 36v12H12.003A4 4 0 008 52v64a4 4 0 004.003 4h46.76l-3.069 8z\"/><path d=\"M23.873 55.5h96.003c4.417 0 7.004 4.053 5.774 9.063l-13.344 54.374c-1.228 5.005-5.808 9.063-10.223 9.063H6.08c-4.417 0-7.003-4.053-5.774-9.063L13.65 64.563c1.228-5.005 5.808-9.063 10.223-9.063zm1.78 8.5h87.994c2.211 0 3.504 2.093 2.891 4.666l-11.12 46.668c-.614 2.577-2.902 4.666-5.115 4.666H12.31c-2.211 0-3.504-2.093-2.891-4.666l11.12-46.668C21.152 66.09 23.44 64 25.653 64z\"/></g></svg>"},"$:/core/images/full-screen-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-full-screen-button tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M0 8a8 8 0 018-8h32a8 8 0 110 16H16v24a8 8 0 11-16 0V8zM128 120a8 8 0 01-8 8H88a8 8 0 110-16h24V88a8 8 0 1116 0v32zM8 128a8 8 0 01-8-8V88a8 8 0 1116 0v24h24a8 8 0 110 16H8zM120 0a8 8 0 018 8v32a8 8 0 11-16 0V16H88a8 8 0 110-16h32z\"/></svg>"},"$:/core/images/github":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-github tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M63.938 1.607c-35.336 0-63.994 28.69-63.994 64.084 0 28.312 18.336 52.329 43.768 60.802 3.202.59 4.37-1.388 4.37-3.088 0-1.518-.056-5.55-.087-10.897-17.802 3.871-21.558-8.591-21.558-8.591-2.911-7.404-7.108-9.375-7.108-9.375-5.81-3.973.44-3.895.44-3.895 6.424.453 9.803 6.606 9.803 6.606 5.709 9.791 14.981 6.963 18.627 5.322.582-4.138 2.236-6.963 4.063-8.564-14.211-1.617-29.153-7.117-29.153-31.672 0-6.995 2.495-12.718 6.589-17.195-.66-1.621-2.856-8.14.629-16.96 0 0 5.37-1.722 17.597 6.57 5.104-1.424 10.58-2.132 16.022-2.16 5.438.028 10.91.736 16.022 2.16 12.22-8.292 17.582-6.57 17.582-6.57 3.493 8.82 1.297 15.339.64 16.96 4.102 4.477 6.578 10.2 6.578 17.195 0 24.618-14.966 30.035-29.22 31.62 2.295 1.98 4.342 5.89 4.342 11.87 0 8.564-.079 15.476-.079 17.576 0 1.715 1.155 3.71 4.4 3.084 25.413-8.493 43.733-32.494 43.733-60.798 0-35.394-28.657-64.084-64.006-64.084\"/></svg>"},"$:/core/images/gitter":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-gitter tc-image-button\" viewBox=\"0 0 18 25\"><path d=\"M15 5h2v10h-2zM10 5h2v20h-2zM5 5h2v20H5zM0 0h2v15H0z\"/></svg>"},"$:/core/images/globe":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-globe tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M72.811 37.128v2.554c0 2.196.978 6.881 0 8.832-1.466 2.928-4.65 3.54-6.394 5.867-1.182 1.577-4.618 10.601-3.69 12.92 3.969 9.922 11.534 3.187 17.962 9.293.864.821 2.887 2.273 3.296 3.296 3.29 8.223-7.576 15.009 3.757 26.3 1.245 1.24 3.813-3.817 4.079-4.614.852-2.563 6.725-5.45 9.088-7.053 2.02-1.37 4.873-2.667 6.328-4.745 2.27-3.244 1.48-7.514 3.098-10.745 2.139-4.274 3.828-9.635 5.998-13.966 3.898-7.781 4.721 2.093 5.067 2.439.358.357 1.011 0 1.517 0 .094 0 1.447.099 1.516 0 .65-.935-1.043-17.92-1.318-19.297-1.404-7.01-6.944-15.781-11.865-20.5-6.274-6.015-7.09-16.197-18.259-14.954-.204.022-5.084 10.148-7.777 13.512-3.728 4.657-2.47-4.153-6.526-4.153-.081 0-1.183-.103-1.253 0-.586.88-1.44 3.896-2.306 4.417-.265.16-1.722-.239-1.846 0-2.243 4.3 8.256 2.212 5.792 7.952-2.352 5.481-6.328-1.997-6.328 8.56M44.467 7.01c9.685 6.13.682 12.198 2.694 16.215 1.655 3.303 4.241 5.395 1.714 9.814-2.063 3.608-6.87 3.966-9.623 6.723-3.04 3.044-5.464 8.94-6.79 12.911-1.617 4.843 14.547 6.866 12.063 11.008-1.386 2.311-6.746 1.466-8.437.198-1.165-.873-3.593-.546-4.417-1.78-2.613-3.915-2.26-8.023-3.625-12.128-.938-2.822-6.313-2.12-7.844-.593-.523.522-.33 1.792-.33 2.505 0 5.285 7.12 3.316 7.12 6.46 0 14.636 3.927 6.534 11.14 11.336 10.036 6.683 7.844 7.303 14.946 14.404 3.673 3.673 7.741 3.686 9.425 9.294 1.602 5.331-9.327 5.339-11.716 7.448-1.123.991-2.813 4.146-4.219 4.615-1.792.598-3.234.496-4.944 1.78-2.427 1.82-3.9 4.932-4.02 4.81-2.148-2.147-3.52-15.479-3.89-18.257-.588-4.42-5.59-5.54-6.986-9.03-1.57-3.927 1.524-9.52-1.129-13.761-6.52-10.424-11.821-14.5-15.35-26.292-.942-3.148 3.342-6.529 4.877-8.833 1.877-2.816 2.662-5.854 4.746-8.635C22.147 24.19 40.855 9.461 43.857 8.635l.61-1.625z\"/><path d=\"M64 126c34.242 0 62-27.758 62-62 0-34.242-27.758-62-62-62C29.758 2 2 29.758 2 64c0 34.242 27.758 62 62 62zm0-6c30.928 0 56-25.072 56-56S94.928 8 64 8 8 33.072 8 64s25.072 56 56 56z\"/></g></svg>"},"$:/core/images/heading-1":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-1 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M14 30h13.25v30.104H61.7V30h13.25v75.684H61.7V71.552H27.25v34.132H14V30zm70.335 13.78c2.544 0 5.017-.212 7.42-.636 2.403-.424 4.576-1.13 6.52-2.12 1.942-.99 3.603-2.261 4.981-3.816 1.378-1.555 2.28-3.463 2.703-5.724h9.858v74.2h-13.25V53.32H84.335v-9.54z\"/></svg>"},"$:/core/images/heading-2":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-2 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm119.52 75.684H74.85c.07-6.148 1.555-11.519 4.452-16.112 2.897-4.593 6.855-8.586 11.872-11.978a133.725 133.725 0 017.526-5.141 59.6 59.6 0 007.208-5.353c2.19-1.908 3.993-3.975 5.406-6.201 1.413-2.226 2.155-4.788 2.226-7.685 0-1.343-.159-2.774-.477-4.293a11.357 11.357 0 00-1.855-4.24c-.919-1.307-2.19-2.403-3.816-3.286-1.625-.883-3.745-1.325-6.36-1.325-2.403 0-4.399.477-5.989 1.431-1.59.954-2.862 2.261-3.816 3.922-.954 1.66-1.66 3.622-2.12 5.883-.46 2.261-.724 4.7-.795 7.314H76.23c0-4.099.548-7.897 1.643-11.395 1.095-3.498 2.738-6.519 4.93-9.063 2.19-2.544 4.857-4.54 8.002-5.989C93.95 30.724 97.606 30 101.775 30c4.523 0 8.303.742 11.342 2.226 3.039 1.484 5.494 3.357 7.367 5.618 1.873 2.261 3.198 4.717 3.975 7.367.777 2.65 1.166 5.176 1.166 7.579 0 2.968-.46 5.653-1.378 8.056a25.942 25.942 0 01-3.71 6.625 37.5 37.5 0 01-5.3 5.565 79.468 79.468 0 01-6.148 4.77 165.627 165.627 0 01-6.36 4.24 94.28 94.28 0 00-5.883 4.028c-1.802 1.343-3.374 2.738-4.717 4.187-1.343 1.449-2.261 2.986-2.756 4.611h36.146v10.812z\"/></svg>"},"$:/core/images/heading-3":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-3 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm88.885 32.224c1.979.07 3.957-.07 5.936-.424 1.979-.353 3.745-.972 5.3-1.855a10.365 10.365 0 003.763-3.657c.954-1.555 1.431-3.463 1.431-5.724 0-3.18-1.078-5.724-3.233-7.632-2.155-1.908-4.929-2.862-8.32-2.862-2.12 0-3.958.424-5.513 1.272a11.318 11.318 0 00-3.869 3.445c-1.025 1.449-1.784 3.074-2.279 4.876a18.335 18.335 0 00-.636 5.565H75.381c.141-3.604.813-6.943 2.014-10.017 1.201-3.074 2.844-5.742 4.93-8.003 2.084-2.261 4.61-4.028 7.578-5.3C92.871 30.636 96.228 30 99.973 30a29.2 29.2 0 018.533 1.272c2.791.848 5.3 2.085 7.526 3.71s4.01 3.692 5.353 6.201c1.343 2.509 2.014 5.388 2.014 8.639 0 3.745-.848 7.014-2.544 9.805-1.696 2.791-4.346 4.823-7.95 6.095v.212c4.24.848 7.544 2.95 9.911 6.307s3.551 7.438 3.551 12.243c0 3.533-.707 6.696-2.12 9.487a21.538 21.538 0 01-5.724 7.102c-2.403 1.943-5.194 3.445-8.374 4.505-3.18 1.06-6.537 1.59-10.07 1.59-4.31 0-8.074-.618-11.289-1.855s-5.9-2.986-8.056-5.247c-2.155-2.261-3.798-4.982-4.929-8.162-1.13-3.18-1.731-6.713-1.802-10.6h12.084c-.141 4.523.972 8.286 3.34 11.289 2.366 3.003 5.917 4.505 10.652 4.505 4.028 0 7.402-1.148 10.123-3.445 2.72-2.297 4.081-5.565 4.081-9.805 0-2.897-.565-5.194-1.696-6.89a10.97 10.97 0 00-4.452-3.869c-1.837-.883-3.904-1.431-6.2-1.643a58.067 58.067 0 00-7.05-.212v-9.01z\"/></svg>"},"$:/core/images/heading-4":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-4 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8 30h13.25v30.104H55.7V30h13.25v75.684H55.7V71.552H21.25v34.132H8V30zm76.59 48.548h22.471V45.9h-.212L84.59 78.548zm43.46 9.54h-9.54v17.596H107.06V88.088h-31.8V76.11l31.8-44.626h11.448v47.064h9.54v9.54z\"/></svg>"},"$:/core/images/heading-5":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-5 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm77.755 1.484h38.372v10.812H92.765L88.95 61.164l.212.212c1.625-1.837 3.692-3.233 6.201-4.187 2.509-.954 5-1.431 7.473-1.431 3.675 0 6.96.618 9.858 1.855 2.897 1.237 5.335 2.968 7.314 5.194s3.48 4.858 4.505 7.897c1.025 3.039 1.537 6.325 1.537 9.858 0 2.968-.477 6.024-1.43 9.169a25.161 25.161 0 01-4.559 8.586c-2.085 2.58-4.752 4.7-8.003 6.36-3.25 1.66-7.137 2.491-11.66 2.491-3.604 0-6.943-.477-10.017-1.431-3.074-.954-5.777-2.385-8.109-4.293-2.332-1.908-4.187-4.258-5.565-7.049-1.378-2.791-2.138-6.06-2.279-9.805h12.084c.353 4.028 1.731 7.12 4.134 9.275 2.403 2.155 5.583 3.233 9.54 3.233 2.544 0 4.7-.424 6.466-1.272 1.767-.848 3.198-2.014 4.293-3.498 1.095-1.484 1.873-3.215 2.332-5.194.46-1.979.69-4.099.69-6.36 0-2.05-.284-4.01-.849-5.883-.565-1.873-1.413-3.516-2.544-4.929-1.13-1.413-2.597-2.544-4.399-3.392-1.802-.848-3.904-1.272-6.307-1.272-2.544 0-4.929.477-7.155 1.431-2.226.954-3.834 2.738-4.823 5.353H75.805l7.95-40.598z\"/></svg>"},"$:/core/images/heading-6":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-6 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm106.587 20.246c-.283-3.039-1.36-5.494-3.233-7.367-1.873-1.873-4.399-2.809-7.579-2.809-2.19 0-4.08.406-5.67 1.219a12.435 12.435 0 00-4.029 3.233c-1.095 1.343-1.979 2.88-2.65 4.611a37.696 37.696 0 00-1.643 5.459 46.08 46.08 0 00-.9 5.671 722.213 722.213 0 00-.478 5.247l.212.212c1.625-2.968 3.87-5.176 6.731-6.625 2.862-1.449 5.954-2.173 9.275-2.173 3.675 0 6.96.636 9.858 1.908 2.897 1.272 5.353 3.021 7.367 5.247 2.014 2.226 3.551 4.858 4.611 7.897 1.06 3.039 1.59 6.325 1.59 9.858 0 3.604-.583 6.943-1.749 10.017-1.166 3.074-2.844 5.76-5.035 8.056-2.19 2.297-4.805 4.081-7.844 5.353-3.039 1.272-6.395 1.908-10.07 1.908-5.441 0-9.91-1.007-13.409-3.021-3.498-2.014-6.254-4.77-8.268-8.268-2.014-3.498-3.41-7.597-4.187-12.296-.777-4.7-1.166-9.77-1.166-15.211 0-4.452.477-8.94 1.431-13.462.954-4.523 2.526-8.639 4.717-12.349 2.19-3.71 5.07-6.731 8.64-9.063C92.676 31.166 97.075 30 102.304 30c2.968 0 5.76.495 8.374 1.484 2.615.99 4.93 2.367 6.943 4.134 2.014 1.767 3.657 3.887 4.93 6.36 1.271 2.473 1.978 5.23 2.12 8.268h-12.085zm-11.66 46.852c2.19 0 4.099-.442 5.724-1.325a12.869 12.869 0 004.081-3.445c1.095-1.413 1.908-3.056 2.438-4.929.53-1.873.795-3.798.795-5.777s-.265-3.887-.795-5.724c-.53-1.837-1.343-3.445-2.438-4.823-1.095-1.378-2.456-2.491-4.08-3.339-1.626-.848-3.534-1.272-5.725-1.272-2.19 0-4.116.406-5.777 1.219-1.66.813-3.056 1.908-4.187 3.286-1.13 1.378-1.979 2.986-2.544 4.823-.565 1.837-.848 3.78-.848 5.83 0 2.05.283 3.993.848 5.83.565 1.837 1.413 3.48 2.544 4.929a12.39 12.39 0 004.187 3.445c1.66.848 3.586 1.272 5.777 1.272z\"/></svg>"},"$:/core/images/help":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-help tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M36.055 111.441c-5.24 4.396-15.168 7.362-26.555 7.362-1.635 0-3.24-.06-4.806-.179 7.919-2.64 14.062-8.6 16.367-16.014C8.747 92.845 1.05 78.936 1.05 63.5c0-29.547 28.206-53.5 63-53.5s63 23.953 63 53.5-28.206 53.5-63 53.5c-10.055 0-19.56-2-27.994-5.559zm35.35-33.843a536.471 536.471 0 00.018-4.682 199.02 199.02 0 00-.023-3.042c.008-1.357.595-2.087 3.727-4.235.112-.077 1.085-.74 1.386-.948 3.093-2.133 5.022-3.786 6.762-6.187 2.34-3.228 3.558-7.077 3.558-11.649 0-13.292-9.86-21.952-21.455-21.952-11.103 0-22.499 9.609-24.066 22.295a6.023 6.023 0 1011.956 1.477c.806-6.527 6.972-11.726 12.11-11.726 5.265 0 9.408 3.64 9.408 9.906 0 3.634-1.1 5.153-5.111 7.919l-1.362.93c-2.682 1.84-4.227 3.1-5.7 4.931-2.109 2.62-3.242 5.717-3.258 9.314.013.892.02 1.86.022 2.981a470.766 470.766 0 01-.022 4.943 6.023 6.023 0 1012.046.12l.003-.395zm-6.027 24.499a7.529 7.529 0 100-15.058 7.529 7.529 0 000 15.058z\"/></svg>"},"$:/core/images/home-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-home-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M112.985 119.502c.01-.165.015-.331.015-.499V67.568c3.137 2.948 8.076 2.884 11.134-.174a7.999 7.999 0 00-.002-11.316L70.396 2.343A7.978 7.978 0 0064.734 0a7.957 7.957 0 00-5.656 2.343L33 28.42V8.007C33 3.585 29.41 0 25 0c-4.418 0-8 3.59-8 8.007V44.42L5.342 56.078c-3.125 3.125-3.12 8.198-.002 11.316a7.999 7.999 0 0011.316-.003l.344-.343v52.945a8.11 8.11 0 000 .007c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8a8.11 8.11 0 00-.015-.498zM97 112V51.574L64.737 19.31 33 51.048V112h64z\"/></svg>"},"$:/core/images/import-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-import-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M114.832 60.436s3.235-3.27 6.921.417c3.686 3.686.231 7.14.231 7.14l-42.153 42.92s-30.765 32.367-58.798 4.333C-7 87.213 24.59 55.623 24.59 55.623L67.363 12.85s22.725-24.6 43.587-3.738c20.862 20.862-3.96 43.09-3.96 43.09l-35.04 35.04S49.903 112.546 36.426 99.07c-13.476-13.477 11.83-35.523 11.83-35.523l35.04-35.04s3.902-3.902 7.78-.023c3.879 3.878.118 7.921.118 7.921l-35.04 35.04s-13.212 13.212-8.872 17.551c4.34 4.34 16.77-9.653 16.77-9.653l35.04-35.04s16.668-14.598 3.966-27.3c-13.893-13.892-27.565 3.702-27.565 3.702l-42.91 42.91s-23.698 23.698-3.658 43.738 43.012-4.385 43.012-4.385l42.895-42.533z\"/></svg>"},"$:/core/images/info-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-info-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\" transform=\"translate(.05)\"><path d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48z\"/><circle cx=\"64\" cy=\"32\" r=\"8\"/><rect width=\"16\" height=\"56\" x=\"56\" y=\"48\" rx=\"8\"/></g></svg>"},"$:/core/images/italic":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-italic tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M66.711 0h22.41L62.408 128H40z\"/></svg>"},"$:/core/images/left-arrow":{"created":"20150315234410875","modified":"20150315235324760","tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-left-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M0 64.177c0-2.026.771-4.054 2.317-5.6l55.98-55.98a7.92 7.92 0 0111.195.001c3.086 3.085 3.092 8.104.001 11.195L19.111 64.175l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.086-8.105 3.092-11.196.001l-55.98-55.98A7.892 7.892 0 010 64.177z\"/></svg>"},"$:/core/images/line-width":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-line-width tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M16 18h96a2 2 0 000-4H16a2 2 0 100 4zm0 17h96a4 4 0 100-8H16a4 4 0 100 8zm0 21h96a6 6 0 000-12H16a6 6 0 100 12zm0 29h96c5.523 0 10-4.477 10-10s-4.477-10-10-10H16c-5.523 0-10 4.477-10 10s4.477 10 10 10zm0 43h96c8.837 0 16-7.163 16-16s-7.163-16-16-16H16c-8.837 0-16 7.163-16 16s7.163 16 16 16z\"/></svg>"},"$:/core/images/link":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-link tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M42.263 69.38a31.919 31.919 0 006.841 10.13c12.5 12.5 32.758 12.496 45.255 0l22.627-22.628c12.502-12.501 12.497-32.758 0-45.255-12.5-12.5-32.758-12.496-45.254 0L49.104 34.255a32.333 32.333 0 00-2.666 3.019 36.156 36.156 0 0121.94.334l14.663-14.663c6.25-6.25 16.382-6.254 22.632-.004 6.248 6.249 6.254 16.373-.004 22.631l-22.62 22.62c-6.25 6.25-16.381 6.254-22.631.004a15.93 15.93 0 01-4.428-8.433 11.948 11.948 0 00-7.59 3.48l-6.137 6.137z\"/><path d=\"M86.35 59.234a31.919 31.919 0 00-6.84-10.13c-12.5-12.5-32.758-12.497-45.255 0L11.627 71.732c-12.501 12.5-12.496 32.758 0 45.254 12.5 12.5 32.758 12.497 45.255 0L79.51 94.36a32.333 32.333 0 002.665-3.02 36.156 36.156 0 01-21.94-.333l-14.663 14.663c-6.25 6.25-16.381 6.253-22.63.004-6.25-6.249-6.255-16.374.003-22.632l22.62-22.62c6.25-6.25 16.381-6.253 22.631-.003a15.93 15.93 0 014.428 8.432 11.948 11.948 0 007.59-3.48l6.137-6.136z\"/></g></svg>"},"$:/core/images/linkify":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-linkify-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M17.031 31.919H9.048V96.85h7.983v6.92H0V25h17.031v6.919zm24.66 0h-7.983V96.85h7.983v6.92H24.66V25h17.03v6.919zM67.77 56.422l11.975-3.903 2.306 7.096-12.063 3.903 7.628 10.379-6.12 4.435-7.63-10.467-7.45 10.2-5.943-4.523L58.1 63.518 45.95 59.35l2.306-7.096 12.064 4.17V43.825h7.45v12.596zM86.31 96.85h7.982V31.92H86.31V25h17.031v78.77H86.31v-6.92zm24.659 0h7.983V31.92h-7.983V25H128v78.77h-17.031v-6.92z\"/></svg>"},"$:/core/images/list-bullet":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list-bullet tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M11.636 40.273c6.427 0 11.637-5.21 11.637-11.637C23.273 22.21 18.063 17 11.636 17 5.21 17 0 22.21 0 28.636c0 6.427 5.21 11.637 11.636 11.637zm0 34.909c6.427 0 11.637-5.21 11.637-11.637 0-6.426-5.21-11.636-11.637-11.636C5.21 51.91 0 57.12 0 63.545c0 6.427 5.21 11.637 11.636 11.637zm0 34.909c6.427 0 11.637-5.21 11.637-11.636 0-6.427-5.21-11.637-11.637-11.637C5.21 86.818 0 92.028 0 98.455c0 6.426 5.21 11.636 11.636 11.636zM34.91 22.818H128v11.637H34.91V22.818zm0 34.91H128v11.636H34.91V57.727zm0 34.908H128v11.637H34.91V92.636z\"/></svg>"},"$:/core/images/list-number":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list-number tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M33.84 22.356H128v11.77H33.84v-11.77zm0 35.31H128v11.77H33.84v-11.77zm0 35.311H128v11.77H33.84v-11.77zM.38 42.631v-2.223h.998c.826 0 1.445-.14 1.858-.42.413-.28.619-.948.619-2.002V22.769c0-1.442-.193-2.336-.58-2.683-.385-.347-1.477-.52-3.275-.52v-2.143c3.502-.147 6.252-.955 8.25-2.423h2.117v22.865c0 .921.15 1.575.449 1.963.3.387.949.58 1.948.58h.998v2.223H.38zm-.3 35.356v-1.902c7.19-6.554 10.786-12.58 10.786-18.08 0-1.562-.326-2.81-.979-3.744-.652-.934-1.524-1.402-2.616-1.402-.893 0-1.655.317-2.287.952-.633.634-.95 1.364-.95 2.192 0 .974.247 1.829.74 2.563.106.16.16.28.16.36 0 .147-.16.28-.48.4-.213.08-.752.308-1.618.681-.839.374-1.358.561-1.558.561-.24 0-.512-.37-.819-1.111A6.2 6.2 0 010 57.064c0-1.949.849-3.544 2.547-4.785 1.698-1.242 3.798-1.862 6.302-1.862 2.463 0 4.53.67 6.202 2.012 1.67 1.341 2.506 3.093 2.506 5.256a8.644 8.644 0 01-.849 3.724c-.566 1.201-1.92 3.053-4.064 5.556a165.471 165.471 0 01-6.272 6.938h11.445l-1.019 5.726h-2.117c.08-.28.12-.534.12-.76 0-.388-.1-.631-.3-.731-.2-.1-.599-.15-1.198-.15H.08zm12.124 19.207c1.745.04 3.236.637 4.474 1.792 1.239 1.154 1.858 2.773 1.858 4.855 0 2.99-1.132 5.393-3.396 7.208-2.263 1.815-5 2.723-8.209 2.723-2.01 0-3.669-.384-4.974-1.151C.652 111.853 0 110.849 0 109.607c0-.774.27-1.398.809-1.872.54-.474 1.128-.71 1.768-.71.639 0 1.162.2 1.568.6.406.4.782 1.055 1.128 1.962.466 1.268 1.239 1.902 2.317 1.902 1.265 0 2.287-.477 3.066-1.431.78-.955 1.169-2.686 1.169-5.196 0-1.709-.12-3.023-.36-3.944-.24-.921-.792-1.382-1.658-1.382-.586 0-1.185.307-1.797.921-.493.494-.932.741-1.319.741-.333 0-.602-.147-.809-.44-.206-.294-.31-.574-.31-.841 0-.32.104-.594.31-.821.207-.227.69-.594 1.449-1.102 2.876-1.922 4.314-4.017 4.314-6.287 0-1.188-.306-2.092-.919-2.713a3.001 3.001 0 00-2.217-.93c-.799 0-1.525.263-2.177.79-.653.528-.979 1.158-.979 1.892 0 .641.253 1.235.76 1.782.172.2.259.367.259.5 0 .121-.57.428-1.708.922-1.139.494-1.854.74-2.147.74-.413 0-.75-.333-1.009-1-.26-.668-.39-1.282-.39-1.842 0-1.749.93-3.224 2.787-4.425 1.858-1.202 3.965-1.802 6.322-1.802 2.064 0 3.851.447 5.363 1.341 1.511.895 2.267 2.116 2.267 3.664 0 1.362-.57 2.623-1.708 3.784a13.387 13.387 0 01-3.945 2.784z\"/></svg>"},"$:/core/images/list":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M87.748 128H23.999c-4.418 0-7.999-3.59-7.999-8.007V8.007C16 3.585 19.588 0 24 0h80c4.419 0 8 3.59 8 8.007V104H91.25c-.965 0-1.84.392-2.473 1.025a3.476 3.476 0 00-1.029 2.476V128zm8-.12l15.88-15.88h-15.88v15.88zM40 15.508A3.502 3.502 0 0143.5 12h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 20h-55a3.498 3.498 0 01-3.5-3.509v-.982zM32 22a6 6 0 100-12 6 6 0 000 12zm8 9.509A3.502 3.502 0 0143.5 28h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 36h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 44h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 52h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 60h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 68h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 76h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 84h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 92h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 100h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.505 3.505 0 0143.497 108h33.006A3.497 3.497 0 0180 111.509v.982A3.505 3.505 0 0176.503 116H43.497A3.497 3.497 0 0140 112.491v-.982zM32 38a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12z\"/></svg>"},"$:/core/images/locked-padlock":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-locked-padlock tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M96.472 64H105v32.01C105 113.674 90.674 128 73.001 128H56C38.318 128 24 113.677 24 96.01V64h8c.003-15.723.303-47.731 32.16-47.731 31.794 0 32.305 32.057 32.312 47.731zm-15.897 0H48.44c.002-16.287.142-32 15.719-32 15.684 0 16.977 16.136 16.415 32zM67.732 92.364A8.503 8.503 0 0064.5 76a8.5 8.5 0 00-3.498 16.25l-5.095 22.77H72.8l-5.07-22.656z\"/></svg>"},"$:/core/images/mail":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mail tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M122.827 104.894a7.986 7.986 0 01-2.834.516H8.007c-.812 0-1.597-.12-2.335-.345l34.163-34.163 20.842 20.842a3.998 3.998 0 003.418 1.134 4.003 4.003 0 003.395-1.134L88.594 70.64c.075.09.155.176.24.26l33.993 33.994zm5.076-6.237c.064-.406.097-.823.097-1.247v-64c0-.669-.082-1.318-.237-1.94L94.23 65.006c.09.075.177.154.261.239l33.413 33.413zm-127.698.56A8.023 8.023 0 010 97.41v-64c0-.716.094-1.41.271-2.071l33.907 33.906L.205 99.218zM5.93 25.684a8.012 8.012 0 012.078-.273h111.986c.766 0 1.507.108 2.209.308L64.083 83.837 5.93 25.683z\"/></svg>"},"$:/core/images/menu-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-menu-button tc-image-button\" viewBox=\"0 0 128 128\"><rect width=\"128\" height=\"16\" y=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"56\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"96\" rx=\"8\"/></svg>"},"$:/core/images/minus-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-minus-button tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M64 0c35.346 0 64 28.654 64 64 0 35.346-28.654 64-64 64-35.346 0-64-28.654-64-64C0 28.654 28.654 0 64 0zm.332 16c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\"/><rect width=\"80\" height=\"16\" x=\"24\" y=\"56\" rx=\"8\"/></svg>"},"$:/core/images/mono-block":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mono-block tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M23.965 32.967h.357c.755 0 1.328.192 1.72.577.39.384.586.947.586 1.688 0 .824-.206 1.418-.618 1.782-.413.363-1.094.545-2.045.545h-6.31c-.965 0-1.65-.178-2.056-.535-.405-.356-.608-.954-.608-1.792 0-.811.203-1.391.608-1.74.406-.35 1.09-.525 2.055-.525h.734l-.86-2.453H8.471l-.902 2.453h.734c.95 0 1.632.178 2.044.535.413.356.619.933.619 1.73 0 .824-.206 1.418-.619 1.782-.412.363-1.094.545-2.044.545h-5.41c-.964 0-1.649-.182-2.054-.545-.406-.364-.608-.958-.608-1.782 0-.741.195-1.304.587-1.688.391-.385.964-.577 1.719-.577h.356l5.62-15.641H6.835c-.95 0-1.632-.182-2.044-.546-.412-.363-.619-.95-.619-1.76 0-.825.207-1.42.619-1.783.412-.363 1.094-.545 2.044-.545h7.863c1.244 0 2.118.67 2.62 2.013v.063l6.647 18.2zM12.98 17.326l-3.04 8.848h6.08l-3.04-8.848zm22.402 9.372v6.395h3.145c2.223 0 3.788-.245 4.697-.734.908-.49 1.362-1.307 1.362-2.453 0-1.16-.433-1.985-1.3-2.474-.866-.49-2.383-.734-4.55-.734h-3.354zm10.693-2.327c1.524.559 2.642 1.324 3.355 2.295.713.972 1.07 2.212 1.07 3.722 0 1.272-.308 2.432-.923 3.48-.615 1.049-1.496 1.909-2.642 2.58a7.499 7.499 0 01-2.254.849c-.832.174-2.01.262-3.533.262H30.202c-.922 0-1.583-.182-1.981-.545-.399-.364-.598-.958-.598-1.782 0-.741.189-1.304.566-1.688.378-.385.93-.577 1.657-.577h.356V17.326h-.356c-.727 0-1.28-.196-1.657-.587-.377-.392-.566-.965-.566-1.72 0-.81.203-1.401.608-1.771.406-.37 1.062-.556 1.971-.556h9.645c2.95 0 5.19.573 6.72 1.72 1.53 1.145 2.296 2.823 2.296 5.031 0 1.09-.234 2.052-.703 2.883-.468.832-1.163 1.513-2.086 2.045zM35.381 17.2v5.284h2.83c1.72 0 2.932-.203 3.638-.609.706-.405 1.06-1.09 1.06-2.054 0-.909-.319-1.573-.955-1.992-.636-.42-1.667-.63-3.093-.63h-3.48zm35.863-3.816c.28-.503.566-.86.86-1.07.293-.21.664-.314 1.111-.314.685 0 1.17.182 1.457.545.287.364.43.986.43 1.866l.042 5.452c0 .964-.157 1.614-.472 1.95-.314.335-.884.503-1.709.503-.587 0-1.037-.14-1.352-.42-.314-.28-.584-.796-.807-1.551-.364-1.328-.944-2.282-1.74-2.862-.797-.58-1.901-.87-3.313-.87-2.153 0-3.802.727-4.948 2.18-1.147 1.454-1.72 3.558-1.72 6.311 0 2.74.58 4.844 1.74 6.311 1.16 1.468 2.817 2.202 4.97 2.202 1.467 0 3.085-.49 4.854-1.468 1.768-.978 2.883-1.467 3.344-1.467.545 0 1.003.23 1.373.692.37.46.556 1.034.556 1.719 0 1.23-1.084 2.39-3.25 3.48-2.167 1.09-4.606 1.636-7.318 1.636-3.662 0-6.625-1.21-8.89-3.627-2.264-2.419-3.396-5.578-3.396-9.478 0-3.76 1.146-6.884 3.438-9.372 2.293-2.488 5.2-3.732 8.723-3.732.992 0 1.97.112 2.935.335.964.224 1.992.574 3.082 1.049zm10.22 19.583V17.326h-.356c-.755 0-1.328-.196-1.72-.587-.39-.392-.586-.965-.586-1.72 0-.81.21-1.401.629-1.771.42-.37 1.097-.556 2.034-.556h5.178c2.922 0 5.06.126 6.416.377 1.356.252 2.51.671 3.46 1.258 1.691 1.007 2.988 2.443 3.89 4.31.9 1.865 1.352 4.021 1.352 6.467 0 2.586-.514 4.847-1.541 6.783-1.028 1.936-2.485 3.4-4.372 4.393-.853.447-1.852.772-2.998.975-1.147.203-2.852.304-5.116.304h-6.269c-.965 0-1.65-.178-2.055-.535-.406-.356-.608-.954-.608-1.792 0-.741.195-1.304.587-1.688.391-.385.964-.577 1.72-.577h.356zm5.41-15.725v15.725h1.195c2.642 0 4.592-.646 5.85-1.94 1.258-1.292 1.887-3.28 1.887-5.965 0-2.641-.64-4.612-1.918-5.912-1.28-1.3-3.205-1.95-5.777-1.95-.335 0-.59.003-.765.01a7.992 7.992 0 00-.472.032zm35.067-.126h-9.75v5.368h3.69v-.252c0-.797.175-1.39.524-1.782.35-.392.88-.587 1.594-.587.629 0 1.142.178 1.54.534.4.357.598.808.598 1.353 0 .028.007.118.021.272.014.154.021.308.021.462v4.34c0 .936-.167 1.607-.503 2.013-.335.405-.88.608-1.635.608-.713 0-1.251-.19-1.615-.567-.363-.377-.545-.936-.545-1.677v-.377h-3.69v6.269h9.75v-2.495c0-.937.178-1.608.534-2.013.357-.405.94-.608 1.75-.608.798 0 1.367.2 1.71.597.342.399.513 1.073.513 2.024v5.074c0 .755-.146 1.258-.44 1.51-.293.251-.873.377-1.74.377h-17.172c-.923 0-1.583-.182-1.982-.545-.398-.364-.597-.958-.597-1.782 0-.741.189-1.304.566-1.688.377-.385.93-.577 1.656-.577h.357V17.326h-.357c-.712 0-1.261-.2-1.646-.598-.384-.398-.576-.968-.576-1.709 0-.81.203-1.401.608-1.771.405-.37 1.062-.556 1.97-.556h17.173c.853 0 1.43.13 1.73.388.3.258.45.772.45 1.54v4.698c0 .95-.174 1.631-.524 2.044-.35.412-.915.618-1.698.618-.81 0-1.394-.21-1.75-.629-.357-.419-.535-1.097-.535-2.033v-2.202zM19.77 47.641c.267-.504.55-.86.85-1.07.3-.21.675-.314 1.122-.314.685 0 1.17.181 1.457.545.287.363.43.985.43 1.866l.042 5.451c0 .965-.157 1.615-.472 1.95-.314.336-.891.504-1.73.504-.587 0-1.045-.144-1.373-.43-.329-.287-.598-.8-.807-1.541-.378-1.342-.958-2.3-1.74-2.873-.783-.573-1.88-.86-3.292-.86-2.153 0-3.799.727-4.938 2.181-1.14 1.454-1.709 3.557-1.709 6.311s.598 4.882 1.793 6.385C10.599 67.248 12.294 68 14.488 68c.503 0 1.077-.06 1.72-.179a23.809 23.809 0 002.264-.555v-3.313h-2.37c-.95 0-1.624-.175-2.023-.524-.398-.35-.597-.93-.597-1.74 0-.84.199-1.437.597-1.793.399-.357 1.073-.535 2.024-.535h7.569c.978 0 1.667.175 2.065.524.398.35.598.937.598 1.762 0 .74-.2 1.31-.598 1.708-.398.399-.975.598-1.73.598h-.335v5.242c0 .447-.05.758-.147.933-.098.174-.293.353-.587.534-.797.476-2.062.895-3.795 1.258a25.576 25.576 0 01-5.263.546c-3.662 0-6.625-1.21-8.89-3.628-2.264-2.418-3.397-5.577-3.397-9.477 0-3.76 1.147-6.884 3.44-9.372 2.292-2.488 5.199-3.732 8.721-3.732.979 0 1.954.112 2.925.335.972.224 2.003.573 3.093 1.049zm15.84 3.941v4.823h6.857v-4.823h-.336c-.754 0-1.331-.195-1.73-.587-.398-.391-.597-.964-.597-1.719 0-.825.206-1.419.619-1.782.412-.364 1.093-.545 2.044-.545h5.41c.95 0 1.624.181 2.023.545.398.363.597.957.597 1.782 0 .755-.192 1.328-.576 1.72-.385.39-.947.586-1.688.586h-.357v15.642h.357c.755 0 1.328.192 1.719.576.391.385.587.947.587 1.688 0 .825-.203 1.419-.608 1.782-.405.364-1.09.546-2.055.546h-5.41c-.964 0-1.649-.179-2.054-.535-.405-.357-.608-.954-.608-1.793 0-.74.2-1.303.598-1.688.398-.384.975-.576 1.73-.576h.335v-6.186h-6.856v6.186h.335c.755 0 1.331.192 1.73.576.398.385.597.947.597 1.688 0 .825-.206 1.419-.618 1.782-.412.364-1.094.546-2.044.546h-5.41c-.964 0-1.65-.179-2.055-.535-.405-.357-.608-.954-.608-1.793 0-.74.196-1.303.587-1.688.392-.384.965-.576 1.72-.576h.356V51.582h-.356c-.741 0-1.304-.195-1.688-.587-.385-.391-.577-.964-.577-1.719 0-.825.2-1.419.598-1.782.398-.364 1.073-.545 2.023-.545h5.41c.936 0 1.614.181 2.033.545.42.363.63.957.63 1.782 0 .755-.2 1.328-.598 1.72-.399.39-.975.586-1.73.586h-.335zm31.754 0v15.642h3.523c.95 0 1.632.178 2.044.534.412.357.618.933.618 1.73 0 .811-.21 1.402-.629 1.772-.419.37-1.097.556-2.033.556H58.433c-.95 0-1.632-.182-2.044-.546-.412-.363-.619-.957-.619-1.782 0-.81.203-1.39.608-1.74.406-.35 1.09-.524 2.055-.524h3.523V51.582h-3.523c-.95 0-1.632-.181-2.044-.545-.412-.363-.619-.95-.619-1.761 0-.825.203-1.412.608-1.761.406-.35 1.09-.524 2.055-.524h12.455c.992 0 1.684.174 2.075.524.392.35.587.936.587 1.761 0 .81-.202 1.398-.608 1.761-.405.364-1.09.545-2.054.545h-3.523zm30.496 0v11.994c0 1.873-.122 3.228-.367 4.067a5.876 5.876 0 01-1.227 2.244c-.74.852-1.768 1.495-3.082 1.929-1.314.433-2.893.65-4.738.65-1.3 0-2.555-.126-3.764-.378a16.843 16.843 0 01-3.491-1.132c-.615-.28-1.017-.643-1.206-1.09-.188-.448-.283-1.175-.283-2.18v-4.32c0-1.202.175-2.04.525-2.516.349-.475.957-.713 1.824-.713 1.244 0 1.929.915 2.054 2.747.014.321.035.566.063.733.168 1.622.545 2.73 1.133 3.324.587.594 1.523.89 2.81.89 1.593 0 2.714-.422 3.364-1.268.65-.845.975-2.386.975-4.623V51.582H88.93c-.95 0-1.632-.181-2.044-.545-.413-.363-.619-.95-.619-1.761 0-.825.2-1.412.598-1.761.398-.35 1.086-.524 2.065-.524h10.693c.979 0 1.667.174 2.065.524.399.35.598.936.598 1.761 0 .81-.206 1.398-.619 1.761-.412.364-1.093.545-2.044.545h-1.761zm14.644 0v6.353l6.48-6.478c-.728-.084-1.238-.29-1.531-.619-.294-.328-.44-.85-.44-1.562 0-.825.198-1.419.597-1.782.398-.364 1.073-.545 2.023-.545h5.137c.95 0 1.625.181 2.023.545.399.363.598.957.598 1.782 0 .769-.2 1.345-.598 1.73-.398.384-.982.576-1.75.576h-.483l-6.101 6.06c1.132.839 2.167 1.94 3.103 3.302.937 1.363 2.034 3.456 3.292 6.28h.692c.825 0 1.44.188 1.845.566.405.377.608.943.608 1.698 0 .825-.206 1.419-.619 1.782-.412.364-1.093.546-2.044.546h-2.579c-1.132 0-2.048-.762-2.746-2.286-.126-.28-.224-.503-.294-.67-.923-1.958-1.768-3.467-2.537-4.53a16.616 16.616 0 00-2.705-2.914l-1.97 1.887v3.92h.335c.755 0 1.331.193 1.73.577.398.385.597.947.597 1.688 0 .825-.206 1.419-.618 1.782-.413.364-1.094.546-2.045.546h-5.41c-.964 0-1.649-.179-2.054-.535-.405-.357-.608-.954-.608-1.793 0-.74.196-1.303.587-1.688.391-.384.965-.576 1.72-.576h.356V51.582h-.357c-.74 0-1.303-.195-1.687-.587-.385-.391-.577-.964-.577-1.719 0-.825.2-1.419.598-1.782.398-.364 1.072-.545 2.023-.545h5.41c.936 0 1.614.181 2.033.545.42.363.63.957.63 1.782 0 .755-.2 1.328-.598 1.72-.399.39-.975.586-1.73.586h-.336zM13.44 96.326l4.005-11.889c.251-.782.6-1.352 1.048-1.709.447-.356 1.041-.534 1.782-.534h3.271c.95 0 1.632.182 2.044.545.413.363.619.957.619 1.782 0 .755-.2 1.328-.598 1.72-.398.39-.975.587-1.73.587h-.335l.587 15.641h.357c.754 0 1.32.192 1.698.577.377.384.566.947.566 1.687 0 .825-.2 1.42-.598 1.783-.398.363-1.072.545-2.023.545h-4.718c-.95 0-1.624-.178-2.023-.535-.398-.356-.597-.954-.597-1.793 0-.74.192-1.303.576-1.687.385-.385.954-.577 1.709-.577h.335l-.293-12.79-3.061 9.52c-.224.712-.542 1.226-.954 1.54-.413.315-.982.472-1.709.472-.727 0-1.303-.157-1.73-.472-.426-.314-.751-.828-.975-1.54l-3.04-9.52-.294 12.79h.336c.755 0 1.324.192 1.709.577.384.384.576.947.576 1.687 0 .825-.202 1.42-.608 1.783-.405.363-1.076.545-2.013.545H2.621c-.937 0-1.608-.182-2.013-.545-.405-.364-.608-.958-.608-1.783 0-.74.192-1.303.577-1.687.384-.385.954-.577 1.708-.577h.336l.608-15.641h-.336c-.754 0-1.331-.196-1.73-.588-.398-.39-.597-.964-.597-1.719 0-.825.206-1.419.619-1.782.412-.363 1.093-.545 2.044-.545h3.27c.728 0 1.311.175 1.752.524.44.35.8.923 1.08 1.72l4.109 11.888zm30.454 2.054V86.828H42.74c-.922 0-1.583-.182-1.981-.546-.398-.363-.598-.95-.598-1.76 0-.812.2-1.402.598-1.773.398-.37 1.059-.555 1.981-.555h5.955c.909 0 1.566.185 1.97.555.406.37.609.961.609 1.772 0 .741-.192 1.31-.577 1.709-.384.398-.933.598-1.646.598h-.356v19.038c0 .657-.07 1.069-.21 1.237-.14.167-.454.251-.943.251h-2.097c-.67 0-1.143-.07-1.415-.21-.273-.14-.507-.384-.703-.733l-8.722-15.327v11.385h1.216c.909 0 1.559.175 1.95.524.392.35.587.93.587 1.74 0 .825-.199 1.42-.597 1.783-.399.363-1.045.545-1.94.545h-6.017c-.909 0-1.566-.182-1.971-.545-.406-.364-.608-.958-.608-1.783 0-.74.188-1.303.566-1.687.377-.385.936-.577 1.677-.577h.336V86.828h-.336c-.713 0-1.265-.2-1.656-.598-.392-.398-.587-.968-.587-1.709 0-.81.206-1.401.618-1.772.413-.37 1.066-.555 1.96-.555h3.44c.824 0 1.383.108 1.677.325.293.216.622.653.985 1.31l7.989 14.551zM64.66 86.366c-1.803 0-3.218.727-4.245 2.18-1.028 1.455-1.541 3.474-1.541 6.06 0 2.586.517 4.613 1.551 6.08 1.034 1.468 2.446 2.202 4.235 2.202 1.804 0 3.222-.73 4.257-2.19 1.034-1.461 1.551-3.492 1.551-6.092 0-2.586-.513-4.605-1.54-6.06-1.028-1.453-2.45-2.18-4.268-2.18zm0-4.864c3.44 0 6.27 1.23 8.492 3.69 2.223 2.46 3.334 5.598 3.334 9.414 0 3.844-1.104 6.99-3.313 9.436-2.208 2.446-5.046 3.669-8.513 3.669-3.424 0-6.255-1.234-8.491-3.701-2.237-2.467-3.355-5.602-3.355-9.404 0-3.83 1.108-6.971 3.323-9.424 2.216-2.454 5.057-3.68 8.523-3.68zM87.461 98.17v4.298h2.16c.908 0 1.555.175 1.94.524.384.35.576.93.576 1.74 0 .825-.196 1.42-.587 1.783-.392.363-1.035.545-1.93.545h-7.254c-.922 0-1.583-.182-1.981-.545-.399-.364-.598-.958-.598-1.783 0-.74.189-1.303.566-1.687.378-.385.93-.577 1.657-.577h.356V86.828h-.356c-.713 0-1.262-.2-1.646-.598-.385-.398-.577-.968-.577-1.709 0-.81.203-1.401.608-1.772.406-.37 1.063-.555 1.971-.555h8.66c3.424 0 6.014.657 7.768 1.97 1.754 1.315 2.631 3.25 2.631 5.809 0 2.697-.873 4.738-2.62 6.122-1.748 1.384-4.34 2.076-7.78 2.076h-3.564zm0-11.343v6.625h2.977c1.65 0 2.89-.28 3.722-.839.832-.559 1.248-1.397 1.248-2.516 0-1.048-.43-1.855-1.29-2.421-.86-.566-2.086-.85-3.68-.85h-2.977zm27.267 20.568l-1.636 1.636a12.37 12.37 0 011.772-.44c.58-.098 1.15-.147 1.709-.147 1.104 0 2.268.164 3.491.492 1.223.329 1.967.493 2.233.493.447 0 1.03-.15 1.75-.45.72-.301 1.206-.452 1.458-.452.517 0 .947.2 1.29.598.342.398.513.898.513 1.5 0 .796-.472 1.474-1.415 2.033-.944.56-2.1.839-3.47.839-.937 0-2.139-.22-3.607-.66-1.467-.441-2.53-.661-3.187-.661-.992 0-2.11.272-3.354.817-1.244.546-2.013.818-2.307.818a2.14 2.14 0 01-1.53-.597c-.42-.399-.63-.878-.63-1.437 0-.391.134-.807.4-1.247.265-.44.733-1.01 1.404-1.709l2.118-2.139c-2.335-.852-4.194-2.386-5.578-4.602-1.384-2.215-2.075-4.763-2.075-7.642 0-3.802 1.104-6.909 3.312-9.32 2.209-2.411 5.053-3.617 8.534-3.617 3.467 0 6.304 1.209 8.513 3.627 2.208 2.418 3.312 5.522 3.312 9.31 0 3.774-1.097 6.884-3.291 9.33-2.195 2.446-4.977 3.67-8.345 3.67a22.5 22.5 0 01-1.384-.043zm1.195-21.03c-1.803 0-3.218.727-4.246 2.18-1.027 1.455-1.54 3.474-1.54 6.06 0 2.586.516 4.613 1.55 6.08 1.035 1.468 2.447 2.202 4.236 2.202 1.803 0 3.222-.73 4.256-2.19 1.035-1.461 1.552-3.492 1.552-6.092 0-2.586-.514-4.605-1.541-6.06-1.028-1.453-2.45-2.18-4.267-2.18z\"/></svg>"},"$:/core/images/mono-line":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mono-line tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60.437 84.523h.908c1.922 0 3.381.489 4.378 1.468.997.979 1.495 2.411 1.495 4.298 0 2.1-.525 3.612-1.575 4.538-1.05.925-2.785 1.388-5.206 1.388h-16.07c-2.456 0-4.2-.454-5.232-1.361-1.032-.908-1.548-2.43-1.548-4.565 0-2.065.516-3.542 1.548-4.432 1.032-.89 2.776-1.334 5.232-1.334h1.869l-2.19-6.247H20.983l-2.296 6.247h1.87c2.42 0 4.155.453 5.205 1.361 1.05.908 1.575 2.376 1.575 4.405 0 2.1-.525 3.612-1.575 4.538-1.05.925-2.785 1.388-5.206 1.388H6.781c-2.456 0-4.2-.463-5.233-1.388C.516 93.9 0 92.389 0 90.289c0-1.887.498-3.32 1.495-4.298.997-.979 2.456-1.468 4.378-1.468h.908l14.308-39.83h-4.271c-2.42 0-4.156-.462-5.206-1.387-1.05-.926-1.575-2.42-1.575-4.485 0-2.1.525-3.613 1.575-4.538 1.05-.926 2.785-1.388 5.206-1.388h20.021c3.168 0 5.392 1.708 6.674 5.125v.16l16.924 46.343zm-27.976-39.83L24.72 67.225h15.483l-7.742-22.53zM89.506 68.56v16.284h8.008c5.66 0 9.646-.623 11.96-1.869 2.313-1.245 3.47-3.328 3.47-6.246 0-2.955-1.103-5.055-3.31-6.3-2.207-1.246-6.069-1.869-11.586-1.869h-8.542zm27.229-5.926c3.88 1.423 6.727 3.372 8.542 5.846 1.815 2.474 2.723 5.633 2.723 9.477 0 3.239-.783 6.193-2.35 8.862-1.565 2.67-3.808 4.859-6.726 6.567-1.709.997-3.622 1.718-5.74 2.163-2.118.445-5.116.667-8.996.667h-27.87c-2.349 0-4.03-.463-5.045-1.388-1.014-.926-1.521-2.438-1.521-4.538 0-1.887.48-3.32 1.441-4.298.961-.979 2.367-1.468 4.218-1.468h.907v-39.83h-.907c-1.851 0-3.257-.498-4.218-1.494-.961-.997-1.441-2.456-1.441-4.378 0-2.065.516-3.568 1.548-4.512 1.032-.943 2.705-1.414 5.018-1.414h24.56c7.51 0 13.214 1.459 17.111 4.377 3.898 2.92 5.847 7.19 5.847 12.814 0 2.776-.597 5.223-1.789 7.341-1.192 2.118-2.963 3.853-5.312 5.206zm-27.23-18.26v13.455h7.208c4.378 0 7.466-.516 9.264-1.549 1.797-1.032 2.696-2.776 2.696-5.232 0-2.313-.81-4.004-2.43-5.072-1.619-1.068-4.244-1.602-7.874-1.602h-8.863z\"/></svg>"},"$:/core/images/new-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 72H8.007C3.591 72 0 68.418 0 64c0-4.41 3.585-8 8.007-8H56V8.007C56 3.591 59.582 0 64 0c4.41 0 8 3.585 8 8.007V56h47.993c4.416 0 8.007 3.582 8.007 8 0 4.41-3.585 8-8.007 8H72v47.993c0 4.416-3.582 8.007-8 8.007-4.41 0-8-3.585-8-8.007V72z\"/></svg>"},"$:/core/images/new-here-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-here-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.838 20.935l-3.572.938c-3.688.968-8.23 4.43-10.136 7.731L3.37 96.738c-1.905 3.3-.771 7.524 2.534 9.432l33.717 19.466c3.297 1.904 7.53.78 9.435-2.521l38.76-67.134c1.905-3.3 2.632-8.963 1.623-12.646L83.285 20.88c-1.009-3.68-4.821-5.884-8.513-4.915l-7.603 1.995.043.287c.524 3.394 2.053 7.498 4.18 11.55.418.163.829.36 1.23.59a8.864 8.864 0 014.438 8.169c.104.132.21.264.316.395l-.386.318a8.663 8.663 0 01-1.082 3.137c-2.42 4.192-7.816 5.608-12.051 3.163-4.12-2.379-5.624-7.534-3.476-11.671-2.177-4.394-3.788-8.874-4.543-12.964z\"/><path d=\"M69.554 44.76c-5.944-7.476-10.74-17.196-11.955-25.059-1.68-10.875 3.503-18.216 15.082-18.04 10.407.158 19.975 5.851 24.728 13.785 5.208 8.695 2.95 17.868-6.855 20.496l-2.037-7.601c4.232-1.134 4.999-4.248 2.24-8.853-3.37-5.626-10.465-9.848-18.146-9.965-6.392-.097-8.31 2.62-7.323 9.01.999 6.465 5.318 15.138 10.582 21.65l-.072.06c.559 1.553-4.17 6.44-5.938 4.888l-.005.004-.028-.034a1.323 1.323 0 01-.124-.135 2.618 2.618 0 01-.149-.205z\"/><rect width=\"16\" height=\"48\" x=\"96\" y=\"80\" rx=\"8\"/><rect width=\"48\" height=\"16\" x=\"80\" y=\"96\" rx=\"8\"/></g></svg>"},"$:/core/images/new-image-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-image-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M81.362 73.627l15.826-27.41a2.626 2.626 0 00-.962-3.59l-50.01-28.872a2.626 2.626 0 00-3.588.961L30.058 36.49l10.04-5.261c3.042-1.595 6.771.114 7.55 3.46l3.607 17.702 9.88.85a5.25 5.25 0 014.571 3.77c.034.115.1.344.199.671.165.553.353 1.172.562 1.843.595 1.914 1.23 3.85 1.872 5.678.207.588.412 1.156.614 1.701.625 1.685 1.209 3.114 1.725 4.207.255.54.485.977.726 1.427.214.212.547.425 1.011.622 1.141.482 2.784.74 4.657.758.864.008 1.71-.034 2.492-.11.448-.043.753-.085.871-.104.315-.053.625-.077.927-.076zM37.47 2.649A5.257 5.257 0 0144.649.725l63.645 36.746a5.257 5.257 0 011.923 7.178L73.47 108.294a5.257 5.257 0 01-7.177 1.923L2.649 73.47a5.257 5.257 0 01-1.924-7.177L37.471 2.649zm42.837 50.49a5.25 5.25 0 105.25-9.092 5.25 5.25 0 00-5.25 9.093zM96 112h-7.993c-4.419 0-8.007-3.582-8.007-8 0-4.41 3.585-8 8.007-8H96v-7.993C96 83.588 99.582 80 104 80c4.41 0 8 3.585 8 8.007V96h7.993c4.419 0 8.007 3.582 8.007 8 0 4.41-3.585 8-8.007 8H112v7.993c0 4.419-3.582 8.007-8 8.007-4.41 0-8-3.585-8-8.007V112zM33.347 51.791c7.428 7.948 9.01 10.69 7.449 13.394-1.56 2.703-13.838-2.328-16.094 1.58-2.256 3.908-.907 3.258-2.437 5.908l19.73 11.39s-5.605-8.255-4.235-10.628c2.515-4.356 8.77-1.256 10.365-4.019 2.414-4.181-5.103-9.639-14.778-17.625z\"/></svg>"},"$:/core/images/new-journal-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-journal-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M102.545 112.818v11.818c0 1.306 1.086 2.364 2.425 2.364h6.06c1.34 0 2.425-1.058 2.425-2.364v-11.818h12.12c1.34 0 2.425-1.058 2.425-2.363v-5.91c0-1.305-1.085-2.363-2.424-2.363h-12.121V90.364c0-1.306-1.086-2.364-2.425-2.364h-6.06c-1.34 0-2.425 1.058-2.425 2.364v11.818h-12.12c-1.34 0-2.425 1.058-2.425 2.363v5.91c0 1.305 1.085 2.363 2.424 2.363h12.121zM60.016 4.965c-4.781-2.76-10.897-1.118-13.656 3.66L5.553 79.305A9.993 9.993 0 009.21 92.963l51.04 29.468c4.78 2.76 10.897 1.118 13.655-3.66l40.808-70.681a9.993 9.993 0 00-3.658-13.656L60.016 4.965zm-3.567 27.963a6 6 0 106-10.393 6 6 0 00-6 10.393zm31.697 17.928a6 6 0 106-10.392 6 6 0 00-6 10.392z\"/><text class=\"tc-fill-background\" font-family=\"Helvetica\" font-size=\"47.172\" font-weight=\"bold\" transform=\"rotate(30 25.742 95.82)\"><tspan x=\"42\" y=\"77.485\" text-anchor=\"middle\"><<now \"DD\">></tspan></text></g></svg>"},"$:/core/images/opacity":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-opacity tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M102.362 65a51.595 51.595 0 01-1.942 6H82.584a35.867 35.867 0 002.997-6h16.78zm.472-2c.423-1.961.734-3.963.929-6H87.656a35.78 35.78 0 01-1.368 6h16.546zm-3.249 10a51.847 51.847 0 01-3.135 6H75.812a36.205 36.205 0 005.432-6h18.341zm-4.416 8c-1.424 2.116-3 4.12-4.71 6H60.46a35.843 35.843 0 0012.874-6h21.834zm-7.513-34h16.107C101.247 20.627 79.033 0 52 0 23.281 0 0 23.281 0 52c0 25.228 17.965 46.26 41.8 51h20.4a51.66 51.66 0 0015.875-6H39v-2h42.25a52.257 52.257 0 007.288-6H39v-2h4.539C27.739 83.194 16 68.968 16 52c0-19.882 16.118-36 36-36 18.186 0 33.222 13.484 35.656 31zm.22 2h16.039a52.823 52.823 0 010 6H87.877a36.483 36.483 0 000-6z\"/><path d=\"M76 128c28.719 0 52-23.281 52-52s-23.281-52-52-52-52 23.281-52 52 23.281 52 52 52zm0-16c19.882 0 36-16.118 36-36S95.882 40 76 40 40 56.118 40 76s16.118 36 36 36z\"/><path d=\"M37 58h53v4H37v-4zm3-8h53v4H40v-4zm0-8h53v4H40v-4zm-8 24h53v4H32v-4zm-2 8h53v4H30v-4zm-3 8h53v4H27v-4z\"/></g></svg>"},"$:/core/images/open-window":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-open-window tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M16 112h88.994c3.87 0 7.006 3.59 7.006 8 0 4.418-3.142 8-7.006 8H7.006C3.136 128 0 124.41 0 120a9.321 9.321 0 010-.01V24.01C0 19.586 3.59 16 8 16c4.418 0 8 3.584 8 8.01V112z\"/><path d=\"M96 43.196V56a8 8 0 1016 0V24c0-4.41-3.585-8-8.007-8H72.007C67.588 16 64 19.582 64 24c0 4.41 3.585 8 8.007 8H84.57l-36.3 36.299a8 8 0 00-.001 11.316c3.117 3.117 8.19 3.123 11.316-.003L96 43.196zM32 7.999C32 3.581 35.588 0 40 0h80c4.419 0 8 3.588 8 8v80c0 4.419-3.588 8-8 8H40c-4.419 0-8-3.588-8-8V8z\"/></g></svg>"},"$:/core/images/options-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-options-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M110.488 76a47.712 47.712 0 01-5.134 12.384l6.724 6.724c3.123 3.123 3.132 8.192.011 11.313l-5.668 5.668c-3.12 3.12-8.186 3.117-11.313-.01l-6.724-6.725c-3.82 2.258-7.98 4-12.384 5.134v9.505c0 4.417-3.578 8.007-7.992 8.007h-8.016C55.58 128 52 124.415 52 119.993v-9.505a47.712 47.712 0 01-12.384-5.134l-6.724 6.725c-3.123 3.122-8.192 3.131-11.313.01l-5.668-5.668c-3.12-3.12-3.116-8.186.01-11.313l6.725-6.724c-2.257-3.82-4-7.98-5.134-12.384H8.007C3.591 76 0 72.422 0 68.01v-8.017C0 55.58 3.585 52 8.007 52h9.505a47.712 47.712 0 015.134-12.383l-6.724-6.725c-3.123-3.122-3.132-8.191-.011-11.312l5.668-5.669c3.12-3.12 8.186-3.116 11.313.01l6.724 6.725c3.82-2.257 7.98-4 12.384-5.134V8.007C52 3.591 55.578 0 59.992 0h8.016C72.42 0 76 3.585 76 8.007v9.505a47.712 47.712 0 0112.384 5.134l6.724-6.724c3.123-3.123 8.192-3.132 11.313-.01l5.668 5.668c3.12 3.12 3.116 8.186-.01 11.312l-6.725 6.725c2.257 3.82 4 7.979 5.134 12.383h9.505c4.416 0 8.007 3.578 8.007 7.992v8.017c0 4.411-3.585 7.991-8.007 7.991h-9.505zM64 96c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32z\"/></svg>"},"$:/core/images/paint":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-paint tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M83.527 76.19C90.43 69.287 91.892 59 87.91 50.665l37.903-37.902c2.919-2.92 2.913-7.659 0-10.572a7.474 7.474 0 00-10.572 0L77.338 40.093c-8.335-3.982-18.622-2.521-25.526 4.383l31.715 31.715zm-2.643 2.644L49.169 47.119S8.506 81.243 0 80.282c0 0 3.782 5.592 6.827 8.039 14.024-5.69 37.326-24.6 37.326-24.6l.661.66S19.45 90.222 9.18 92.047c1.222 1.44 4.354 4.053 6.247 5.776 5.417-1.488 34.733-28.57 34.733-28.57l.661.66-32.407 31.022 5.285 5.286L56.106 75.2l.662.66s-27.864 30.536-28.684 32.432c0 0 6.032 6.853 7.569 7.824.702-2.836 27.884-33.485 27.884-33.485l.661.66s-20.597 23.755-24.964 36.732c3.21 3.549 7.5 5.137 10.926 6.298-2.19-11.817 30.724-47.487 30.724-47.487z\"/></svg>"},"$:/core/images/palette":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-palette tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M80.247 39.182a93.52 93.52 0 00-16.228-1.4C28.662 37.781 0 57.131 0 81.002c0 9.642 4.676 18.546 12.58 25.735C23.504 91.19 26.34 72.395 36.89 63.562c15.183-12.713 26.538-7.828 26.538-7.828l16.82-16.552zm26.535 9.655c13.049 7.913 21.257 19.392 21.257 32.166 0 9.35.519 17.411-11.874 25.08-10.797 6.681-3.824-6.536-11.844-10.898s-19.946 1.308-18.213 7.906c3.2 12.181 19.422 11.455 6.314 16.658-13.107 5.202-18.202 4.476-28.403 4.476-7.821 0-15.315-.947-22.243-2.68 9.844-4.197 27.88-12.539 33.354-19.456C82.788 92.409 87.37 80 83.324 72.484c-.194-.359 11.215-11.668 23.458-23.647zM1.134 123.867l-.66.002c33.479-14.94 22.161-64.226 58.818-64.226.317 1.418.644 2.944 1.062 4.494-25.907-4.166-23.567 48.031-59.22 59.73zm.713-.007c38.872-.506 78.152-22.347 78.152-44.813-9.27 0-14.073-3.48-16.816-7.942-16.597-7.003-30.365 45.715-61.336 52.755zm65.351-64.008c-4.45 4.115 4.886 16.433 11.318 11.318l45.27-45.27c11.317-11.318 0-22.635-11.318-11.318-11.317 11.318-33.518 34.405-45.27 45.27z\"/></svg>"},"$:/core/images/permalink-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-permalink-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M80.483 48l-7.387 32h-25.58l7.388-32h25.58zm3.694-16l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L100.598 32h3.403c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8h-7.096l-7.387 32H104c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H85.824l-5.624 24.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L69.402 96h-25.58L38.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L27.402 96h-3.403C19.59 96 16 92.418 16 88c0-4.41 3.581-8 8-8h7.096l7.387-32H24C19.59 48 16 44.418 16 40c0-4.41 3.581-8 8-8h18.177l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L58.598 32h25.58z\"/></svg>"},"$:/core/images/permaview-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-permaview-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M81.483 48l-1.846 8h-5.58l1.847-8h5.58zm3.694-16l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L101.598 32h2.403c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8h-6.096l-1.847 8h7.944c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H92.364l-1.846 8H104c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H86.824l-5.624 24.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L70.402 96h-5.58L59.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L48.402 96h-5.58L37.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L26.402 96h-2.403C19.59 96 16 92.418 16 88c0-4.41 3.581-8 8-8h6.096l1.847-8h-7.944C19.59 72 16 68.418 16 64c0-4.41 3.581-8 8-8h11.637l1.846-8H24C19.59 48 16 44.418 16 40c0-4.41 3.581-8 8-8h17.177l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L57.598 32h5.58L68.8 7.642c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L79.598 32h5.58zM53.904 48l-1.847 8h5.58l1.846-8h-5.579zm22.039 24l-1.847 8h-5.58l1.847-8h5.58zm-27.58 0l-1.846 8h5.579l1.847-8h-5.58z\"/></svg>"},"$:/core/images/picture":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-picture tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M112 68.233v-48.23A4.001 4.001 0 00107.997 16H20.003A4.001 4.001 0 0016 20.003v38.31l9.241-14.593c2.8-4.422 9.023-5.008 12.6-1.186l18.247 20.613 13.687-6.407a8 8 0 018.903 1.492 264.97 264.97 0 002.92 2.739 249.44 249.44 0 006.798 6.066 166.5 166.5 0 002.106 1.778c2.108 1.747 3.967 3.188 5.482 4.237.748.518 1.383.92 2.044 1.33.444.117 1.046.144 1.809.05 1.873-.233 4.238-1.144 6.723-2.547a36.016 36.016 0 003.205-2.044c.558-.4.93-.686 1.07-.802.376-.31.765-.577 1.165-.806zM0 8.007A8.01 8.01 0 018.007 0h111.986A8.01 8.01 0 01128 8.007v111.986a8.01 8.01 0 01-8.007 8.007H8.007A8.01 8.01 0 010 119.993V8.007zM95 42a8 8 0 100-16 8 8 0 000 16zM32 76c15.859 4.83 20.035 7.244 20.035 12S32 95.471 32 102.347c0 6.876 1.285 4.99 1.285 9.653H68s-13.685-6.625-13.685-10.8c0-7.665 10.615-8.34 10.615-13.2 0-7.357-14.078-8.833-32.93-12z\"/></svg>"},"$:/core/images/plugin-generic-language":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\" class=\"tc-image-plugin-generic-language tc-image-button\"><path fill-rule=\"evenodd\" d=\"M61.207 68.137c-4.324 2.795-6.999 6.656-6.999 10.921 0 7.906 9.19 14.424 21.042 15.336 2.162 3.902 8.598 6.785 16.318 7.01-5.126-1.125-9.117-3.742-10.62-7.01C92.805 93.487 102 86.967 102 79.059c0-8.53-10.699-15.445-23.896-15.445-6.599 0-12.572 1.729-16.897 4.524zm12.794-14.158c-4.324 2.795-10.298 4.524-16.897 4.524-2.619 0-5.14-.272-7.497-.775-3.312 2.25-8.383 3.69-14.067 3.69l-.255-.002c4.119-.892 7.511-2.747 9.478-5.13-6.925-2.704-11.555-7.617-11.555-13.228 0-8.53 10.699-15.445 23.896-15.445C70.301 27.613 81 34.528 81 43.058c0 4.265-2.675 8.126-6.999 10.921zM64 0l54.56 32v64L64 128 9.44 96V32L64 0z\"/></svg>"},"$:/core/images/plugin-generic-plugin":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\" class=\"tc-image-plugin-generic-plugin tc-image-button\"><path fill-rule=\"evenodd\" d=\"M40.397 76.446V95.34h14.12l-.001-.005a6.912 6.912 0 005.364-11.593l.046-.023a6.912 6.912 0 119.979.526l.086.055a6.914 6.914 0 004.408 10.948l-.023.092h21.32V75.568l-.15.038a6.912 6.912 0 00-11.593-5.364l-.022-.046a6.912 6.912 0 11.526-9.979l.055-.086a6.914 6.914 0 0010.948-4.408c.079.018.158.038.236.059v-15.74h-21.32l.023-.094a6.914 6.914 0 01-4.408-10.947 10.23 10.23 0 00-.086-.055 6.912 6.912 0 10-9.979-.526l-.046.023a6.912 6.912 0 01-5.364 11.593l.001.005h-14.12v12.847A6.912 6.912 0 0129.5 59.843l-.054.086a6.912 6.912 0 10-.526 9.979l.023.046a6.912 6.912 0 0111.455 6.492zM64 0l54.56 32v64L64 128 9.44 96V32L64 0z\"/></svg>"},"$:/core/images/plugin-generic-theme":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\" class=\"tc-image-plugin-generic-theme tc-image-button\"><path fill-rule=\"evenodd\" d=\"M29.408 91.472L51.469 69.41l-.004-.005a2.22 2.22 0 01.004-3.146c.87-.87 2.281-.872 3.147-.005l9.465 9.464a2.22 2.22 0 01-.005 3.147c-.87.87-2.28.871-3.147.005l-.005-.005-22.061 22.062a6.686 6.686 0 11-9.455-9.455zM60.802 66.38c-2.436-2.704-4.465-5.091-5.817-6.869-6.855-9.014-10.313-4.268-14.226 0-3.913 4.268 1.03 7.726-2.683 10.741-3.713 3.015-3.484 4.06-9.752-1.455-6.267-5.516-6.7-7.034-3.823-10.181 2.877-3.147 5.281 1.808 11.159-3.785 5.877-5.593.94-10.55.94-10.55s12.237-25.014 28.588-23.167c16.351 1.848-6.186-2.392-11.792 17.226-2.4 8.4.447 6.42 4.998 9.968 1.394 1.086 6.03 4.401 11.794 8.685l20.677-20.676 1.615-4.766 7.84-4.689 3.151 3.152-4.688 7.84-4.766 1.615-20.224 20.223c12.663 9.547 28.312 22.146 28.312 26.709 0 7.217-3.071 11.526-9.535 9.164-4.693-1.715-18.768-15.192-28.753-25.897l-2.893 2.893-3.151-3.152 3.029-3.029zM63.953 0l54.56 32v64l-54.56 32-54.56-32V32l54.56-32z\"/></svg>"},"$:/core/images/plus-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-plus-button tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M64-.333c35.346 0 64 28.654 64 64 0 35.346-28.654 64-64 64-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64zM64 16c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\"/><rect width=\"80\" height=\"16\" x=\"24\" y=\"56\" rx=\"8\"/><rect width=\"16\" height=\"80\" x=\"56\" y=\"24\" rx=\"8\"/></svg>"},"$:/core/images/preview-closed":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-preview-closed tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M.088 64a7.144 7.144 0 001.378 5.458C16.246 88.818 39.17 100.414 64 100.414c24.83 0 47.753-11.596 62.534-30.956A7.144 7.144 0 00127.912 64C110.582 78.416 88.304 87.086 64 87.086 39.696 87.086 17.418 78.416.088 64z\"/><rect width=\"4\" height=\"16\" x=\"62\" y=\"96\" rx=\"4\"/><rect width=\"4\" height=\"16\" x=\"78\" y=\"93\" rx=\"4\" transform=\"rotate(-5 80 101)\"/><rect width=\"4\" height=\"16\" x=\"46\" y=\"93\" rx=\"4\" transform=\"rotate(5 48 101)\"/><rect width=\"4\" height=\"16\" x=\"30\" y=\"88\" rx=\"4\" transform=\"rotate(10 32 96)\"/><rect width=\"4\" height=\"16\" x=\"94\" y=\"88\" rx=\"4\" transform=\"rotate(-10 96 96)\"/><rect width=\"4\" height=\"16\" x=\"110\" y=\"80\" rx=\"4\" transform=\"rotate(-20 112 88)\"/><rect width=\"4\" height=\"16\" x=\"14\" y=\"80\" rx=\"4\" transform=\"rotate(20 16 88)\"/></g></svg>"},"$:/core/images/preview-open":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-preview-open tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64.11 99.588c-24.83 0-47.754-11.596-62.534-30.957a7.148 7.148 0 010-8.675C16.356 40.596 39.28 29 64.11 29c24.83 0 47.753 11.596 62.534 30.956a7.148 7.148 0 010 8.675c-14.78 19.36-37.703 30.957-62.534 30.957zm46.104-32.007c1.44-1.524 1.44-3.638 0-5.162C99.326 50.9 82.439 44 64.147 44S28.968 50.9 18.08 62.42c-1.44 1.523-1.44 3.637 0 5.16C28.968 79.1 45.855 86 64.147 86s35.179-6.9 46.067-18.42z\"/><path d=\"M63.5 88C76.479 88 87 77.479 87 64.5S76.479 41 63.5 41 40 51.521 40 64.5 50.521 88 63.5 88z\"/></g></svg>"},"$:/core/images/print-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-print-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M112 71V30.5h-.032c-.035-2-.816-3.99-2.343-5.516L86.998 2.357A7.978 7.978 0 0081 .02V0H24a8 8 0 00-8 8v63h8V8h57v14.5c0 4.422 3.582 8 8 8h15V71h8z\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"36\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"52\" rx=\"4\"/><rect width=\"40\" height=\"8\" x=\"32\" y=\"20\" rx=\"4\"/><path d=\"M0 80.005C0 71.165 7.156 64 16 64h96c8.836 0 16 7.155 16 16.005v31.99c0 8.84-7.156 16.005-16 16.005H16c-8.836 0-16-7.155-16-16.005v-31.99zM104 96a8 8 0 100-16 8 8 0 000 16z\"/></g></svg>"},"$:/core/images/quote":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-quote tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M51.219 117.713V62.199H27.427c0-8.891 1.683-16.401 5.047-22.53 3.365-6.127 9.613-10.754 18.745-13.878V2c-7.45.961-14.36 3.184-20.728 6.669-6.368 3.484-11.835 7.87-16.401 13.157C9.524 27.113 5.98 33.241 3.456 40.21.933 47.18-.21 54.63.03 62.56v55.153H51.22zm76.781 0V62.199h-23.791c0-8.891 1.682-16.401 5.046-22.53 3.365-6.127 9.613-10.754 18.745-13.878V2c-7.45.961-14.359 3.184-20.727 6.669-6.369 3.484-11.836 7.87-16.402 13.157-4.566 5.287-8.11 11.415-10.634 18.384-2.523 6.97-3.665 14.42-3.424 22.35v55.153H128z\"/></svg>"},"$:/core/images/refresh-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-refresh-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M106.369 39.433c10.16 20.879 6.57 46.764-10.771 64.106-21.87 21.87-57.327 21.87-79.196 0-21.87-21.87-21.87-57.326 0-79.196a8 8 0 1111.314 11.314c-15.621 15.62-15.621 40.947 0 56.568 15.62 15.621 40.947 15.621 56.568 0C97.72 78.79 99.6 58.175 89.924 42.73l-6.44 12.264a8 8 0 11-14.166-7.437L84.435 18.76a8 8 0 0110.838-3.345l28.873 15.345a8 8 0 11-7.51 14.129l-10.267-5.457zm-8.222-12.368c-.167-.19-.336-.38-.506-.57l.96-.296-.454.866z\"/></svg>"},"$:/core/images/right-arrow":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-right-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M99.069 64.173c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l50.382-50.382-50.382-50.382a7.92 7.92 0 010-11.195c3.086-3.085 8.104-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.316 5.595z\"/></svg>"},"$:/core/images/rotate-left":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-rotate-left tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"32\" height=\"80\" rx=\"8\"/><rect width=\"80\" height=\"32\" x=\"48\" y=\"96\" rx=\"8\"/><path d=\"M61.32 36.65c19.743 2.45 35.023 19.287 35.023 39.693a4 4 0 01-8 0c0-15.663-11.254-28.698-26.117-31.46l3.916 3.916a4 4 0 11-5.657 5.657L49.172 43.142a4 4 0 010-5.657l11.313-11.313a4 4 0 115.657 5.656l-4.821 4.822z\"/></g></svg>"},"$:/core/images/save-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-save-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M120.783 34.33c4.641 8.862 7.266 18.948 7.266 29.646 0 35.347-28.653 64-64 64-35.346 0-64-28.653-64-64 0-35.346 28.654-64 64-64 18.808 0 35.72 8.113 47.43 21.03l2.68-2.68c3.13-3.13 8.197-3.132 11.321-.008 3.118 3.118 3.121 8.193-.007 11.32l-4.69 4.691zm-12.058 12.058a47.876 47.876 0 013.324 17.588c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48c14.39 0 27.3 6.332 36.098 16.362L58.941 73.544 41.976 56.578c-3.127-3.127-8.201-3.123-11.32-.005-3.123 3.124-3.119 8.194.006 11.319l22.617 22.617a7.992 7.992 0 005.659 2.347c2.05 0 4.101-.783 5.667-2.349l44.12-44.12z\"/></svg>"},"$:/core/images/size":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-size tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M92.343 26l-9.171 9.172a4 4 0 105.656 5.656l16-16a4 4 0 000-5.656l-16-16a4 4 0 10-5.656 5.656L92.343 18H22a4 4 0 00-4 4v70.343l-9.172-9.171a4 4 0 10-5.656 5.656l16 16a4 4 0 005.656 0l16-16a4 4 0 10-5.656-5.656L26 92.343V22l-4 4h70.343zM112 52v64l4-4H52a4 4 0 100 8h64a4 4 0 004-4V52a4 4 0 10-8 0z\"/></svg>"},"$:/core/images/spiral":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-spiral tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M64.534 68.348c3.39 0 6.097-2.62 6.476-5.968l-4.755-.538 4.75.583c.377-3.07-1.194-6.054-3.89-7.78-2.757-1.773-6.34-2.01-9.566-.7-3.46 1.403-6.14 4.392-7.35 8.148l-.01.026c-1.3 4.08-.72 8.64 1.58 12.52 2.5 4.2 6.77 7.2 11.76 8.27 5.37 1.15 11.11-.05 15.83-3.31 5.04-3.51 8.46-9.02 9.45-15.3 1.05-6.7-.72-13.63-4.92-19.19l.02.02c-4.42-5.93-11.2-9.82-18.78-10.78-7.96-1.01-16.13 1.31-22.59 6.43-6.81 5.39-11.18 13.41-12.11 22.26-.98 9.27 1.87 18.65 7.93 26.02 6.32 7.69 15.6 12.56 25.74 13.48 10.54.96 21.15-2.42 29.45-9.4l.01-.01c8.58-7.25 13.94-17.78 14.86-29.21.94-11.84-2.96-23.69-10.86-32.9-8.19-9.5-19.95-15.36-32.69-16.27-13.16-.94-26.24 3.49-36.34 12.34l.01-.01c-10.41 9.08-16.78 22.1-17.68 36.15-.93 14.44 4.03 28.77 13.79 39.78 10.03 11.32 24.28 18.2 39.6 19.09 15.73.92 31.31-4.56 43.24-15.234 12.23-10.954 19.61-26.44 20.5-43.074a4.785 4.785 0 00-4.52-5.03 4.778 4.778 0 00-5.03 4.52c-.75 14.1-7 27.2-17.33 36.45-10.03 8.98-23.11 13.58-36.3 12.81-12.79-.75-24.67-6.48-33-15.89-8.07-9.11-12.17-20.94-11.41-32.827.74-11.52 5.942-22.15 14.43-29.54l.01-.01c8.18-7.17 18.74-10.75 29.35-9.998 10.21.726 19.6 5.41 26.11 12.96 6.24 7.273 9.32 16.61 8.573 25.894-.718 8.9-4.88 17.064-11.504 22.66l.01-.007c-6.36 5.342-14.44 7.92-22.425 7.19-7.604-.68-14.52-4.314-19.21-10.027-4.44-5.4-6.517-12.23-5.806-18.94.67-6.3 3.76-11.977 8.54-15.766 4.46-3.54 10.05-5.128 15.44-4.44 5.03.63 9.46 3.18 12.32 7.01l.02.024c2.65 3.5 3.75 7.814 3.1 11.92-.59 3.71-2.58 6.925-5.45 8.924-2.56 1.767-5.61 2.403-8.38 1.81-2.42-.516-4.42-1.92-5.53-3.79-.93-1.56-1.15-3.3-.69-4.75l-4.56-1.446L59.325 65c.36-1.12 1.068-1.905 1.84-2.22.25-.103.48-.14.668-.13.06.006.11.015.14.025.01 0 .01 0-.01-.01a1.047 1.047 0 01-.264-.332c-.15-.29-.23-.678-.18-1.11l-.005.04c.15-1.332 1.38-2.523 3.035-2.523-2.65 0-4.79 2.144-4.79 4.787s2.14 4.785 4.78 4.785z\"/></svg>"},"$:/core/images/stamp":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-stamp tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M49.733 64H16.01C11.584 64 8 67.583 8 72.003V97h112V72.003A8 8 0 00111.99 64H78.267A22.813 22.813 0 0175.5 53.077c0-6.475 2.687-12.324 7.009-16.497A22.818 22.818 0 0087 22.952C87 10.276 76.703 0 64 0S41 10.276 41 22.952c0 5.103 1.669 9.817 4.491 13.628 4.322 4.173 7.009 10.022 7.009 16.497 0 3.954-1.002 7.675-2.767 10.923zM8 104h112v8H8v-8z\"/></svg>"},"$:/core/images/star-filled":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-star-filled tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M61.836 96.823l37.327 27.287c2.72 1.99 6.379-.69 5.343-3.912L90.29 75.988l-1.26 3.91 37.285-27.345c2.718-1.993 1.32-6.327-2.041-6.33l-46.113-.036 3.3 2.416L67.176 4.416c-1.04-3.221-5.563-3.221-6.604 0L46.29 48.603l3.3-2.416-46.113.036c-3.362.003-4.759 4.337-2.04 6.33L38.72 79.898l-1.26-3.91-14.216 44.21c-1.036 3.223 2.622 5.901 5.343 3.912l37.326-27.287h-4.078z\"/></svg>"},"$:/core/images/storyview-classic":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-classic tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16C19.581 16 16 19.578 16 23.992v16.016C16 44.422 19.588 48 24 48h80c4.419 0 8-3.578 8-7.992V23.992c0-4.414-3.588-7.992-8-7.992H24zm0 48C19.581 64 16 67.59 16 72c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24zm0 32C19.581 96 16 99.59 16 104c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24z\"/></svg>"},"$:/core/images/storyview-pop":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-pop tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16C19.581 16 16 19.578 16 23.992v16.016C16 44.422 19.588 48 24 48h80c4.419 0 8-3.578 8-7.992V23.992c0-4.414-3.588-7.992-8-7.992H24zm-7.99 40C11.587 56 8 59.578 8 63.992v16.016C8 84.422 11.584 88 16.01 88h95.98c4.424 0 8.01-3.578 8.01-7.992V63.992c0-4.414-3.584-7.992-8.01-7.992H16.01zM24 96C19.581 96 16 99.59 16 104c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24zm0-32C19.581 64 16 67.59 16 72c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24z\"/></svg>"},"$:/core/images/storyview-zoomin":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-zoomin tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16A8 8 0 0016 24.009V71.99C16 76.414 19.588 80 24 80h80a8 8 0 008-8.009V24.01c0-4.423-3.588-8.009-8-8.009H24z\"/></svg>"},"$:/core/images/strikethrough":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-strikethrough tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M92.794 38.726h15.422c-.229-6.74-1.514-12.538-3.856-17.393-2.342-4.855-5.54-8.881-9.596-12.08-4.055-3.199-8.767-5.54-14.136-7.025C75.258.743 69.433 0 63.15 0a62.76 62.76 0 00-16.364 2.142C41.474 3.57 36.733 5.74 32.564 8.653c-4.17 2.913-7.511 6.626-10.025 11.138-2.513 4.512-3.77 9.853-3.77 16.022 0 5.597 1.115 10.252 3.342 13.965 2.228 3.712 5.198 6.74 8.91 9.081 3.713 2.342 7.911 4.227 12.595 5.655a194.641 194.641 0 0014.308 3.77c4.855 1.085 9.624 2.142 14.308 3.17 4.683 1.028 8.881 2.37 12.594 4.027 3.713 1.656 6.683 3.798 8.91 6.425 2.228 2.628 3.342 6.055 3.342 10.281 0 4.456-.914 8.111-2.742 10.967a19.953 19.953 0 01-7.197 6.768c-2.97 1.657-6.311 2.828-10.024 3.513a60.771 60.771 0 01-11.052 1.028c-4.57 0-9.025-.571-13.366-1.713-4.34-1.143-8.139-2.913-11.394-5.312-3.256-2.4-5.884-5.455-7.883-9.168-1.999-3.712-2.998-8.139-2.998-13.28H15c0 7.426 1.342 13.852 4.027 19.278 2.684 5.426 6.34 9.881 10.966 13.365 4.627 3.484 9.996 6.083 16.107 7.797 6.112 1.713 12.595 2.57 19.449 2.57 5.597 0 11.223-.657 16.878-1.97 5.655-1.314 10.767-3.428 15.336-6.34 4.57-2.914 8.31-6.683 11.224-11.31 2.913-4.626 4.37-10.195 4.37-16.707 0-6.054-1.115-11.08-3.342-15.079-2.228-3.998-5.198-7.31-8.91-9.938-3.713-2.627-7.911-4.712-12.595-6.254a170.83 170.83 0 00-14.308-4.027 549.669 549.669 0 00-14.308-3.17c-4.683-.971-8.881-2.2-12.594-3.684-3.713-1.485-6.683-3.399-8.91-5.74-2.228-2.342-3.342-5.398-3.342-9.168 0-3.998.771-7.34 2.313-10.024 1.543-2.685 3.599-4.826 6.17-6.426 2.57-1.599 5.51-2.741 8.824-3.427a49.767 49.767 0 0110.11-1.028c8.453 0 15.393 1.97 20.819 5.912 5.426 3.94 8.596 10.31 9.51 19.106z\"/><path d=\"M5 54h118v16H5z\"/></g></svg>"},"$:/core/images/subscript":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-subscript tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M2.272 16h19.91l21.649 33.675L66.414 16h18.708L53.585 61.969l33.809 49.443H67.082L43.296 74.93l-24.187 36.48H0L33.808 61.97 2.272 16zM127.91 128.412H85.328c.059-5.168 1.306-9.681 3.741-13.542 2.435-3.86 5.761-7.216 9.978-10.066a112.388 112.388 0 016.325-4.321 50.09 50.09 0 006.058-4.499c1.841-1.603 3.356-3.34 4.543-5.211 1.188-1.871 1.812-4.024 1.871-6.46 0-1.128-.133-2.33-.4-3.607a9.545 9.545 0 00-1.56-3.564c-.772-1.098-1.84-2.019-3.207-2.761-1.366-.743-3.148-1.114-5.345-1.114-2.02 0-3.697.4-5.033 1.203-1.337.801-2.406 1.9-3.208 3.296-.801 1.396-1.395 3.044-1.781 4.944-.386 1.9-.609 3.95-.668 6.147H86.486c0-3.445.46-6.637 1.38-9.577.921-2.94 2.302-5.478 4.143-7.617 1.841-2.138 4.083-3.815 6.726-5.033 2.643-1.217 5.716-1.826 9.22-1.826 3.802 0 6.979.623 9.533 1.87 2.554 1.248 4.617 2.822 6.191 4.722 1.574 1.9 2.688 3.965 3.341 6.192.653 2.227.98 4.35.98 6.37 0 2.494-.386 4.75-1.158 6.77a21.803 21.803 0 01-3.118 5.568 31.516 31.516 0 01-4.454 4.677 66.788 66.788 0 01-5.167 4.009 139.198 139.198 0 01-5.346 3.563 79.237 79.237 0 00-4.944 3.386c-1.514 1.128-2.836 2.3-3.964 3.518-1.129 1.218-1.9 2.51-2.317 3.876h30.379v9.087z\"/></svg>"},"$:/core/images/superscript":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-superscript tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M2.272 16h19.91l21.649 33.675L66.414 16h18.708L53.585 61.969l33.809 49.443H67.082L43.296 74.93l-24.187 36.48H0L33.808 61.97 2.272 16zM127.91 63.412H85.328c.059-5.168 1.306-9.681 3.741-13.542 2.435-3.86 5.761-7.216 9.978-10.066a112.388 112.388 0 016.325-4.321 50.09 50.09 0 006.058-4.499c1.841-1.603 3.356-3.34 4.543-5.211 1.188-1.871 1.812-4.024 1.871-6.46 0-1.128-.133-2.33-.4-3.607a9.545 9.545 0 00-1.56-3.564c-.772-1.098-1.84-2.019-3.207-2.761-1.366-.743-3.148-1.114-5.345-1.114-2.02 0-3.697.4-5.033 1.203-1.337.801-2.406 1.9-3.208 3.296-.801 1.396-1.395 3.044-1.781 4.944-.386 1.9-.609 3.95-.668 6.147H86.486c0-3.445.46-6.637 1.38-9.577.921-2.94 2.302-5.478 4.143-7.617 1.841-2.138 4.083-3.815 6.726-5.033 2.643-1.217 5.716-1.826 9.22-1.826 3.802 0 6.979.623 9.533 1.87 2.554 1.248 4.617 2.822 6.191 4.722 1.574 1.9 2.688 3.965 3.341 6.192.653 2.227.98 4.35.98 6.37 0 2.494-.386 4.75-1.158 6.77a21.803 21.803 0 01-3.118 5.568 31.516 31.516 0 01-4.454 4.677 66.788 66.788 0 01-5.167 4.009 139.198 139.198 0 01-5.346 3.563 79.237 79.237 0 00-4.944 3.386c-1.514 1.128-2.836 2.3-3.964 3.518-1.129 1.218-1.9 2.51-2.317 3.876h30.379v9.087z\"/></svg>"},"$:/core/images/tag-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-tag-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M18.164 47.66l.004 4.105c.003 3.823 2.19 9.097 4.885 11.792l61.85 61.85c2.697 2.697 7.068 2.69 9.769-.01L125.767 94.3a6.903 6.903 0 00.01-9.77L63.928 22.683c-2.697-2.697-7.976-4.88-11.796-4.881l-27.076-.007a6.902 6.902 0 00-6.91 6.91l.008 9.96.287.033c3.73.411 8.489-.044 13.365-1.153a9.702 9.702 0 0111.14-3.662l.291-.13.128.285a9.7 9.7 0 013.3 2.17c3.796 3.796 3.801 9.945.012 13.734-3.618 3.618-9.386 3.777-13.204.482-5.365 1.122-10.674 1.596-15.309 1.237z\"/><path d=\"M47.633 39.532l.023.051c-9.689 4.356-21.584 6.799-30.396 5.828C5.273 44.089-1.028 36.43 2.443 24.078 5.562 12.976 14.3 4.361 24.047 1.548c10.68-3.083 19.749 1.968 19.749 13.225h-8.623c0-4.859-3.078-6.573-8.735-4.94-6.91 1.995-13.392 8.383-15.694 16.577-1.915 6.818.417 9.653 7.46 10.43 7.126.785 17.531-1.352 25.917-5.121l.027.06.036-.017c1.76-.758 6.266 6.549 3.524 7.74a2.8 2.8 0 01-.075.03z\"/></g></svg>"},"$:/core/images/theme-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-theme-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.854 66.945a122.626 122.626 0 01-3.9-4.819c-11.064-14.548-16.645-6.888-22.96 0-6.315 6.888 1.664 12.47-4.33 17.335-5.993 4.866-5.623 6.552-15.737-2.35-10.115-8.9-10.815-11.351-6.172-16.43 4.644-5.08 8.524 2.918 18.01-6.108 9.485-9.026 1.517-17.026 1.517-17.026S42.03-2.824 68.42.157c26.39 2.982-9.984-3.86-19.031 27.801-3.874 13.556.72 10.362 8.066 16.087 1.707 1.33 6.428 4.732 12.671 9.318-6.129 5.879-11.157 10.669-14.273 13.582zm11.641 12.947c16.013 17.036 37.742 37.726 45.117 40.42 10.432 3.813 15.388-3.141 15.388-14.79 0-7.151-23.83-26.542-43.924-41.769-7.408 7.156-13.376 12.953-16.58 16.139z\"/><path d=\"M11.069 109.828L46.31 74.587a3.56 3.56 0 115.037-5.032l15.098 15.098a3.56 3.56 0 11-5.032 5.037l-35.24 35.241c-4.171 4.17-10.933 4.17-15.104 0-4.17-4.17-4.17-10.933 0-15.103zM124.344 6.622l5.034 5.034-7.49 12.524-7.613 2.58L61.413 79.62l-5.034-5.034 52.861-52.862 2.58-7.614 12.524-7.49z\"/></g></svg>"},"$:/core/images/timestamp-off":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-timestamp-off tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10a5 5 0 010-10H66.69a5 5 0 015 5c.006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M58.25 35.88c-18.777 0-33.998 15.224-33.998 33.998 0 18.773 15.22 34.002 33.998 34.002 18.784 0 34.002-15.23 34.002-34.002 0-18.774-15.218-33.998-34.002-33.998zm-3.03 50.123H44.196v-34H55.22v34zm16.976 0H61.17v-34h11.025v34z\"/></g></svg>"},"$:/core/images/timestamp-on":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-timestamp-on tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10a5 5 0 010-10H66.69a5 5 0 015 5c.006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M13.41 27.178a5.005 5.005 0 01-7.045-.613 5.008 5.008 0 01.616-7.047l9.95-8.348a5 5 0 016.429 7.661l-9.95 8.348zm89.573 0a5.005 5.005 0 007.045-.613 5.008 5.008 0 00-.616-7.047l-9.95-8.348a5 5 0 00-6.428 7.661l9.95 8.348zM65.097 71.072c0 3.826-3.09 6.928-6.897 6.928-3.804.006-6.9-3.102-6.903-6.928 0 0 4.76-39.072 6.903-39.072s6.897 39.072 6.897 39.072z\"/></g></svg>"},"$:/core/images/tip":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-tip tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 128.242c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64 0 35.346 28.654 64 64 64zm11.936-36.789c-.624 4.129-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349C54.33 94.05 58.824 95.82 64 95.82c5.175 0 9.67-1.769 11.936-4.366zm0 4.492c-.624 4.13-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zm0 4.456c-.624 4.129-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zm0 4.492c-.624 4.13-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zM64.3 24.242c11.618 0 23.699 7.82 23.699 24.2S75.92 71.754 75.92 83.576c0 5.873-5.868 9.26-11.92 9.26s-12.027-3.006-12.027-9.26C51.973 71.147 40 65.47 40 48.442s12.683-24.2 24.301-24.2z\"/></svg>"},"$:/core/images/transcludify":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-transcludify-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M0 59.482c.591 0 1.36-.089 2.306-.266a10.417 10.417 0 002.75-.932 6.762 6.762 0 002.306-1.907c.651-.828.976-1.863.976-3.104V35.709c0-2.01.414-3.74 1.242-5.19.828-1.448 1.833-2.66 3.016-3.636s2.425-1.7 3.726-2.173c1.3-.473 2.424-.71 3.37-.71h8.073v7.451h-4.88c-1.241 0-2.232.207-2.97.621-.74.414-1.302.932-1.686 1.552a4.909 4.909 0 00-.71 1.996c-.089.71-.133 1.39-.133 2.04v16.677c0 1.715-.325 3.134-.976 4.258-.65 1.123-1.434 2.025-2.35 2.705-.917.68-1.863 1.168-2.839 1.464-.976.296-1.818.473-2.528.532v.178c.71.059 1.552.207 2.528.443.976.237 1.922.68 2.839 1.33.916.651 1.7 1.583 2.35 2.795.65 1.212.976 2.853.976 4.923v16.144c0 .65.044 1.33.133 2.04.089.71.325 1.375.71 1.996.384.621.946 1.139 1.685 1.553.74.414 1.73.62 2.972.62h4.879v7.452h-8.073c-.946 0-2.07-.237-3.37-.71-1.301-.473-2.543-1.197-3.726-2.173-1.183-.976-2.188-2.188-3.016-3.637-.828-1.449-1.242-3.179-1.242-5.19V74.119c0-1.42-.325-2.572-.976-3.46-.65-.886-1.419-1.581-2.306-2.084a8.868 8.868 0 00-2.75-1.02C1.36 67.377.591 67.288 0 67.288v-7.806zm24.66 0c.591 0 1.36-.089 2.306-.266a10.417 10.417 0 002.75-.932 6.762 6.762 0 002.306-1.907c.65-.828.976-1.863.976-3.104V35.709c0-2.01.414-3.74 1.242-5.19.828-1.448 1.833-2.66 3.016-3.636s2.425-1.7 3.726-2.173c1.3-.473 2.424-.71 3.37-.71h8.073v7.451h-4.88c-1.241 0-2.232.207-2.97.621-.74.414-1.302.932-1.686 1.552a4.909 4.909 0 00-.71 1.996c-.089.71-.133 1.39-.133 2.04v16.677c0 1.715-.325 3.134-.976 4.258-.65 1.123-1.434 2.025-2.35 2.705-.917.68-1.863 1.168-2.839 1.464-.976.296-1.818.473-2.528.532v.178c.71.059 1.552.207 2.528.443.976.237 1.922.68 2.839 1.33.916.651 1.7 1.583 2.35 2.795.65 1.212.976 2.853.976 4.923v16.144c0 .65.044 1.33.133 2.04.089.71.325 1.375.71 1.996.384.621.946 1.139 1.685 1.553.74.414 1.73.62 2.972.62h4.879v7.452h-8.073c-.946 0-2.07-.237-3.37-.71-1.301-.473-2.543-1.197-3.726-2.173-1.183-.976-2.188-2.188-3.016-3.637-.828-1.449-1.242-3.179-1.242-5.19V74.119c0-1.42-.325-2.572-.976-3.46-.65-.886-1.419-1.581-2.306-2.084a8.868 8.868 0 00-2.75-1.02c-.946-.177-1.715-.266-2.306-.266v-7.806zm43.965-3.538L80.6 52.041l2.306 7.097-12.063 3.903 7.628 10.378-6.12 4.435-7.63-10.467-7.45 10.201-5.943-4.524 7.628-10.023-12.152-4.17 2.306-7.096 12.064 4.17V43.347h7.451v12.596zm34.425 11.344c-.65 0-1.449.089-2.395.266-.946.177-1.863.488-2.75.931a6.356 6.356 0 00-2.262 1.908c-.62.828-.931 1.862-.931 3.104v17.564c0 2.01-.414 3.74-1.242 5.189-.828 1.449-1.833 2.661-3.016 3.637s-2.425 1.7-3.726 2.173c-1.3.473-2.424.71-3.37.71h-8.073v-7.451h4.88c1.241 0 2.232-.207 2.97-.621.74-.414 1.302-.932 1.686-1.553a4.9 4.9 0 00.71-1.995c.089-.71.133-1.39.133-2.04V72.432c0-1.715.325-3.134.976-4.258.65-1.124 1.434-2.01 2.35-2.661.917-.65 1.863-1.124 2.839-1.42.976-.295 1.818-.502 2.528-.62v-.178c-.71-.059-1.552-.207-2.528-.443-.976-.237-1.922-.68-2.839-1.33-.916-.651-1.7-1.583-2.35-2.795-.65-1.212-.976-2.853-.976-4.923V37.66c0-.651-.044-1.331-.133-2.04a4.909 4.909 0 00-.71-1.997c-.384-.62-.946-1.138-1.685-1.552-.74-.414-1.73-.62-2.972-.62h-4.879V24h8.073c.946 0 2.07.237 3.37.71 1.301.473 2.543 1.197 3.726 2.173 1.183.976 2.188 2.188 3.016 3.637.828 1.449 1.242 3.178 1.242 5.189v16.943c0 1.419.31 2.572.931 3.46a6.897 6.897 0 002.262 2.084 8.868 8.868 0 002.75 1.02c.946.177 1.745.266 2.395.266v7.806zm24.66 0c-.65 0-1.449.089-2.395.266-.946.177-1.863.488-2.75.931a6.356 6.356 0 00-2.262 1.908c-.62.828-.931 1.862-.931 3.104v17.564c0 2.01-.414 3.74-1.242 5.189-.828 1.449-1.833 2.661-3.016 3.637s-2.425 1.7-3.726 2.173c-1.3.473-2.424.71-3.37.71h-8.073v-7.451h4.88c1.241 0 2.232-.207 2.97-.621.74-.414 1.302-.932 1.686-1.553a4.9 4.9 0 00.71-1.995c.089-.71.133-1.39.133-2.04V72.432c0-1.715.325-3.134.976-4.258.65-1.124 1.434-2.01 2.35-2.661.917-.65 1.863-1.124 2.839-1.42.976-.295 1.818-.502 2.528-.62v-.178c-.71-.059-1.552-.207-2.528-.443-.976-.237-1.922-.68-2.839-1.33-.916-.651-1.7-1.583-2.35-2.795-.65-1.212-.976-2.853-.976-4.923V37.66c0-.651-.044-1.331-.133-2.04a4.909 4.909 0 00-.71-1.997c-.384-.62-.946-1.138-1.685-1.552-.74-.414-1.73-.62-2.972-.62h-4.879V24h8.073c.946 0 2.07.237 3.37.71 1.301.473 2.543 1.197 3.726 2.173 1.183.976 2.188 2.188 3.016 3.637.828 1.449 1.242 3.178 1.242 5.189v16.943c0 1.419.31 2.572.931 3.46a6.897 6.897 0 002.262 2.084 8.868 8.868 0 002.75 1.02c.946.177 1.745.266 2.395.266v7.806z\"/></svg>"},"$:/core/images/twitter":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-twitter tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M41.626 115.803A73.376 73.376 0 012 104.235c2.022.238 4.08.36 6.166.36 12.111 0 23.258-4.117 32.105-11.023-11.312-.208-20.859-7.653-24.148-17.883a25.98 25.98 0 0011.674-.441C15.971 72.881 7.061 62.474 7.061 49.997c0-.108 0-.216.002-.323a25.824 25.824 0 0011.709 3.22c-6.936-4.617-11.5-12.5-11.5-21.433 0-4.719 1.274-9.142 3.5-12.945 12.75 15.579 31.797 25.83 53.281 26.904-.44-1.884-.67-3.85-.67-5.868 0-14.22 11.575-25.75 25.852-25.75a25.865 25.865 0 0118.869 8.132 51.892 51.892 0 0016.415-6.248c-1.93 6.012-6.029 11.059-11.366 14.246A51.844 51.844 0 00128 25.878a52.428 52.428 0 01-12.9 13.33c.05 1.104.075 2.214.075 3.33 0 34.028-26 73.265-73.549 73.265\"/></svg>"},"$:/core/images/underline":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-underline tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M7 117.421h114.248V128H7v-10.579zm97.871-18.525V0h-16.26v55.856c0 4.463-.605 8.576-1.816 12.338-1.212 3.762-3.03 7.046-5.452 9.851-2.423 2.806-5.452 4.974-9.086 6.504-3.635 1.53-7.939 2.296-12.912 2.296-6.25 0-11.159-1.786-14.73-5.356-3.57-3.571-5.356-8.417-5.356-14.538V0H23v65.038c0 5.356.542 10.234 1.626 14.633 1.084 4.4 2.965 8.194 5.643 11.382 2.678 3.188 6.185 5.643 10.52 7.365 4.337 1.721 9.756 2.582 16.26 2.582 7.27 0 13.582-1.435 18.938-4.304 5.356-2.87 9.755-7.365 13.199-13.486h.382v15.686h15.303z\"/></svg>"},"$:/core/images/unfold-all-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unfold-all tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"64\" rx=\"8\"/><path d=\"M63.945 60.624c-2.05 0-4.101-.78-5.666-2.345L35.662 35.662c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L63.94 41.314l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.603 58.279a7.986 7.986 0 01-5.663 2.346zM64.004 124.565c-2.05 0-4.102-.78-5.666-2.345L35.721 99.603c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.191-3.122 11.318.005L64 105.255l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.662 122.22a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"},"$:/core/images/unfold-button":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unfold tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><path d=\"M63.945 63.624c-2.05 0-4.101-.78-5.666-2.345L35.662 38.662c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L63.94 44.314l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.603 61.279a7.986 7.986 0 01-5.663 2.346zM64.004 105.682c-2.05.001-4.102-.78-5.666-2.344L35.721 80.721c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.191-3.122 11.318.005L64 86.373l16.966-16.966c3.124-3.125 8.194-3.13 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319l-22.617 22.617a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"},"$:/core/images/unlocked-padlock":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unlocked-padlock tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M48.627 64H105v32.01C105 113.674 90.674 128 73.001 128H56C38.318 128 24 113.677 24 96.01V64h6.136c-10.455-12.651-27.364-35.788-4.3-55.142 24.636-20.672 45.835 4.353 55.777 16.201 9.943 11.85-2.676 22.437-12.457 9.892-9.78-12.545-21.167-24.146-33.207-14.043-12.041 10.104-1.757 22.36 8.813 34.958 2.467 2.94 3.641 5.732 3.865 8.134zm19.105 28.364A8.503 8.503 0 0064.5 76a8.5 8.5 0 00-3.498 16.25l-5.095 22.77H72.8l-5.07-22.656z\"/></svg>"},"$:/core/images/up-arrow":{"created":"20150316000544368","modified":"20150316000831867","tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-up-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M63.892.281c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.104 3.092-11.196 0L63.894 19.393 13.513 69.774a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l55.98-55.98A7.892 7.892 0 0163.893.28z\"/></svg>"},"$:/core/images/video":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-video tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 12c-34.91 0-55.273 2.917-58.182 5.833C2.91 20.75 0 41.167 0 64.5c0 23.333 2.91 43.75 5.818 46.667C8.728 114.083 29.091 117 64 117c34.91 0 55.273-2.917 58.182-5.833C125.09 108.25 128 87.833 128 64.5c0-23.333-2.91-43.75-5.818-46.667C119.272 14.917 98.909 12 64 12zm-9.084 32.618c-3.813-2.542-6.905-.879-6.905 3.698v31.368c0 4.585 3.099 6.235 6.905 3.698l22.168-14.779c3.813-2.542 3.806-6.669 0-9.206L54.916 44.618z\"/></svg>"},"$:/core/images/warning":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-warning tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M57.072 11c3.079-5.333 10.777-5.333 13.856 0l55.426 96c3.079 5.333-.77 12-6.928 12H8.574c-6.158 0-10.007-6.667-6.928-12l55.426-96zM64 37c-4.418 0-8 3.582-8 7.994v28.012C56 77.421 59.59 81 64 81c4.418 0 8-3.582 8-7.994V44.994C72 40.579 68.41 37 64 37zm0 67a8 8 0 100-16 8 8 0 000 16z\"/></svg>"},"$:/language/Buttons/AdvancedSearch/Caption":{"text":"advanced search"},"$:/language/Buttons/AdvancedSearch/Hint":{"text":"Advanced search"},"$:/language/Buttons/Cancel/Caption":{"text":"cancel"},"$:/language/Buttons/Cancel/Hint":{"text":"Discard changes to this tiddler"},"$:/language/Buttons/Clone/Caption":{"text":"clone"},"$:/language/Buttons/Clone/Hint":{"text":"Clone this tiddler"},"$:/language/Buttons/Close/Caption":{"text":"close"},"$:/language/Buttons/Close/Hint":{"text":"Close this tiddler"},"$:/language/Buttons/CloseAll/Caption":{"text":"close all"},"$:/language/Buttons/CloseAll/Hint":{"text":"Close all tiddlers"},"$:/language/Buttons/CloseOthers/Caption":{"text":"close others"},"$:/language/Buttons/CloseOthers/Hint":{"text":"Close other tiddlers"},"$:/language/Buttons/ControlPanel/Caption":{"text":"control panel"},"$:/language/Buttons/ControlPanel/Hint":{"text":"Open control panel"},"$:/language/Buttons/CopyToClipboard/Caption":{"text":"copy to clipboard"},"$:/language/Buttons/CopyToClipboard/Hint":{"text":"Copy this text to the clipboard"},"$:/language/Buttons/Delete/Caption":{"text":"delete"},"$:/language/Buttons/Delete/Hint":{"text":"Delete this tiddler"},"$:/language/Buttons/Edit/Caption":{"text":"edit"},"$:/language/Buttons/Edit/Hint":{"text":"Edit this tiddler"},"$:/language/Buttons/Encryption/Caption":{"text":"encryption"},"$:/language/Buttons/Encryption/Hint":{"text":"Set or clear a password for saving this wiki"},"$:/language/Buttons/Encryption/ClearPassword/Caption":{"text":"clear password"},"$:/language/Buttons/Encryption/ClearPassword/Hint":{"text":"Clear the password and save this wiki without encryption"},"$:/language/Buttons/Encryption/SetPassword/Caption":{"text":"set password"},"$:/language/Buttons/Encryption/SetPassword/Hint":{"text":"Set a password for saving this wiki with encryption"},"$:/language/Buttons/ExportPage/Caption":{"text":"export all"},"$:/language/Buttons/ExportPage/Hint":{"text":"Export all tiddlers"},"$:/language/Buttons/ExportTiddler/Caption":{"text":"export tiddler"},"$:/language/Buttons/ExportTiddler/Hint":{"text":"Export tiddler"},"$:/language/Buttons/ExportTiddlers/Caption":{"text":"export tiddlers"},"$:/language/Buttons/ExportTiddlers/Hint":{"text":"Export tiddlers"},"$:/language/Buttons/SidebarSearch/Hint":{"text":"Select the sidebar search field"},"$:/language/Buttons/Fold/Caption":{"text":"fold tiddler"},"$:/language/Buttons/Fold/Hint":{"text":"Fold the body of this tiddler"},"$:/language/Buttons/Fold/FoldBar/Caption":{"text":"fold-bar"},"$:/language/Buttons/Fold/FoldBar/Hint":{"text":"Optional bars to fold and unfold tiddlers"},"$:/language/Buttons/Unfold/Caption":{"text":"unfold tiddler"},"$:/language/Buttons/Unfold/Hint":{"text":"Unfold the body of this tiddler"},"$:/language/Buttons/FoldOthers/Caption":{"text":"fold other tiddlers"},"$:/language/Buttons/FoldOthers/Hint":{"text":"Fold the bodies of other opened tiddlers"},"$:/language/Buttons/FoldAll/Caption":{"text":"fold all tiddlers"},"$:/language/Buttons/FoldAll/Hint":{"text":"Fold the bodies of all opened tiddlers"},"$:/language/Buttons/UnfoldAll/Caption":{"text":"unfold all tiddlers"},"$:/language/Buttons/UnfoldAll/Hint":{"text":"Unfold the bodies of all opened tiddlers"},"$:/language/Buttons/FullScreen/Caption":{"text":"full-screen"},"$:/language/Buttons/FullScreen/Hint":{"text":"Enter or leave full-screen mode"},"$:/language/Buttons/Help/Caption":{"text":"help"},"$:/language/Buttons/Help/Hint":{"text":"Show help panel"},"$:/language/Buttons/Import/Caption":{"text":"import"},"$:/language/Buttons/Import/Hint":{"text":"Import many types of file including text, image, TiddlyWiki or JSON"},"$:/language/Buttons/Info/Caption":{"text":"info"},"$:/language/Buttons/Info/Hint":{"text":"Show information for this tiddler"},"$:/language/Buttons/Home/Caption":{"text":"home"},"$:/language/Buttons/Home/Hint":{"text":"Open the default tiddlers"},"$:/language/Buttons/Language/Caption":{"text":"language"},"$:/language/Buttons/Language/Hint":{"text":"Choose the user interface language"},"$:/language/Buttons/Manager/Caption":{"text":"tiddler manager"},"$:/language/Buttons/Manager/Hint":{"text":"Open tiddler manager"},"$:/language/Buttons/More/Caption":{"text":"more"},"$:/language/Buttons/More/Hint":{"text":"More actions"},"$:/language/Buttons/NewHere/Caption":{"text":"new here"},"$:/language/Buttons/NewHere/Hint":{"text":"Create a new tiddler tagged with this one"},"$:/language/Buttons/NewJournal/Caption":{"text":"new journal"},"$:/language/Buttons/NewJournal/Hint":{"text":"Create a new journal tiddler"},"$:/language/Buttons/NewJournalHere/Caption":{"text":"new journal here"},"$:/language/Buttons/NewJournalHere/Hint":{"text":"Create a new journal tiddler tagged with this one"},"$:/language/Buttons/NewImage/Caption":{"text":"new image"},"$:/language/Buttons/NewImage/Hint":{"text":"Create a new image tiddler"},"$:/language/Buttons/NewMarkdown/Caption":{"text":"new Markdown tiddler"},"$:/language/Buttons/NewMarkdown/Hint":{"text":"Create a new Markdown tiddler"},"$:/language/Buttons/NewTiddler/Caption":{"text":"new tiddler"},"$:/language/Buttons/NewTiddler/Hint":{"text":"Create a new tiddler"},"$:/language/Buttons/OpenWindow/Caption":{"text":"open in new window"},"$:/language/Buttons/OpenWindow/Hint":{"text":"Open tiddler in new window"},"$:/language/Buttons/Palette/Caption":{"text":"palette"},"$:/language/Buttons/Palette/Hint":{"text":"Choose the colour palette"},"$:/language/Buttons/Permalink/Caption":{"text":"permalink"},"$:/language/Buttons/Permalink/Hint":{"text":"Set browser address bar to a direct link to this tiddler"},"$:/language/Buttons/Permaview/Caption":{"text":"permaview"},"$:/language/Buttons/Permaview/Hint":{"text":"Set browser address bar to a direct link to all the tiddlers in this story"},"$:/language/Buttons/Print/Caption":{"text":"print page"},"$:/language/Buttons/Print/Hint":{"text":"Print the current page"},"$:/language/Buttons/Refresh/Caption":{"text":"refresh"},"$:/language/Buttons/Refresh/Hint":{"text":"Perform a full refresh of the wiki"},"$:/language/Buttons/Save/Caption":{"text":"ok"},"$:/language/Buttons/Save/Hint":{"text":"Confirm changes to this tiddler"},"$:/language/Buttons/SaveWiki/Caption":{"text":"save changes"},"$:/language/Buttons/SaveWiki/Hint":{"text":"Save changes"},"$:/language/Buttons/StoryView/Caption":{"text":"storyview"},"$:/language/Buttons/StoryView/Hint":{"text":"Choose the story visualisation"},"$:/language/Buttons/HideSideBar/Caption":{"text":"hide sidebar"},"$:/language/Buttons/HideSideBar/Hint":{"text":"Hide sidebar"},"$:/language/Buttons/ShowSideBar/Caption":{"text":"show sidebar"},"$:/language/Buttons/ShowSideBar/Hint":{"text":"Show sidebar"},"$:/language/Buttons/TagManager/Caption":{"text":"tag manager"},"$:/language/Buttons/TagManager/Hint":{"text":"Open tag manager"},"$:/language/Buttons/Timestamp/Caption":{"text":"timestamps"},"$:/language/Buttons/Timestamp/Hint":{"text":"Choose whether modifications update timestamps"},"$:/language/Buttons/Timestamp/On/Caption":{"text":"timestamps are on"},"$:/language/Buttons/Timestamp/On/Hint":{"text":"Update timestamps when tiddlers are modified"},"$:/language/Buttons/Timestamp/Off/Caption":{"text":"timestamps are off"},"$:/language/Buttons/Timestamp/Off/Hint":{"text":"Don't update timestamps when tiddlers are modified"},"$:/language/Buttons/Theme/Caption":{"text":"theme"},"$:/language/Buttons/Theme/Hint":{"text":"Choose the display theme"},"$:/language/Buttons/Bold/Caption":{"text":"bold"},"$:/language/Buttons/Bold/Hint":{"text":"Apply bold formatting to selection"},"$:/language/Buttons/Clear/Caption":{"text":"clear"},"$:/language/Buttons/Clear/Hint":{"text":"Clear image to solid colour"},"$:/language/Buttons/EditorHeight/Caption":{"text":"editor height"},"$:/language/Buttons/EditorHeight/Caption/Auto":{"text":"Automatically adjust height to fit content"},"$:/language/Buttons/EditorHeight/Caption/Fixed":{"text":"Fixed height:"},"$:/language/Buttons/EditorHeight/Hint":{"text":"Choose the height of the text editor"},"$:/language/Buttons/Excise/Caption":{"text":"excise"},"$:/language/Buttons/Excise/Caption/Excise":{"text":"Perform excision"},"$:/language/Buttons/Excise/Caption/MacroName":{"text":"Macro name:"},"$:/language/Buttons/Excise/Caption/NewTitle":{"text":"Title of new tiddler:"},"$:/language/Buttons/Excise/Caption/Replace":{"text":"Replace excised text with:"},"$:/language/Buttons/Excise/Caption/Replace/Macro":{"text":"macro"},"$:/language/Buttons/Excise/Caption/Replace/Link":{"text":"link"},"$:/language/Buttons/Excise/Caption/Replace/Transclusion":{"text":"transclusion"},"$:/language/Buttons/Excise/Caption/Tag":{"text":"Tag new tiddler with the title of this tiddler"},"$:/language/Buttons/Excise/Caption/TiddlerExists":{"text":"Warning: tiddler already exists"},"$:/language/Buttons/Excise/Hint":{"text":"Excise the selected text into a new tiddler"},"$:/language/Buttons/Heading1/Caption":{"text":"heading 1"},"$:/language/Buttons/Heading1/Hint":{"text":"Apply heading level 1 formatting to lines containing selection"},"$:/language/Buttons/Heading2/Caption":{"text":"heading 2"},"$:/language/Buttons/Heading2/Hint":{"text":"Apply heading level 2 formatting to lines containing selection"},"$:/language/Buttons/Heading3/Caption":{"text":"heading 3"},"$:/language/Buttons/Heading3/Hint":{"text":"Apply heading level 3 formatting to lines containing selection"},"$:/language/Buttons/Heading4/Caption":{"text":"heading 4"},"$:/language/Buttons/Heading4/Hint":{"text":"Apply heading level 4 formatting to lines containing selection"},"$:/language/Buttons/Heading5/Caption":{"text":"heading 5"},"$:/language/Buttons/Heading5/Hint":{"text":"Apply heading level 5 formatting to lines containing selection"},"$:/language/Buttons/Heading6/Caption":{"text":"heading 6"},"$:/language/Buttons/Heading6/Hint":{"text":"Apply heading level 6 formatting to lines containing selection"},"$:/language/Buttons/Italic/Caption":{"text":"italic"},"$:/language/Buttons/Italic/Hint":{"text":"Apply italic formatting to selection"},"$:/language/Buttons/LineWidth/Caption":{"text":"line width"},"$:/language/Buttons/LineWidth/Hint":{"text":"Set line width for painting"},"$:/language/Buttons/Link/Caption":{"text":"link"},"$:/language/Buttons/Link/Hint":{"text":"Create wikitext link"},"$:/language/Buttons/Linkify/Caption":{"text":"wikilink"},"$:/language/Buttons/Linkify/Hint":{"text":"Wrap selection in square brackets"},"$:/language/Buttons/ListBullet/Caption":{"text":"bulleted list"},"$:/language/Buttons/ListBullet/Hint":{"text":"Apply bulleted list formatting to lines containing selection"},"$:/language/Buttons/ListNumber/Caption":{"text":"numbered list"},"$:/language/Buttons/ListNumber/Hint":{"text":"Apply numbered list formatting to lines containing selection"},"$:/language/Buttons/MonoBlock/Caption":{"text":"monospaced block"},"$:/language/Buttons/MonoBlock/Hint":{"text":"Apply monospaced block formatting to lines containing selection"},"$:/language/Buttons/MonoLine/Caption":{"text":"monospaced"},"$:/language/Buttons/MonoLine/Hint":{"text":"Apply monospaced character formatting to selection"},"$:/language/Buttons/Opacity/Caption":{"text":"opacity"},"$:/language/Buttons/Opacity/Hint":{"text":"Set painting opacity"},"$:/language/Buttons/Paint/Caption":{"text":"paint colour"},"$:/language/Buttons/Paint/Hint":{"text":"Set painting colour"},"$:/language/Buttons/Picture/Caption":{"text":"picture"},"$:/language/Buttons/Picture/Hint":{"text":"Insert picture"},"$:/language/Buttons/Preview/Caption":{"text":"preview"},"$:/language/Buttons/Preview/Hint":{"text":"Show preview pane"},"$:/language/Buttons/PreviewType/Caption":{"text":"preview type"},"$:/language/Buttons/PreviewType/Hint":{"text":"Choose preview type"},"$:/language/Buttons/Quote/Caption":{"text":"quote"},"$:/language/Buttons/Quote/Hint":{"text":"Apply quoted text formatting to lines containing selection"},"$:/language/Buttons/RotateLeft/Caption":{"text":"rotate left"},"$:/language/Buttons/RotateLeft/Hint":{"text":"Rotate image left by 90 degrees"},"$:/language/Buttons/Size/Caption":{"text":"image size"},"$:/language/Buttons/Size/Caption/Height":{"text":"Height:"},"$:/language/Buttons/Size/Caption/Resize":{"text":"Resize image"},"$:/language/Buttons/Size/Caption/Width":{"text":"Width:"},"$:/language/Buttons/Size/Hint":{"text":"Set image size"},"$:/language/Buttons/Stamp/Caption":{"text":"stamp"},"$:/language/Buttons/Stamp/Caption/New":{"text":"Add your own"},"$:/language/Buttons/Stamp/Hint":{"text":"Insert a preconfigured snippet of text"},"$:/language/Buttons/Stamp/New/Title":{"text":"Name as shown in menu"},"$:/language/Buttons/Stamp/New/Text":{"text":"Text of snippet. (Remember to add a descriptive title in the caption field)."},"$:/language/Buttons/Strikethrough/Caption":{"text":"strikethrough"},"$:/language/Buttons/Strikethrough/Hint":{"text":"Apply strikethrough formatting to selection"},"$:/language/Buttons/Subscript/Caption":{"text":"subscript"},"$:/language/Buttons/Subscript/Hint":{"text":"Apply subscript formatting to selection"},"$:/language/Buttons/Superscript/Caption":{"text":"superscript"},"$:/language/Buttons/Superscript/Hint":{"text":"Apply superscript formatting to selection"},"$:/language/Buttons/ToggleSidebar/Hint":{"text":"Toggle the sidebar visibility"},"$:/language/Buttons/Transcludify/Caption":{"text":"transclusion"},"$:/language/Buttons/Transcludify/Hint":{"text":"Wrap selection in curly brackets"},"$:/language/Buttons/Underline/Caption":{"text":"underline"},"$:/language/Buttons/Underline/Hint":{"text":"Apply underline formatting to selection"},"$:/language/ControlPanel/Advanced/Caption":{"text":"Advanced"},"$:/language/ControlPanel/Advanced/Hint":{"text":"Internal information about this TiddlyWiki"},"$:/language/ControlPanel/Appearance/Caption":{"text":"Appearance"},"$:/language/ControlPanel/Appearance/Hint":{"text":"Ways to customise the appearance of your TiddlyWiki."},"$:/language/ControlPanel/Basics/AnimDuration/Prompt":{"text":"Animation duration"},"$:/language/ControlPanel/Basics/AutoFocus/Prompt":{"text":"Default focus field for new tiddlers"},"$:/language/ControlPanel/Basics/Caption":{"text":"Basics"},"$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint":{"text":"Use [[double square brackets]] for titles with spaces. Or you can choose to <$button set=\"$:/DefaultTiddlers\" setTo=\"[list[$:/StoryList]]\">retain story ordering</$button>"},"$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt":{"text":"Default tiddlers"},"$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint":{"text":"Choose which tiddlers are displayed at startup"},"$:/language/ControlPanel/Basics/Language/Prompt":{"text":"Hello! Current language:"},"$:/language/ControlPanel/Basics/NewJournal/Title/Prompt":{"text":"Title of new journal tiddlers"},"$:/language/ControlPanel/Basics/NewJournal/Text/Prompt":{"text":"Text for new journal tiddlers"},"$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt":{"text":"Tags for new journal tiddlers"},"$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt":{"text":"Title of new tiddlers"},"$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt":{"text":"Tags for new tiddlers"},"$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt":{"text":"Number of overridden shadow tiddlers"},"$:/language/ControlPanel/Basics/RemoveTags":{"text":"Update to current format"},"$:/language/ControlPanel/Basics/RemoveTags/Hint":{"text":"Update the tags configuration to the latest format"},"$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt":{"text":"Number of shadow tiddlers"},"$:/language/ControlPanel/Basics/Subtitle/Prompt":{"text":"Subtitle"},"$:/language/ControlPanel/Basics/SystemTiddlers/Prompt":{"text":"Number of system tiddlers"},"$:/language/ControlPanel/Basics/Tags/Prompt":{"text":"Number of tags"},"$:/language/ControlPanel/Basics/Tiddlers/Prompt":{"text":"Number of tiddlers"},"$:/language/ControlPanel/Basics/Title/Prompt":{"text":"Title of this ~TiddlyWiki"},"$:/language/ControlPanel/Basics/Username/Prompt":{"text":"Username for signing edits"},"$:/language/ControlPanel/Basics/Version/Prompt":{"text":"~TiddlyWiki version"},"$:/language/ControlPanel/EditorTypes/Caption":{"text":"Editor Types"},"$:/language/ControlPanel/EditorTypes/Editor/Caption":{"text":"Editor"},"$:/language/ControlPanel/EditorTypes/Hint":{"text":"These tiddlers determine which editor is used to edit specific tiddler types."},"$:/language/ControlPanel/EditorTypes/Type/Caption":{"text":"Type"},"$:/language/ControlPanel/Info/Caption":{"text":"Info"},"$:/language/ControlPanel/Info/Hint":{"text":"Information about this TiddlyWiki"},"$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt":{"text":"Type shortcut here"},"$:/language/ControlPanel/KeyboardShortcuts/Add/Caption":{"text":"add shortcut"},"$:/language/ControlPanel/KeyboardShortcuts/Caption":{"text":"Keyboard Shortcuts"},"$:/language/ControlPanel/KeyboardShortcuts/Hint":{"text":"Manage keyboard shortcut assignments"},"$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption":{"text":"No keyboard shortcuts assigned"},"$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint":{"text":"remove keyboard shortcut"},"$:/language/ControlPanel/KeyboardShortcuts/Platform/All":{"text":"All platforms"},"$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac":{"text":"Macintosh platform only"},"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac":{"text":"Non-Macintosh platforms only"},"$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux":{"text":"Linux platform only"},"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux":{"text":"Non-Linux platforms only"},"$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows":{"text":"Windows platform only"},"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows":{"text":"Non-Windows platforms only"},"$:/language/ControlPanel/LayoutSwitcher/Caption":{"text":"Layout"},"$:/language/ControlPanel/LoadedModules/Caption":{"text":"Loaded Modules"},"$:/language/ControlPanel/LoadedModules/Hint":{"text":"These are the currently loaded tiddler modules linked to their source tiddlers. Any italicised modules lack a source tiddler, typically because they were setup during the boot process."},"$:/language/ControlPanel/Palette/Caption":{"text":"Palette"},"$:/language/ControlPanel/Palette/Editor/Clone/Caption":{"text":"clone"},"$:/language/ControlPanel/Palette/Editor/Clone/Prompt":{"text":"It is recommended that you clone this shadow palette before editing it"},"$:/language/ControlPanel/Palette/Editor/Delete/Hint":{"text":"delete this entry from the current palette"},"$:/language/ControlPanel/Palette/Editor/Names/External/Show":{"text":"Show color names that are not part of the current palette"},"$:/language/ControlPanel/Palette/Editor/Prompt/Modified":{"text":"This shadow palette has been modified"},"$:/language/ControlPanel/Palette/Editor/Prompt":{"text":"Editing"},"$:/language/ControlPanel/Palette/Editor/Reset/Caption":{"text":"reset"},"$:/language/ControlPanel/Palette/HideEditor/Caption":{"text":"hide editor"},"$:/language/ControlPanel/Palette/Prompt":{"text":"Current palette:"},"$:/language/ControlPanel/Palette/ShowEditor/Caption":{"text":"show editor"},"$:/language/ControlPanel/Parsing/Caption":{"text":"Parsing"},"$:/language/ControlPanel/Parsing/Hint":{"text":"Here you can globally disable/enable wiki parser rules. For changes to take effect, save and reload your wiki. Disabling certain parser rules can prevent <$text text=\"TiddlyWiki\"/> from functioning correctly. Use [[safe mode|https://tiddlywiki.com/#SafeMode]] to restore normal operation."},"$:/language/ControlPanel/Parsing/Block/Caption":{"text":"Block Parse Rules"},"$:/language/ControlPanel/Parsing/Inline/Caption":{"text":"Inline Parse Rules"},"$:/language/ControlPanel/Parsing/Pragma/Caption":{"text":"Pragma Parse Rules"},"$:/language/ControlPanel/Plugins/Add/Caption":{"text":"Get more plugins"},"$:/language/ControlPanel/Plugins/Add/Hint":{"text":"Install plugins from the official library"},"$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint":{"text":"This plugin is already installed at version <$text text=<<installedVersion>>/>"},"$:/language/ControlPanel/Plugins/AlsoRequires":{"text":"Also requires:"},"$:/language/ControlPanel/Plugins/Caption":{"text":"Plugins"},"$:/language/ControlPanel/Plugins/Disable/Caption":{"text":"disable"},"$:/language/ControlPanel/Plugins/Disable/Hint":{"text":"Disable this plugin when reloading page"},"$:/language/ControlPanel/Plugins/Disabled/Status":{"text":"(disabled)"},"$:/language/ControlPanel/Plugins/Downgrade/Caption":{"text":"downgrade"},"$:/language/ControlPanel/Plugins/Empty/Hint":{"text":"None"},"$:/language/ControlPanel/Plugins/Enable/Caption":{"text":"enable"},"$:/language/ControlPanel/Plugins/Enable/Hint":{"text":"Enable this plugin when reloading page"},"$:/language/ControlPanel/Plugins/Install/Caption":{"text":"install"},"$:/language/ControlPanel/Plugins/Installed/Hint":{"text":"Currently installed plugins:"},"$:/language/ControlPanel/Plugins/Languages/Caption":{"text":"Languages"},"$:/language/ControlPanel/Plugins/Languages/Hint":{"text":"Language pack plugins"},"$:/language/ControlPanel/Plugins/NoInfoFound/Hint":{"text":"No ''\"<$text text=<<currentTab>>/>\"'' found"},"$:/language/ControlPanel/Plugins/NotInstalled/Hint":{"text":"This plugin is not currently installed"},"$:/language/ControlPanel/Plugins/OpenPluginLibrary":{"text":"open plugin library"},"$:/language/ControlPanel/Plugins/ClosePluginLibrary":{"text":"close plugin library"},"$:/language/ControlPanel/Plugins/PluginWillRequireReload":{"text":"(requires reload)"},"$:/language/ControlPanel/Plugins/Plugins/Caption":{"text":"Plugins"},"$:/language/ControlPanel/Plugins/Plugins/Hint":{"text":"Plugins"},"$:/language/ControlPanel/Plugins/Reinstall/Caption":{"text":"reinstall"},"$:/language/ControlPanel/Plugins/Themes/Caption":{"text":"Themes"},"$:/language/ControlPanel/Plugins/Themes/Hint":{"text":"Theme plugins"},"$:/language/ControlPanel/Plugins/Update/Caption":{"text":"update"},"$:/language/ControlPanel/Plugins/Updates/Caption":{"text":"Updates"},"$:/language/ControlPanel/Plugins/Updates/Hint":{"text":"Available updates to installed plugins"},"$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption":{"text":"Update <<update-count>> plugins"},"$:/language/ControlPanel/Plugins/SubPluginPrompt":{"text":"With <<count>> sub-plugins available"},"$:/language/ControlPanel/Saving/Caption":{"text":"Saving"},"$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description":{"text":"Permit automatic saving for the download saver"},"$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint":{"text":"Enable Autosave for Download Saver"},"$:/language/ControlPanel/Saving/DownloadSaver/Caption":{"text":"Download Saver"},"$:/language/ControlPanel/Saving/DownloadSaver/Hint":{"text":"These settings apply to the HTML5-compatible download saver"},"$:/language/ControlPanel/Saving/General/Caption":{"text":"General"},"$:/language/ControlPanel/Saving/General/Hint":{"text":"These settings apply to all the loaded savers"},"$:/language/ControlPanel/Saving/Hint":{"text":"Settings used for saving the entire TiddlyWiki as a single file via a saver module"},"$:/language/ControlPanel/Saving/GitService/Branch":{"text":"Target branch for saving"},"$:/language/ControlPanel/Saving/GitService/CommitMessage":{"text":"Saved by TiddlyWiki"},"$:/language/ControlPanel/Saving/GitService/Description":{"text":"These settings are only used when saving to <<service-name>>"},"$:/language/ControlPanel/Saving/GitService/Filename":{"text":"Filename of target file (e.g. `index.html`)"},"$:/language/ControlPanel/Saving/GitService/Path":{"text":"Path to target file (e.g. `/wiki/`)"},"$:/language/ControlPanel/Saving/GitService/Repo":{"text":"Target repository (e.g. `Jermolene/TiddlyWiki5`)"},"$:/language/ControlPanel/Saving/GitService/ServerURL":{"text":"Server API URL"},"$:/language/ControlPanel/Saving/GitService/UserName":{"text":"Username"},"$:/language/ControlPanel/Saving/GitService/GitHub/Caption":{"text":"~GitHub Saver"},"$:/language/ControlPanel/Saving/GitService/GitHub/Password":{"text":"Password, OAUTH token, or personal access token (see [[GitHub help page|https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line]] for details)"},"$:/language/ControlPanel/Saving/GitService/GitLab/Caption":{"text":"~GitLab Saver"},"$:/language/ControlPanel/Saving/GitService/GitLab/Password":{"text":"Personal access token for API (see [[GitLab help page|https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html]] for details)"},"$:/language/ControlPanel/Saving/GitService/Gitea/Caption":{"text":"Gitea Saver"},"$:/language/ControlPanel/Saving/GitService/Gitea/Password":{"text":"Personal access token for API (via Gitea’s web interface: `Settings | Applications | Generate New Token`)"},"$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading":{"text":"Advanced Settings"},"$:/language/ControlPanel/Saving/TiddlySpot/BackupDir":{"text":"Backup Directory"},"$:/language/ControlPanel/Saving/TiddlySpot/ControlPanel":{"text":"~TiddlySpot Control Panel"},"$:/language/ControlPanel/Saving/TiddlySpot/Backups":{"text":"Backups"},"$:/language/ControlPanel/Saving/TiddlySpot/Caption":{"text":"~TiddlySpot Saver"},"$:/language/ControlPanel/Saving/TiddlySpot/Description":{"text":"These settings are only used when saving to [[TiddlySpot|http://tiddlyspot.com]], [[TiddlyHost|https://tiddlyhost.com]], or a compatible remote server. See [[here|https://github.com/simonbaird/tiddlyhost/wiki/TiddlySpot-Saver-configuration-for-Tiddlyhost-and-Tiddlyspot]] for information on ~TiddlySpot and ~TiddlyHost saving configuration."},"$:/language/ControlPanel/Saving/TiddlySpot/Filename":{"text":"Upload Filename"},"$:/language/ControlPanel/Saving/TiddlySpot/Heading":{"text":"~TiddlySpot"},"$:/language/ControlPanel/Saving/TiddlySpot/Hint":{"text":"//The server URL defaults to `http://<wikiname>.tiddlyspot.com/store.cgi` and can be changed to use a custom server address, e.g. `http://example.com/store.php`.//"},"$:/language/ControlPanel/Saving/TiddlySpot/Password":{"text":"Password"},"$:/language/ControlPanel/Saving/TiddlySpot/ReadOnly":{"text":"Note that [[TiddlySpot|http://tiddlyspot.com]] no longer allows the creation of new sites. For new sites you can use [[TiddlyHost|https://tiddlyhost.com]], a new hosting service which replaces ~TiddlySpot."},"$:/language/ControlPanel/Saving/TiddlySpot/ServerURL":{"text":"Server URL"},"$:/language/ControlPanel/Saving/TiddlySpot/UploadDir":{"text":"Upload Directory"},"$:/language/ControlPanel/Saving/TiddlySpot/UserName":{"text":"Wiki Name"},"$:/language/ControlPanel/Settings/AutoSave/Caption":{"text":"Autosave"},"$:/language/ControlPanel/Settings/AutoSave/Disabled/Description":{"text":"Do not save changes automatically"},"$:/language/ControlPanel/Settings/AutoSave/Enabled/Description":{"text":"Save changes automatically"},"$:/language/ControlPanel/Settings/AutoSave/Hint":{"text":"Attempt to automatically save changes during editing when using a supporting saver"},"$:/language/ControlPanel/Settings/CamelCase/Caption":{"text":"Camel Case Wiki Links"},"$:/language/ControlPanel/Settings/CamelCase/Hint":{"text":"You can globally disable automatic linking of ~CamelCase phrases. Requires reload to take effect"},"$:/language/ControlPanel/Settings/CamelCase/Description":{"text":"Enable automatic ~CamelCase linking"},"$:/language/ControlPanel/Settings/Caption":{"text":"Settings"},"$:/language/ControlPanel/Settings/EditorToolbar/Caption":{"text":"Editor Toolbar"},"$:/language/ControlPanel/Settings/EditorToolbar/Hint":{"text":"Enable or disable the editor toolbar:"},"$:/language/ControlPanel/Settings/EditorToolbar/Description":{"text":"Show editor toolbar"},"$:/language/ControlPanel/Settings/InfoPanelMode/Caption":{"text":"Tiddler Info Panel Mode"},"$:/language/ControlPanel/Settings/InfoPanelMode/Hint":{"text":"Control when the tiddler info panel closes:"},"$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description":{"text":"Tiddler info panel closes automatically"},"$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description":{"text":"Tiddler info panel stays open until explicitly closed"},"$:/language/ControlPanel/Settings/Hint":{"text":"These settings let you customise the behaviour of TiddlyWiki."},"$:/language/ControlPanel/Settings/NavigationAddressBar/Caption":{"text":"Navigation Address Bar"},"$:/language/ControlPanel/Settings/NavigationAddressBar/Hint":{"text":"Behaviour of the browser address bar when navigating to a tiddler:"},"$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description":{"text":"Do not update the address bar"},"$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description":{"text":"Include the target tiddler"},"$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description":{"text":"Include the target tiddler and the current story sequence"},"$:/language/ControlPanel/Settings/NavigationHistory/Caption":{"text":"Navigation History"},"$:/language/ControlPanel/Settings/NavigationHistory/Hint":{"text":"Update browser history when navigating to a tiddler:"},"$:/language/ControlPanel/Settings/NavigationHistory/No/Description":{"text":"Do not update history"},"$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description":{"text":"Update history"},"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption":{"text":"Permalink/permaview Mode"},"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint":{"text":"Choose how permalink/permaview is handled:"},"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description":{"text":"Copy permalink/permaview URL to clipboard"},"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description":{"text":"Update address bar with permalink/permaview URL"},"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption":{"text":"Performance Instrumentation"},"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint":{"text":"Displays performance statistics in the browser developer console. Requires reload to take effect"},"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description":{"text":"Enable performance instrumentation"},"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption":{"text":"Toolbar Button Style"},"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint":{"text":"Choose the style for toolbar buttons:"},"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless":{"text":"Borderless"},"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed":{"text":"Boxed"},"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded":{"text":"Rounded"},"$:/language/ControlPanel/Settings/ToolbarButtons/Caption":{"text":"Toolbar Buttons"},"$:/language/ControlPanel/Settings/ToolbarButtons/Hint":{"text":"Default toolbar button appearance:"},"$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description":{"text":"Include icon"},"$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description":{"text":"Include text"},"$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption":{"text":"Default Sidebar Tab"},"$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint":{"text":"Specify which sidebar tab is displayed by default"},"$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption":{"text":"Default More Sidebar Tab"},"$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint":{"text":"Specify which More sidebar tab is displayed by default"},"$:/language/ControlPanel/Settings/LinkToBehaviour/Caption":{"text":"Tiddler Opening Behaviour"},"$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint":{"text":"Navigation from //within// the story river"},"$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint":{"text":"Navigation from //outside// the story river"},"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove":{"text":"Open above the current tiddler"},"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow":{"text":"Open below the current tiddler"},"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop":{"text":"Open at the top of the story river"},"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom":{"text":"Open at the bottom of the story river"},"$:/language/ControlPanel/Settings/TitleLinks/Caption":{"text":"Tiddler Titles"},"$:/language/ControlPanel/Settings/TitleLinks/Hint":{"text":"Optionally display tiddler titles as links"},"$:/language/ControlPanel/Settings/TitleLinks/No/Description":{"text":"Do not display tiddler titles as links"},"$:/language/ControlPanel/Settings/TitleLinks/Yes/Description":{"text":"Display tiddler titles as links"},"$:/language/ControlPanel/Settings/MissingLinks/Caption":{"text":"Wiki Links"},"$:/language/ControlPanel/Settings/MissingLinks/Hint":{"text":"Choose whether to link to tiddlers that do not exist yet"},"$:/language/ControlPanel/Settings/MissingLinks/Description":{"text":"Enable links to missing tiddlers"},"$:/language/ControlPanel/StoryView/Caption":{"text":"Story View"},"$:/language/ControlPanel/StoryView/Prompt":{"text":"Current view:"},"$:/language/ControlPanel/Stylesheets/Caption":{"text":"Stylesheets"},"$:/language/ControlPanel/Stylesheets/Expand/Caption":{"text":"Expand All"},"$:/language/ControlPanel/Stylesheets/Hint":{"text":"This is the rendered CSS of the current stylesheet tiddlers tagged with <<tag \"$:/tags/Stylesheet\">>"},"$:/language/ControlPanel/Stylesheets/Restore/Caption":{"text":"Restore"},"$:/language/ControlPanel/Theme/Caption":{"text":"Theme"},"$:/language/ControlPanel/Theme/Prompt":{"text":"Current theme:"},"$:/language/ControlPanel/TiddlerFields/Caption":{"text":"Tiddler Fields"},"$:/language/ControlPanel/TiddlerFields/Hint":{"text":"This is the full set of TiddlerFields in use in this wiki (including system tiddlers but excluding shadow tiddlers)."},"$:/language/ControlPanel/Toolbars/Caption":{"text":"Toolbars"},"$:/language/ControlPanel/Toolbars/EditToolbar/Caption":{"text":"Edit Toolbar"},"$:/language/ControlPanel/Toolbars/EditToolbar/Hint":{"text":"Choose which buttons are displayed for tiddlers in edit mode. Drag and drop to change the ordering"},"$:/language/ControlPanel/Toolbars/Hint":{"text":"Select which toolbar buttons are displayed"},"$:/language/ControlPanel/Toolbars/PageControls/Caption":{"text":"Page Toolbar"},"$:/language/ControlPanel/Toolbars/PageControls/Hint":{"text":"Choose which buttons are displayed on the main page toolbar. Drag and drop to change the ordering"},"$:/language/ControlPanel/Toolbars/EditorToolbar/Caption":{"text":"Editor Toolbar"},"$:/language/ControlPanel/Toolbars/EditorToolbar/Hint":{"text":"Choose which buttons are displayed in the editor toolbar. Note that some buttons will only appear when editing tiddlers of a certain type. Drag and drop to change the ordering"},"$:/language/ControlPanel/Toolbars/ViewToolbar/Caption":{"text":"View Toolbar"},"$:/language/ControlPanel/Toolbars/ViewToolbar/Hint":{"text":"Choose which buttons are displayed for tiddlers in view mode. Drag and drop to change the ordering"},"$:/language/ControlPanel/Tools/Download/Full/Caption":{"text":"Download full wiki"},"$:/language/Date/DaySuffix/1":{"text":"st"},"$:/language/Date/DaySuffix/2":{"text":"nd"},"$:/language/Date/DaySuffix/3":{"text":"rd"},"$:/language/Date/DaySuffix/4":{"text":"th"},"$:/language/Date/DaySuffix/5":{"text":"th"},"$:/language/Date/DaySuffix/6":{"text":"th"},"$:/language/Date/DaySuffix/7":{"text":"th"},"$:/language/Date/DaySuffix/8":{"text":"th"},"$:/language/Date/DaySuffix/9":{"text":"th"},"$:/language/Date/DaySuffix/10":{"text":"th"},"$:/language/Date/DaySuffix/11":{"text":"th"},"$:/language/Date/DaySuffix/12":{"text":"th"},"$:/language/Date/DaySuffix/13":{"text":"th"},"$:/language/Date/DaySuffix/14":{"text":"th"},"$:/language/Date/DaySuffix/15":{"text":"th"},"$:/language/Date/DaySuffix/16":{"text":"th"},"$:/language/Date/DaySuffix/17":{"text":"th"},"$:/language/Date/DaySuffix/18":{"text":"th"},"$:/language/Date/DaySuffix/19":{"text":"th"},"$:/language/Date/DaySuffix/20":{"text":"th"},"$:/language/Date/DaySuffix/21":{"text":"st"},"$:/language/Date/DaySuffix/22":{"text":"nd"},"$:/language/Date/DaySuffix/23":{"text":"rd"},"$:/language/Date/DaySuffix/24":{"text":"th"},"$:/language/Date/DaySuffix/25":{"text":"th"},"$:/language/Date/DaySuffix/26":{"text":"th"},"$:/language/Date/DaySuffix/27":{"text":"th"},"$:/language/Date/DaySuffix/28":{"text":"th"},"$:/language/Date/DaySuffix/29":{"text":"th"},"$:/language/Date/DaySuffix/30":{"text":"th"},"$:/language/Date/DaySuffix/31":{"text":"st"},"$:/language/Date/Long/Day/0":{"text":"Sunday"},"$:/language/Date/Long/Day/1":{"text":"Monday"},"$:/language/Date/Long/Day/2":{"text":"Tuesday"},"$:/language/Date/Long/Day/3":{"text":"Wednesday"},"$:/language/Date/Long/Day/4":{"text":"Thursday"},"$:/language/Date/Long/Day/5":{"text":"Friday"},"$:/language/Date/Long/Day/6":{"text":"Saturday"},"$:/language/Date/Long/Month/1":{"text":"January"},"$:/language/Date/Long/Month/2":{"text":"February"},"$:/language/Date/Long/Month/3":{"text":"March"},"$:/language/Date/Long/Month/4":{"text":"April"},"$:/language/Date/Long/Month/5":{"text":"May"},"$:/language/Date/Long/Month/6":{"text":"June"},"$:/language/Date/Long/Month/7":{"text":"July"},"$:/language/Date/Long/Month/8":{"text":"August"},"$:/language/Date/Long/Month/9":{"text":"September"},"$:/language/Date/Long/Month/10":{"text":"October"},"$:/language/Date/Long/Month/11":{"text":"November"},"$:/language/Date/Long/Month/12":{"text":"December"},"$:/language/Date/Period/am":{"text":"am"},"$:/language/Date/Period/pm":{"text":"pm"},"$:/language/Date/Short/Day/0":{"text":"Sun"},"$:/language/Date/Short/Day/1":{"text":"Mon"},"$:/language/Date/Short/Day/2":{"text":"Tue"},"$:/language/Date/Short/Day/3":{"text":"Wed"},"$:/language/Date/Short/Day/4":{"text":"Thu"},"$:/language/Date/Short/Day/5":{"text":"Fri"},"$:/language/Date/Short/Day/6":{"text":"Sat"},"$:/language/Date/Short/Month/1":{"text":"Jan"},"$:/language/Date/Short/Month/2":{"text":"Feb"},"$:/language/Date/Short/Month/3":{"text":"Mar"},"$:/language/Date/Short/Month/4":{"text":"Apr"},"$:/language/Date/Short/Month/5":{"text":"May"},"$:/language/Date/Short/Month/6":{"text":"Jun"},"$:/language/Date/Short/Month/7":{"text":"Jul"},"$:/language/Date/Short/Month/8":{"text":"Aug"},"$:/language/Date/Short/Month/9":{"text":"Sep"},"$:/language/Date/Short/Month/10":{"text":"Oct"},"$:/language/Date/Short/Month/11":{"text":"Nov"},"$:/language/Date/Short/Month/12":{"text":"Dec"},"$:/language/RelativeDate/Future/Days":{"text":"<<period>> days from now"},"$:/language/RelativeDate/Future/Hours":{"text":"<<period>> hours from now"},"$:/language/RelativeDate/Future/Minutes":{"text":"<<period>> minutes from now"},"$:/language/RelativeDate/Future/Months":{"text":"<<period>> months from now"},"$:/language/RelativeDate/Future/Second":{"text":"1 second from now"},"$:/language/RelativeDate/Future/Seconds":{"text":"<<period>> seconds from now"},"$:/language/RelativeDate/Future/Years":{"text":"<<period>> years from now"},"$:/language/RelativeDate/Past/Days":{"text":"<<period>> days ago"},"$:/language/RelativeDate/Past/Hours":{"text":"<<period>> hours ago"},"$:/language/RelativeDate/Past/Minutes":{"text":"<<period>> minutes ago"},"$:/language/RelativeDate/Past/Months":{"text":"<<period>> months ago"},"$:/language/RelativeDate/Past/Second":{"text":"1 second ago"},"$:/language/RelativeDate/Past/Seconds":{"text":"<<period>> seconds ago"},"$:/language/RelativeDate/Past/Years":{"text":"<<period>> years ago"},"$:/language/Docs/ModuleTypes/allfilteroperator":{"text":"A sub-operator for the ''all'' filter operator."},"$:/language/Docs/ModuleTypes/animation":{"text":"Animations that may be used with the RevealWidget."},"$:/language/Docs/ModuleTypes/authenticator":{"text":"Defines how requests are authenticated by the built-in HTTP server."},"$:/language/Docs/ModuleTypes/bitmapeditoroperation":{"text":"A bitmap editor toolbar operation."},"$:/language/Docs/ModuleTypes/command":{"text":"Commands that can be executed under Node.js."},"$:/language/Docs/ModuleTypes/config":{"text":"Data to be inserted into `$tw.config`."},"$:/language/Docs/ModuleTypes/filteroperator":{"text":"Individual filter operator methods."},"$:/language/Docs/ModuleTypes/global":{"text":"Global data to be inserted into `$tw`."},"$:/language/Docs/ModuleTypes/info":{"text":"Publishes system information via the [[$:/temp/info-plugin]] pseudo-plugin."},"$:/language/Docs/ModuleTypes/isfilteroperator":{"text":"Operands for the ''is'' filter operator."},"$:/language/Docs/ModuleTypes/library":{"text":"Generic module type for general purpose JavaScript modules."},"$:/language/Docs/ModuleTypes/macro":{"text":"JavaScript macro definitions."},"$:/language/Docs/ModuleTypes/parser":{"text":"Parsers for different content types."},"$:/language/Docs/ModuleTypes/route":{"text":"Defines how individual URL patterns are handled by the built-in HTTP server."},"$:/language/Docs/ModuleTypes/saver":{"text":"Savers handle different methods for saving files from the browser."},"$:/language/Docs/ModuleTypes/startup":{"text":"Startup functions."},"$:/language/Docs/ModuleTypes/storyview":{"text":"Story views customise the animation and behaviour of list widgets."},"$:/language/Docs/ModuleTypes/texteditoroperation":{"text":"A text editor toolbar operation."},"$:/language/Docs/ModuleTypes/tiddlerdeserializer":{"text":"Converts different content types into tiddlers."},"$:/language/Docs/ModuleTypes/tiddlerfield":{"text":"Defines the behaviour of an individual tiddler field."},"$:/language/Docs/ModuleTypes/tiddlermethod":{"text":"Adds methods to the `$tw.Tiddler` prototype."},"$:/language/Docs/ModuleTypes/upgrader":{"text":"Applies upgrade processing to tiddlers during an upgrade/import."},"$:/language/Docs/ModuleTypes/utils":{"text":"Adds methods to `$tw.utils`."},"$:/language/Docs/ModuleTypes/utils-browser":{"text":"Adds browser-specific methods to `$tw.utils`."},"$:/language/Docs/ModuleTypes/utils-node":{"text":"Adds Node.js-specific methods to `$tw.utils`."},"$:/language/Docs/ModuleTypes/widget":{"text":"Widgets encapsulate DOM rendering and refreshing."},"$:/language/Docs/ModuleTypes/wikimethod":{"text":"Adds methods to `$tw.Wiki`."},"$:/language/Docs/ModuleTypes/wikirule":{"text":"Individual parser rules for the main WikiText parser."},"$:/language/Docs/PaletteColours/alert-background":{"text":"Alert background"},"$:/language/Docs/PaletteColours/alert-border":{"text":"Alert border"},"$:/language/Docs/PaletteColours/alert-highlight":{"text":"Alert highlight"},"$:/language/Docs/PaletteColours/alert-muted-foreground":{"text":"Alert muted foreground"},"$:/language/Docs/PaletteColours/background":{"text":"General background"},"$:/language/Docs/PaletteColours/blockquote-bar":{"text":"Blockquote bar"},"$:/language/Docs/PaletteColours/button-background":{"text":"Default button background"},"$:/language/Docs/PaletteColours/button-border":{"text":"Default button border"},"$:/language/Docs/PaletteColours/button-foreground":{"text":"Default button foreground"},"$:/language/Docs/PaletteColours/dirty-indicator":{"text":"Unsaved changes indicator"},"$:/language/Docs/PaletteColours/code-background":{"text":"Code background"},"$:/language/Docs/PaletteColours/code-border":{"text":"Code border"},"$:/language/Docs/PaletteColours/code-foreground":{"text":"Code foreground"},"$:/language/Docs/PaletteColours/download-background":{"text":"Download button background"},"$:/language/Docs/PaletteColours/download-foreground":{"text":"Download button foreground"},"$:/language/Docs/PaletteColours/dragger-background":{"text":"Dragger background"},"$:/language/Docs/PaletteColours/dragger-foreground":{"text":"Dragger foreground"},"$:/language/Docs/PaletteColours/dropdown-background":{"text":"Dropdown background"},"$:/language/Docs/PaletteColours/dropdown-border":{"text":"Dropdown border"},"$:/language/Docs/PaletteColours/dropdown-tab-background-selected":{"text":"Dropdown tab background for selected tabs"},"$:/language/Docs/PaletteColours/dropdown-tab-background":{"text":"Dropdown tab background"},"$:/language/Docs/PaletteColours/dropzone-background":{"text":"Dropzone background"},"$:/language/Docs/PaletteColours/external-link-background-hover":{"text":"External link background hover"},"$:/language/Docs/PaletteColours/external-link-background-visited":{"text":"External link background visited"},"$:/language/Docs/PaletteColours/external-link-background":{"text":"External link background"},"$:/language/Docs/PaletteColours/external-link-foreground-hover":{"text":"External link foreground hover"},"$:/language/Docs/PaletteColours/external-link-foreground-visited":{"text":"External link foreground visited"},"$:/language/Docs/PaletteColours/external-link-foreground":{"text":"External link foreground"},"$:/language/Docs/PaletteColours/foreground":{"text":"General foreground"},"$:/language/Docs/PaletteColours/menubar-background":{"text":"Menu bar background"},"$:/language/Docs/PaletteColours/menubar-foreground":{"text":"Menu bar foreground"},"$:/language/Docs/PaletteColours/message-background":{"text":"Message box background"},"$:/language/Docs/PaletteColours/message-border":{"text":"Message box border"},"$:/language/Docs/PaletteColours/message-foreground":{"text":"Message box foreground"},"$:/language/Docs/PaletteColours/modal-backdrop":{"text":"Modal backdrop"},"$:/language/Docs/PaletteColours/modal-background":{"text":"Modal background"},"$:/language/Docs/PaletteColours/modal-border":{"text":"Modal border"},"$:/language/Docs/PaletteColours/modal-footer-background":{"text":"Modal footer background"},"$:/language/Docs/PaletteColours/modal-footer-border":{"text":"Modal footer border"},"$:/language/Docs/PaletteColours/modal-header-border":{"text":"Modal header border"},"$:/language/Docs/PaletteColours/muted-foreground":{"text":"General muted foreground"},"$:/language/Docs/PaletteColours/notification-background":{"text":"Notification background"},"$:/language/Docs/PaletteColours/notification-border":{"text":"Notification border"},"$:/language/Docs/PaletteColours/page-background":{"text":"Page background"},"$:/language/Docs/PaletteColours/pre-background":{"text":"Preformatted code background"},"$:/language/Docs/PaletteColours/pre-border":{"text":"Preformatted code border"},"$:/language/Docs/PaletteColours/primary":{"text":"General primary"},"$:/language/Docs/PaletteColours/select-tag-background":{"text":"`<select>` element background"},"$:/language/Docs/PaletteColours/select-tag-foreground":{"text":"`<select>` element text"},"$:/language/Docs/PaletteColours/sidebar-button-foreground":{"text":"Sidebar button foreground"},"$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover":{"text":"Sidebar controls foreground hover"},"$:/language/Docs/PaletteColours/sidebar-controls-foreground":{"text":"Sidebar controls foreground"},"$:/language/Docs/PaletteColours/sidebar-foreground-shadow":{"text":"Sidebar foreground shadow"},"$:/language/Docs/PaletteColours/sidebar-foreground":{"text":"Sidebar foreground"},"$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover":{"text":"Sidebar muted foreground hover"},"$:/language/Docs/PaletteColours/sidebar-muted-foreground":{"text":"Sidebar muted foreground"},"$:/language/Docs/PaletteColours/sidebar-tab-background-selected":{"text":"Sidebar tab background for selected tabs"},"$:/language/Docs/PaletteColours/sidebar-tab-background":{"text":"Sidebar tab background"},"$:/language/Docs/PaletteColours/sidebar-tab-border-selected":{"text":"Sidebar tab border for selected tabs"},"$:/language/Docs/PaletteColours/sidebar-tab-border":{"text":"Sidebar tab border"},"$:/language/Docs/PaletteColours/sidebar-tab-divider":{"text":"Sidebar tab divider"},"$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected":{"text":"Sidebar tab foreground for selected tabs"},"$:/language/Docs/PaletteColours/sidebar-tab-foreground":{"text":"Sidebar tab foreground"},"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover":{"text":"Sidebar tiddler link foreground hover"},"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground":{"text":"Sidebar tiddler link foreground"},"$:/language/Docs/PaletteColours/site-title-foreground":{"text":"Site title foreground"},"$:/language/Docs/PaletteColours/static-alert-foreground":{"text":"Static alert foreground"},"$:/language/Docs/PaletteColours/tab-background-selected":{"text":"Tab background for selected tabs"},"$:/language/Docs/PaletteColours/tab-background":{"text":"Tab background"},"$:/language/Docs/PaletteColours/tab-border-selected":{"text":"Tab border for selected tabs"},"$:/language/Docs/PaletteColours/tab-border":{"text":"Tab border"},"$:/language/Docs/PaletteColours/tab-divider":{"text":"Tab divider"},"$:/language/Docs/PaletteColours/tab-foreground-selected":{"text":"Tab foreground for selected tabs"},"$:/language/Docs/PaletteColours/tab-foreground":{"text":"Tab foreground"},"$:/language/Docs/PaletteColours/table-border":{"text":"Table border"},"$:/language/Docs/PaletteColours/table-footer-background":{"text":"Table footer background"},"$:/language/Docs/PaletteColours/table-header-background":{"text":"Table header background"},"$:/language/Docs/PaletteColours/tag-background":{"text":"Tag background"},"$:/language/Docs/PaletteColours/tag-foreground":{"text":"Tag foreground"},"$:/language/Docs/PaletteColours/tiddler-background":{"text":"Tiddler background"},"$:/language/Docs/PaletteColours/tiddler-border":{"text":"Tiddler border"},"$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover":{"text":"Tiddler controls foreground hover"},"$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected":{"text":"Tiddler controls foreground for selected controls"},"$:/language/Docs/PaletteColours/tiddler-controls-foreground":{"text":"Tiddler controls foreground"},"$:/language/Docs/PaletteColours/tiddler-editor-background":{"text":"Tiddler editor background"},"$:/language/Docs/PaletteColours/tiddler-editor-border-image":{"text":"Tiddler editor border image"},"$:/language/Docs/PaletteColours/tiddler-editor-border":{"text":"Tiddler editor border"},"$:/language/Docs/PaletteColours/tiddler-editor-fields-even":{"text":"Tiddler editor background for even fields"},"$:/language/Docs/PaletteColours/tiddler-editor-fields-odd":{"text":"Tiddler editor background for odd fields"},"$:/language/Docs/PaletteColours/tiddler-info-background":{"text":"Tiddler info panel background"},"$:/language/Docs/PaletteColours/tiddler-info-border":{"text":"Tiddler info panel border"},"$:/language/Docs/PaletteColours/tiddler-info-tab-background":{"text":"Tiddler info panel tab background"},"$:/language/Docs/PaletteColours/tiddler-link-background":{"text":"Tiddler link background"},"$:/language/Docs/PaletteColours/tiddler-link-foreground":{"text":"Tiddler link foreground"},"$:/language/Docs/PaletteColours/tiddler-subtitle-foreground":{"text":"Tiddler subtitle foreground"},"$:/language/Docs/PaletteColours/tiddler-title-foreground":{"text":"Tiddler title foreground"},"$:/language/Docs/PaletteColours/toolbar-new-button":{"text":"Toolbar 'new tiddler' button foreground"},"$:/language/Docs/PaletteColours/toolbar-options-button":{"text":"Toolbar 'options' button foreground"},"$:/language/Docs/PaletteColours/toolbar-save-button":{"text":"Toolbar 'save' button foreground"},"$:/language/Docs/PaletteColours/toolbar-info-button":{"text":"Toolbar 'info' button foreground"},"$:/language/Docs/PaletteColours/toolbar-edit-button":{"text":"Toolbar 'edit' button foreground"},"$:/language/Docs/PaletteColours/toolbar-close-button":{"text":"Toolbar 'close' button foreground"},"$:/language/Docs/PaletteColours/toolbar-delete-button":{"text":"Toolbar 'delete' button foreground"},"$:/language/Docs/PaletteColours/toolbar-cancel-button":{"text":"Toolbar 'cancel' button foreground"},"$:/language/Docs/PaletteColours/toolbar-done-button":{"text":"Toolbar 'done' button foreground"},"$:/language/Docs/PaletteColours/untagged-background":{"text":"Untagged pill background"},"$:/language/Docs/PaletteColours/very-muted-foreground":{"text":"Very muted foreground"},"$:/language/EditTemplate/Body/External/Hint":{"text":"This tiddler shows content stored outside of the main TiddlyWiki file. You can edit the tags and fields but cannot directly edit the content itself"},"$:/language/EditTemplate/Body/Placeholder":{"text":"Type the text for this tiddler"},"$:/language/EditTemplate/Body/Preview/Type/Output":{"text":"output"},"$:/language/EditTemplate/Field/Remove/Caption":{"text":"remove field"},"$:/language/EditTemplate/Field/Remove/Hint":{"text":"Remove field"},"$:/language/EditTemplate/Field/Dropdown/Caption":{"text":"field list"},"$:/language/EditTemplate/Field/Dropdown/Hint":{"text":"Show field list"},"$:/language/EditTemplate/Fields/Add/Button":{"text":"add"},"$:/language/EditTemplate/Fields/Add/Button/Hint":{"text":"Add the new field to the tiddler"},"$:/language/EditTemplate/Fields/Add/Name/Placeholder":{"text":"field name"},"$:/language/EditTemplate/Fields/Add/Prompt":{"text":"Add a new field:"},"$:/language/EditTemplate/Fields/Add/Value/Placeholder":{"text":"field value"},"$:/language/EditTemplate/Fields/Add/Dropdown/System":{"text":"System fields"},"$:/language/EditTemplate/Fields/Add/Dropdown/User":{"text":"User fields"},"$:/language/EditTemplate/Shadow/Warning":{"text":"This is a shadow tiddler. Any changes you make will override the default version from the plugin <<pluginLink>>"},"$:/language/EditTemplate/Shadow/OverriddenWarning":{"text":"This is a modified shadow tiddler. You can revert to the default version in the plugin <<pluginLink>> by deleting this tiddler"},"$:/language/EditTemplate/Tags/Add/Button":{"text":"add"},"$:/language/EditTemplate/Tags/Add/Button/Hint":{"text":"add tag"},"$:/language/EditTemplate/Tags/Add/Placeholder":{"text":"tag name"},"$:/language/EditTemplate/Tags/ClearInput/Caption":{"text":"clear input"},"$:/language/EditTemplate/Tags/ClearInput/Hint":{"text":"Clear tag input"},"$:/language/EditTemplate/Tags/Dropdown/Caption":{"text":"tag list"},"$:/language/EditTemplate/Tags/Dropdown/Hint":{"text":"Show tag list"},"$:/language/EditTemplate/Title/BadCharacterWarning":{"text":"Warning: avoid using any of the characters <<bad-chars>> in tiddler titles"},"$:/language/EditTemplate/Title/Exists/Prompt":{"text":"Target tiddler already exists"},"$:/language/EditTemplate/Title/Relink/Prompt":{"text":"Update ''<$text text=<<fromTitle>>/>'' to ''<$text text=<<toTitle>>/>'' in the //tags// and //list// fields of other tiddlers"},"$:/language/EditTemplate/Title/References/Prompt":{"text":"The following references to this tiddler will not be automatically updated:"},"$:/language/EditTemplate/Type/Dropdown/Caption":{"text":"content type list"},"$:/language/EditTemplate/Type/Dropdown/Hint":{"text":"Show content type list"},"$:/language/EditTemplate/Type/Delete/Caption":{"text":"delete content type"},"$:/language/EditTemplate/Type/Delete/Hint":{"text":"Delete content type"},"$:/language/EditTemplate/Type/Placeholder":{"text":"content type"},"$:/language/EditTemplate/Type/Prompt":{"text":"Type:"},"$:/language/Exporters/StaticRiver":{"text":"Static HTML"},"$:/language/Exporters/JsonFile":{"text":"JSON file"},"$:/language/Exporters/CsvFile":{"text":"CSV file"},"$:/language/Exporters/TidFile":{"text":"\".tid\" file"},"$:/language/Docs/Fields/_canonical_uri":{"text":"The full URI of an external image tiddler"},"$:/language/Docs/Fields/bag":{"text":"The name of the bag from which a tiddler came"},"$:/language/Docs/Fields/caption":{"text":"The text to be displayed on a tab or button"},"$:/language/Docs/Fields/color":{"text":"The CSS color value associated with a tiddler"},"$:/language/Docs/Fields/component":{"text":"The name of the component responsible for an [[alert tiddler|AlertMechanism]]"},"$:/language/Docs/Fields/current-tiddler":{"text":"Used to cache the top tiddler in a [[history list|HistoryMechanism]]"},"$:/language/Docs/Fields/created":{"text":"The date a tiddler was created"},"$:/language/Docs/Fields/creator":{"text":"The name of the person who created a tiddler"},"$:/language/Docs/Fields/dependents":{"text":"For a plugin, lists the dependent plugin titles"},"$:/language/Docs/Fields/description":{"text":"The descriptive text for a plugin, or a modal dialogue"},"$:/language/Docs/Fields/draft.of":{"text":"For draft tiddlers, contains the title of the tiddler of which this is a draft"},"$:/language/Docs/Fields/draft.title":{"text":"For draft tiddlers, contains the proposed new title of the tiddler"},"$:/language/Docs/Fields/footer":{"text":"The footer text for a wizard"},"$:/language/Docs/Fields/hide-body":{"text":"The view template will hide bodies of tiddlers if set to: ''yes''"},"$:/language/Docs/Fields/icon":{"text":"The title of the tiddler containing the icon associated with a tiddler"},"$:/language/Docs/Fields/library":{"text":"Indicates that a tiddler should be saved as a JavaScript library if set to: ''yes''"},"$:/language/Docs/Fields/list":{"text":"An ordered list of tiddler titles associated with a tiddler"},"$:/language/Docs/Fields/list-before":{"text":"If set, the title of a tiddler before which this tiddler should be added to the ordered list of tiddler titles, or at the start of the list if this field is present but empty"},"$:/language/Docs/Fields/list-after":{"text":"If set, the title of the tiddler after which this tiddler should be added to the ordered list of tiddler titles, or at the end of the list if this field is present but empty"},"$:/language/Docs/Fields/modified":{"text":"The date and time at which a tiddler was last modified"},"$:/language/Docs/Fields/modifier":{"text":"The tiddler title associated with the person who last modified a tiddler"},"$:/language/Docs/Fields/name":{"text":"The human readable name associated with a plugin tiddler"},"$:/language/Docs/Fields/plugin-priority":{"text":"A numerical value indicating the priority of a plugin tiddler"},"$:/language/Docs/Fields/plugin-type":{"text":"The type of plugin in a plugin tiddler"},"$:/language/Docs/Fields/revision":{"text":"The revision of the tiddler held at the server"},"$:/language/Docs/Fields/released":{"text":"Date of a TiddlyWiki release"},"$:/language/Docs/Fields/source":{"text":"The source URL associated with a tiddler"},"$:/language/Docs/Fields/subtitle":{"text":"The subtitle text for a wizard"},"$:/language/Docs/Fields/tags":{"text":"A list of tags associated with a tiddler"},"$:/language/Docs/Fields/text":{"text":"The body text of a tiddler"},"$:/language/Docs/Fields/throttle.refresh":{"text":"If present, throttles refreshes of this tiddler"},"$:/language/Docs/Fields/title":{"text":"The unique name of a tiddler"},"$:/language/Docs/Fields/toc-link":{"text":"Suppresses the tiddler's link in a Table of Contents tree if set to: ''no''"},"$:/language/Docs/Fields/type":{"text":"The content type of a tiddler"},"$:/language/Docs/Fields/version":{"text":"Version information for a plugin"},"$:/language/Docs/Fields/_is_skinny":{"text":"If present, indicates that the tiddler text field must be loaded from the server"},"$:/language/Filters/AllTiddlers":{"text":"All tiddlers except system tiddlers"},"$:/language/Filters/RecentSystemTiddlers":{"text":"Recently modified tiddlers, including system tiddlers"},"$:/language/Filters/RecentTiddlers":{"text":"Recently modified tiddlers"},"$:/language/Filters/AllTags":{"text":"All tags except system tags"},"$:/language/Filters/Missing":{"text":"Missing tiddlers"},"$:/language/Filters/Drafts":{"text":"Draft tiddlers"},"$:/language/Filters/Orphans":{"text":"Orphan tiddlers"},"$:/language/Filters/SystemTiddlers":{"text":"System tiddlers"},"$:/language/Filters/ShadowTiddlers":{"text":"Shadow tiddlers"},"$:/language/Filters/OverriddenShadowTiddlers":{"text":"Overridden shadow tiddlers"},"$:/language/Filters/SessionTiddlers":{"text":"Tiddlers modified since the wiki was loaded"},"$:/language/Filters/SystemTags":{"text":"System tags"},"$:/language/Filters/StoryList":{"text":"Tiddlers in the story river, excluding <$text text=\"$:/AdvancedSearch\"/>"},"$:/language/Filters/TypedTiddlers":{"text":"Non wiki-text tiddlers"},"GettingStarted":{"text":"\\define lingo-base() $:/language/ControlPanel/Basics/\nWelcome to ~TiddlyWiki and the ~TiddlyWiki community\n\nBefore you start storing important information in ~TiddlyWiki it is vital to make sure that you can reliably save changes. See https://tiddlywiki.com/#GettingStarted for details\n\n!! Set up this ~TiddlyWiki\n\n<div class=\"tc-control-panel\">\n\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n</div>\n\nSee the [[control panel|$:/ControlPanel]] for more options.\n"},"$:/language/Help/build":{"description":"Automatically run configured commands","text":"Build the specified build targets for the current wiki. If no build targets are specified then all available targets will be built.\n\n```\n--build <target> [<target> ...]\n```\n\nBuild targets are defined in the `tiddlywiki.info` file of a wiki folder.\n\n"},"$:/language/Help/clearpassword":{"description":"Clear a password for subsequent crypto operations","text":"Clear the password for subsequent crypto operations\n\n```\n--clearpassword\n```\n"},"$:/language/Help/default":{"text":"\\define commandTitle()\n$:/language/Help/$(command)$\n\\end\n```\nusage: tiddlywiki [<wikifolder>] [--<command> [<args>...]...]\n```\n\nAvailable commands:\n\n<ul>\n<$list filter=\"[commands[]sort[title]]\" variable=\"command\">\n<li><$link to=<<commandTitle>>><$macrocall $name=\"command\" $type=\"text/plain\" $output=\"text/plain\"/></$link>: <$transclude tiddler=<<commandTitle>> field=\"description\"/></li>\n</$list>\n</ul>\n\nTo get detailed help on a command:\n\n```\ntiddlywiki --help <command>\n```\n"},"$:/language/Help/deletetiddlers":{"description":"Deletes a group of tiddlers","text":"<<.from-version \"5.1.20\">> Deletes a group of tiddlers identified by a filter.\n\n```\n--deletetiddlers <filter>\n```\n"},"$:/language/Help/editions":{"description":"Lists the available editions of TiddlyWiki","text":"Lists the names and descriptions of the available editions. You can create a new wiki of a specified edition with the `--init` command.\n\n```\n--editions\n```\n"},"$:/language/Help/fetch":{"description":"Fetch tiddlers from wiki by URL","text":"Fetch one or more files over HTTP/HTTPS, and import the tiddlers matching a filter, optionally transforming the incoming titles.\n\n```\n--fetch file <url> <import-filter> <transform-filter>\n--fetch files <url-filter> <import-filter> <transform-filter>\n--fetch raw-file <url> <transform-filter>\n--fetch raw-files <url-filter> <transform-filter>\n```\n\nThe \"file\" and \"files\" variants fetch the specified files and attempt to import the tiddlers within them (the same processing as if the files were dragged into the browser window). The \"raw-file\" and \"raw-files\" variants fetch the specified files and then store the raw file data in tiddlers, without applying the import logic.\n\nWith the \"file\" and \"raw-file\" variants only a single file is fetched and the first parameter is the URL of the file to read.\n\nWith the \"files\" and \"raw-files\" variants, multiple files are fetched and the first parameter is a filter yielding a list of URLs of the files to read. For example, given a set of tiddlers tagged \"remote-server\" that have a field \"url\" the filter `[tag[remote-server]get[url]]` will retrieve all the available URLs.\n\nFor the \"file\" and \"files\" variants, the `<import-filter>` parameter specifies a filter determining which tiddlers are imported. It defaults to `[all[tiddlers]]` if not provided.\n\nFor all variants, the `<transform-filter>` parameter specifies an optional filter that transforms the titles of the imported tiddlers. For example, `[addprefix[$:/myimports/]]` would add the prefix `$:/myimports/` to each title.\n\nPreceding the `--fetch` command with `--verbose` will output progress information during the import.\n\nNote that TiddlyWiki will not fetch an older version of an already loaded plugin.\n\nThe following example retrieves all the non-system tiddlers from https://tiddlywiki.com and saves them to a JSON file:\n\n```\ntiddlywiki --verbose --fetch file \"https://tiddlywiki.com/\" \"[!is[system]]\" \"\" --rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[!is[system]]\"\n```\n\nThe following example retrieves the \"favicon\" file from tiddlywiki.com and saves it in a file called \"output.ico\". Note that the intermediate tiddler \"Icon Tiddler\" is quoted in the \"--fetch\" command because it is being used as a transformation filter to replace the default title, while there are no quotes for the \"--savetiddler\" command because it is being used directly as a title.\n\n```\ntiddlywiki --verbose --fetch raw-file \"https://tiddlywiki.com/favicon.ico\" \"[[Icon Tiddler]]\" --savetiddler \"Icon Tiddler\" output.ico\n```\n\n"},"$:/language/Help/help":{"description":"Display help for TiddlyWiki commands","text":"Displays help text for a command:\n\n```\n--help [<command>]\n```\n\nIf the command name is omitted then a list of available commands is displayed.\n"},"$:/language/Help/import":{"description":"Import tiddlers from a file","text":"Import tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The deserializer must be explicitly specified, unlike the `load` command which infers the deserializer from the file extension.\n\n```\n--import <filepath> <deserializer> [<title>] [<encoding>]\n```\n\nThe deserializers in the core include:\n\n* application/javascript\n* application/json\n* application/x-tiddler\n* application/x-tiddler-html-div\n* application/x-tiddlers\n* text/html\n* text/plain\n\nThe title of the imported tiddler defaults to the filename.\n\nThe encoding defaults to \"utf8\", but can be \"base64\" for importing binary files.\n\nNote that TiddlyWiki will not import an older version of an already loaded plugin.\n"},"$:/language/Help/init":{"description":"Initialise a new wiki folder","text":"Initialise an empty [[WikiFolder|WikiFolders]] with a copy of the specified edition.\n\n```\n--init <edition> [<edition> ...]\n```\n\nFor example:\n\n```\ntiddlywiki ./MyWikiFolder --init empty\n```\n\nNote:\n\n* The wiki folder directory will be created if necessary\n* The \"edition\" defaults to ''empty''\n* The init command will fail if the wiki folder is not empty\n* The init command removes any `includeWikis` definitions in the edition's `tiddlywiki.info` file\n* When multiple editions are specified, editions initialised later will overwrite any files shared with earlier editions (so, the final `tiddlywiki.info` file will be copied from the last edition)\n* `--editions` returns a list of available editions\n"},"$:/language/Help/listen":{"description":"Provides an HTTP server interface to TiddlyWiki","text":"Serves a wiki over HTTP.\n\nThe listen command uses NamedCommandParameters:\n\n```\n--listen [<name>=<value>]...\n```\n\nAll parameters are optional with safe defaults, and can be specified in any order. The recognised parameters are:\n\n* ''host'' - optional hostname to serve from (defaults to \"127.0.0.1\" aka \"localhost\")\n* ''path-prefix'' - optional prefix for paths\n* ''port'' - port number on which to listen; non-numeric values are interpreted as a system environment variable from which the port number is extracted (defaults to \"8080\")\n* ''credentials'' - pathname of credentials CSV file (relative to wiki folder)\n* ''anon-username'' - the username for signing edits for anonymous users\n* ''username'' - optional username for basic authentication\n* ''password'' - optional password for basic authentication\n* ''authenticated-user-header'' - optional name of header to be used for trusted authentication\n* ''readers'' - comma separated list of principals allowed to read from this wiki\n* ''writers'' - comma separated list of principals allowed to write to this wiki\n* ''csrf-disable'' - set to \"yes\" to disable CSRF checks (defaults to \"no\")\n* ''sse-enabled'' - set to \"yes\" to enable Server-sent events (defaults to \"no\")\n* ''root-tiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\")\n* ''root-render-type'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''root-serve-type'' - the content type with which the root tiddler should be served (defaults to \"text/html\")\n* ''tls-cert'' - pathname of TLS certificate file (relative to wiki folder)\n* ''tls-key'' - pathname of TLS key file (relative to wiki folder)\n* ''debug-level'' - optional debug level; set to \"debug\" to view request details (defaults to \"none\")\n* ''gzip'' - set to \"yes\" to enable gzip compression for some http endpoints (defaults to \"no\")\n\nFor information on opening up your instance to the entire local network, and possible security concerns, see the WebServer tiddler at TiddlyWiki.com.\n\n"},"$:/language/Help/load":{"description":"Load tiddlers from a file","text":"Load tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The processing applied to incoming files is determined by the file extension. Use the alternative `import` command if you need to specify the deserializer and encoding explicitly.\n\n```\n--load <filepath> [noerror]\n--load <dirpath> [noerror]\n```\n\nBy default, the load command raises an error if no tiddlers are found. The error can be suppressed by providing the optional \"noerror\" parameter.\n\nTo load tiddlers from an encrypted TiddlyWiki file you should first specify the password with the PasswordCommand. For example:\n\n```\ntiddlywiki ./MyWiki --password pa55w0rd --load my_encrypted_wiki.html\n```\n\nNote that TiddlyWiki will not load an older version of an already loaded plugin.\n"},"$:/language/Help/makelibrary":{"description":"Construct library plugin required by upgrade process","text":"Constructs the `$:/UpgradeLibrary` tiddler for the upgrade process.\n\nThe upgrade library is formatted as an ordinary plugin tiddler with the plugin type `library`. It contains a copy of each of the plugins, themes and language packs available within the TiddlyWiki5 repository.\n\nThis command is intended for internal use; it is only relevant to users constructing a custom upgrade procedure.\n\n```\n--makelibrary <title>\n```\n\nThe title argument defaults to `$:/UpgradeLibrary`.\n"},"$:/language/Help/notfound":{"text":"No such help item"},"$:/language/Help/output":{"description":"Set the base output directory for subsequent commands","text":"Sets the base output directory for subsequent commands. The default output directory is the `output` subdirectory of the edition directory.\n\n```\n--output <pathname>\n```\n\nIf the specified pathname is relative then it is resolved relative to the current working directory. For example `--output .` sets the output directory to the current working directory.\n\n"},"$:/language/Help/password":{"description":"Set a password for subsequent crypto operations","text":"Set a password for subsequent crypto operations\n\n```\n--password <password>\n```\n\n''Note'': This should not be used for serving TiddlyWiki with password protection. Instead, see the password option under the [[ServerCommand]].\n"},"$:/language/Help/render":{"description":"Renders individual tiddlers to files","text":"Render individual tiddlers identified by a filter and save the results to the specified files.\n\nOptionally, the title of a template tiddler can be specified. In this case, instead of directly rendering each tiddler, the template tiddler is rendered with the \"currentTiddler\" variable set to the title of the tiddler that is being rendered.\n\nA name and value for an additional variable may optionally also be specified.\n\n```\n--render <tiddler-filter> [<filename-filter>] [<render-type>] [<template>] [ [<name>] [<value>] ]*\n```\n\n* ''tiddler-filter'': A filter identifying the tiddler(s) to be rendered\n* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]addsuffix[.html]]`, which uses the unchanged tiddler title as the filename\n* ''render-type'': Optional render type: `text/html` (the default) returns the full HTML text and `text/plain` just returns the text content (ie it ignores HTML tags and other unprintable material)\n* ''template'': Optional template through which each tiddler is rendered\n* ''name'': Name of optional variables\n* ''value'': Value of optional variables\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nNotes:\n\n* The output directory is not cleared of any existing files\n* Any missing directories in the path to the filename are automatically created.\n* When referring to a tiddler with spaces in its title, take care to use both the quotes required by your shell and also TiddlyWiki's double square brackets : `--render \"[[Motovun Jack.jpg]]\"`\n* The filename filter is evaluated with the selected items being set to the title of the tiddler currently being rendered, allowing the title to be used as the basis for computing the filename. For example `[encodeuricomponent[]addprefix[static/]]` applies URI encoding to each title, and then adds the prefix `static/`\n* Multiple ''name''/''value'' pairs can be used to pass more than one variable\n* The `--render` command is a more flexible replacement for both the `--rendertiddler` and `--rendertiddlers` commands, which are deprecated\n\nExamples:\n\n* `--render \"[!is[system]]\" \"[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]\"` -- renders all non-system tiddlers as files in the subdirectory \"tiddlers\" with URL-encoded titles and the extension HTML\n\n"},"$:/language/Help/rendertiddler":{"description":"Render an individual tiddler as a specified ContentType","text":"(Note: The `--rendertiddler` command is deprecated in favour of the new, more flexible `--render` command)\n\nRender an individual tiddler as a specified ContentType, defaulting to `text/html` and save it to the specified filename.\n\nOptionally the title of a template tiddler can be specified, in which case the template tiddler is rendered with the \"currentTiddler\" variable set to the tiddler that is being rendered (the first parameter value).\n\nA name and value for an additional variable may optionally also be specified.\n\n```\n--rendertiddler <title> <filename> [<type>] [<template>] [<name>] [<value>]\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n\nFor example, the following command saves all tiddlers matching the filter `[tag[done]]` to a JSON file titled `output.json` by employing the core template `$:/core/templates/exporters/JsonFile`.\n\n```\n--rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[tag[done]]\"\n```\n"},"$:/language/Help/rendertiddlers":{"description":"Render tiddlers matching a filter to a specified ContentType","text":"(Note: The `--rendertiddlers` command is deprecated in favour of the new, more flexible `--render` command)\n\nRender a set of tiddlers matching a filter to separate files of a specified ContentType (defaults to `text/html`) and extension (defaults to `.html`).\n\n```\n--rendertiddlers '<filter>' <template> <pathname> [<type>] [<extension>] [\"noclean\"]\n```\n\nFor example:\n\n```\n--rendertiddlers '[!is[system]]' $:/core/templates/static.tiddler.html ./static text/plain\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny files in the target directory are deleted unless the ''noclean'' flag is specified. The target directory is recursively created if it is missing.\n"},"$:/language/Help/save":{"description":"Saves individual raw tiddlers to files","text":"Saves individual tiddlers identified by a filter in their raw text or binary format to the specified files.\n\n```\n--save <tiddler-filter> <filename-filter>\n```\n\n* ''tiddler-filter'': A filter identifying the tiddler(s) to be saved\n* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]]`, which uses the unchanged tiddler title as the filename\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nNotes:\n\n* The output directory is not cleared of any existing files\n* Any missing directories in the path to the filename are automatically created.\n* When saving a tiddler with spaces in its title, take care to use both the quotes required by your shell and also TiddlyWiki's double square brackets : `--save \"[[Motovun Jack.jpg]]\"`\n* The filename filter is evaluated with the selected items being set to the title of the tiddler currently being saved, allowing the title to be used as the basis for computing the filename. For example `[encodeuricomponent[]addprefix[static/]]` applies URI encoding to each title, and then adds the prefix `static/`\n* The `--save` command is a more flexible replacement for both the `--savetiddler` and `--savetiddlers` commands, which are deprecated\n\nExamples:\n\n* `--save \"[!is[system]is[image]]\" \"[encodeuricomponent[]addprefix[tiddlers/]]\"` -- saves all non-system image tiddlers as files in the subdirectory \"tiddlers\" with URL-encoded titles\n"},"$:/language/Help/savetiddler":{"description":"Saves a raw tiddler to a file","text":"(Note: The `--savetiddler` command is deprecated in favour of the new, more flexible `--save` command)\n\nSaves an individual tiddler in its raw text or binary format to the specified filename.\n\n```\n--savetiddler <title> <filename>\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n"},"$:/language/Help/savetiddlers":{"description":"Saves a group of raw tiddlers to a directory","text":"(Note: The `--savetiddlers` command is deprecated in favour of the new, more flexible `--save` command)\n\nSaves a group of tiddlers in their raw text or binary format to the specified directory.\n\n```\n--savetiddlers <filter> <pathname> [\"noclean\"]\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nThe output directory is cleared of existing files before saving the specified files. The deletion can be disabled by specifying the ''noclean'' flag.\n\nAny missing directories in the pathname are automatically created.\n"},"$:/language/Help/savewikifolder":{"description":"Saves a wiki to a new wiki folder","text":"<<.from-version \"5.1.20\">> Saves the current wiki as a wiki folder, including tiddlers, plugins and configuration:\n\n```\n--savewikifolder <wikifolderpath> [<filter>]\n```\n\n* The target wiki folder must be empty or non-existent\n* The filter specifies which tiddlers should be included. It is optional, defaulting to `[all[tiddlers]]`\n* Plugins from the official plugin library are replaced with references to those plugins in the `tiddlywiki.info` file\n* Custom plugins are unpacked into their own folder\n\nA common usage is to convert a TiddlyWiki HTML file into a wiki folder:\n\n```\ntiddlywiki --load ./mywiki.html --savewikifolder ./mywikifolder\n```\n"},"$:/language/Help/server":{"description":"Provides an HTTP server interface to TiddlyWiki (deprecated in favour of the new listen command)","text":"Legacy command to serve a wiki over HTTP.\n\n```\n--server <port> <root-tiddler> <root-render-type> <root-serve-type> <username> <password> <host> <path-prefix> <debug-level>\n```\n\nThe parameters are:\n\n* ''port'' - port number on which to listen; non-numeric values are interpreted as a system environment variable from which the port number is extracted (defaults to \"8080\")\n* ''root-tiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\")\n* ''root-render-type'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''root-serve-type'' - the content type with which the root tiddler should be served (defaults to \"text/html\")\n* ''username'' - the default username for signing edits\n* ''password'' - optional password for basic authentication\n* ''host'' - optional hostname to serve from (defaults to \"127.0.0.1\" aka \"localhost\")\n* ''path-prefix'' - optional prefix for paths\n* ''debug-level'' - optional debug level; set to \"debug\" to view request details (defaults to \"none\")\n\nIf the password parameter is specified then the browser will prompt the user for the username and password. Note that the password is transmitted in plain text so this implementation should only be used on a trusted network or over HTTPS.\n\nFor example:\n\n```\n--server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n\nThe username and password can be specified as empty strings if you need to set the hostname or pathprefix and don't want to require a password.\n\n\n```\n--server 8080 $:/core/save/all text/plain text/html \"\" \"\" 192.168.0.245\n```\n\nUsing an address like this exposes your system to the local network. For information on opening up your instance to the entire local network, and possible security concerns, see the WebServer tiddler at TiddlyWiki.com.\n\nTo run multiple TiddlyWiki servers at the same time you'll need to put each one on a different port. It can be useful to use an environment variable to pass the port number to the Node.js process. This example references an environment variable called \"MY_PORT_NUMBER\":\n\n```\n--server MY_PORT_NUMBER $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n"},"$:/language/Help/setfield":{"description":"Prepares external tiddlers for use","text":"//Note that this command is experimental and may change or be replaced before being finalised//\n\nSets the specified field of a group of tiddlers to the result of wikifying a template tiddler with the `currentTiddler` variable set to the tiddler.\n\n```\n--setfield <filter> <fieldname> <templatetitle> <rendertype>\n```\n\nThe parameters are:\n\n* ''filter'' - filter identifying the tiddlers to be affected\n* ''fieldname'' - the field to modify (defaults to \"text\")\n* ''templatetitle'' - the tiddler to wikify into the specified field. If blank or missing then the specified field is deleted\n* ''rendertype'' - the text type to render (defaults to \"text/plain\"; \"text/html\" can be used to include HTML tags)\n"},"$:/language/Help/unpackplugin":{"description":"Unpack the payload tiddlers from a plugin","text":"Extract the payload tiddlers from a plugin, creating them as ordinary tiddlers:\n\n```\n--unpackplugin <title>\n```\n"},"$:/language/Help/verbose":{"description":"Triggers verbose output mode","text":"Triggers verbose output, useful for debugging\n\n```\n--verbose\n```\n"},"$:/language/Help/version":{"description":"Displays the version number of TiddlyWiki","text":"Displays the version number of TiddlyWiki.\n\n```\n--version\n```\n"},"$:/language/Import/Imported/Hint":{"text":"The following tiddlers were imported:"},"$:/language/Import/Listing/Cancel/Caption":{"text":"Cancel"},"$:/language/Import/Listing/Hint":{"text":"These tiddlers are ready to import:"},"$:/language/Import/Listing/Import/Caption":{"text":"Import"},"$:/language/Import/Listing/Select/Caption":{"text":"Select"},"$:/language/Import/Listing/Status/Caption":{"text":"Status"},"$:/language/Import/Listing/Title/Caption":{"text":"Title"},"$:/language/Import/Listing/Preview":{"text":"Preview:"},"$:/language/Import/Listing/Preview/Text":{"text":"Text"},"$:/language/Import/Listing/Preview/TextRaw":{"text":"Text (Raw)"},"$:/language/Import/Listing/Preview/Fields":{"text":"Fields"},"$:/language/Import/Listing/Preview/Diff":{"text":"Diff"},"$:/language/Import/Listing/Preview/DiffFields":{"text":"Diff (Fields)"},"$:/language/Import/Listing/Rename/Tooltip":{"text":"Rename tiddler before importing"},"$:/language/Import/Listing/Rename/Prompt":{"text":"Rename to:"},"$:/language/Import/Listing/Rename/ConfirmRename":{"text":"Rename tiddler"},"$:/language/Import/Listing/Rename/CancelRename":{"text":"Cancel"},"$:/language/Import/Listing/Rename/OverwriteWarning":{"text":"A tiddler with this title already exists."},"$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible":{"text":"Blocked incompatible or obsolete plugin."},"$:/language/Import/Upgrader/Plugins/Suppressed/Version":{"text":"Blocked plugin (due to incoming <<incoming>> not being newer than existing <<existing>>)."},"$:/language/Import/Upgrader/Plugins/Upgraded":{"text":"Upgraded plugin from <<incoming>> to <<upgraded>>."},"$:/language/Import/Upgrader/State/Suppressed":{"text":"Blocked temporary state tiddler."},"$:/language/Import/Upgrader/System/Suppressed":{"text":"Blocked system tiddler."},"$:/language/Import/Upgrader/System/Warning":{"text":"Core module tiddler."},"$:/language/Import/Upgrader/System/Alert":{"text":"You are about to import a tiddler that will overwrite a core module tiddler. This is not recommended as it may make the system unstable."},"$:/language/Import/Upgrader/ThemeTweaks/Created":{"text":"Migrated theme tweak from <$text text=<<from>>/>."},"$:/language/AboveStory/ClassicPlugin/Warning":{"text":"It looks like you are trying to load a plugin designed for ~TiddlyWiki Classic. Please note that [[these plugins do not work with TiddlyWiki version 5.x.x|https://tiddlywiki.com/#TiddlyWikiClassic]]. ~TiddlyWiki Classic plugins detected:"},"$:/language/BinaryWarning/Prompt":{"text":"This tiddler contains binary data"},"$:/language/ClassicWarning/Hint":{"text":"This tiddler is written in TiddlyWiki Classic wiki text format, which is not fully compatible with TiddlyWiki version 5. See https://tiddlywiki.com/static/Upgrading.html for more details."},"$:/language/ClassicWarning/Upgrade/Caption":{"text":"upgrade"},"$:/language/CloseAll/Button":{"text":"close all"},"$:/language/ColourPicker/Recent":{"text":"Recent:"},"$:/language/ConfirmCancelTiddler":{"text":"Do you wish to discard changes to the tiddler \"<$text text=<<title>>/>\"?"},"$:/language/ConfirmDeleteTiddler":{"text":"Do you wish to delete the tiddler \"<$text text=<<title>>/>\"?"},"$:/language/ConfirmOverwriteTiddler":{"text":"Do you wish to overwrite the tiddler \"<$text text=<<title>>/>\"?"},"$:/language/ConfirmEditShadowTiddler":{"text":"You are about to edit a ShadowTiddler. Any changes will override the default system making future upgrades non-trivial. Are you sure you want to edit \"<$text text=<<title>>/>\"?"},"$:/language/ConfirmAction":{"text":"Do you wish to proceed?"},"$:/language/Count":{"text":"count"},"$:/language/DefaultNewTiddlerTitle":{"text":"New Tiddler"},"$:/language/Diffs/CountMessage":{"text":"<<diff-count>> differences"},"$:/language/DropMessage":{"text":"Drop here (or use the 'Escape' key to cancel)"},"$:/language/Encryption/Cancel":{"text":"Cancel"},"$:/language/Encryption/ConfirmClearPassword":{"text":"Do you wish to clear the password? This will remove the encryption applied when saving this wiki"},"$:/language/Encryption/PromptSetPassword":{"text":"Set a new password for this TiddlyWiki"},"$:/language/Encryption/Username":{"text":"Username"},"$:/language/Encryption/Password":{"text":"Password"},"$:/language/Encryption/RepeatPassword":{"text":"Repeat password"},"$:/language/Encryption/PasswordNoMatch":{"text":"Passwords do not match"},"$:/language/Encryption/SetPassword":{"text":"Set password"},"$:/language/Error/Caption":{"text":"Error"},"$:/language/Error/EditConflict":{"text":"File changed on server"},"$:/language/Error/Filter":{"text":"Filter error"},"$:/language/Error/FilterSyntax":{"text":"Syntax error in filter expression"},"$:/language/Error/FilterRunPrefix":{"text":"Filter Error: Unknown prefix for filter run"},"$:/language/Error/IsFilterOperator":{"text":"Filter Error: Unknown operand for the 'is' filter operator"},"$:/language/Error/FormatFilterOperator":{"text":"Filter Error: Unknown suffix for the 'format' filter operator"},"$:/language/Error/LoadingPluginLibrary":{"text":"Error loading plugin library"},"$:/language/Error/NetworkErrorAlert":{"text":"`<h2>''Network Error''</h2>It looks like the connection to the server has been lost. This may indicate a problem with your network connection. Please attempt to restore network connectivity before continuing.<br><br>''Any unsaved changes will be automatically synchronised when connectivity is restored''.`"},"$:/language/Error/RecursiveTransclusion":{"text":"Recursive transclusion error in transclude widget"},"$:/language/Error/RetrievingSkinny":{"text":"Error retrieving skinny tiddler list"},"$:/language/Error/SavingToTWEdit":{"text":"Error saving to TWEdit"},"$:/language/Error/WhileSaving":{"text":"Error while saving"},"$:/language/Error/XMLHttpRequest":{"text":"XMLHttpRequest error code"},"$:/language/InternalJavaScriptError/Title":{"text":"Internal JavaScript Error"},"$:/language/InternalJavaScriptError/Hint":{"text":"Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser"},"$:/language/InvalidFieldName":{"text":"Illegal characters in field name \"<$text text=<<fieldName>>/>\". Fields can only contain lowercase letters, digits and the characters underscore (`_`), hyphen (`-`) and period (`.`)"},"$:/language/LayoutSwitcher/Description":{"text":"Open the layout switcher"},"$:/language/LazyLoadingWarning":{"text":"<p>Trying to load external content from ''<$text text={{!!_canonical_uri}}/>''</p><p>If this message doesn't disappear, either the tiddler content type doesn't match the type of the external content, or you may be using a browser that doesn't support external content for wikis loaded as standalone files. See https://tiddlywiki.com/#ExternalText</p>"},"$:/language/LoginToTiddlySpace":{"text":"Login to TiddlySpace"},"$:/language/Manager/Controls/FilterByTag/None":{"text":"(none)"},"$:/language/Manager/Controls/FilterByTag/Prompt":{"text":"Filter by tag:"},"$:/language/Manager/Controls/Order/Prompt":{"text":"Reverse order"},"$:/language/Manager/Controls/Search/Placeholder":{"text":"Search"},"$:/language/Manager/Controls/Search/Prompt":{"text":"Search:"},"$:/language/Manager/Controls/Show/Option/Tags":{"text":"tags"},"$:/language/Manager/Controls/Show/Option/Tiddlers":{"text":"tiddlers"},"$:/language/Manager/Controls/Show/Prompt":{"text":"Show:"},"$:/language/Manager/Controls/Sort/Prompt":{"text":"Sort by:"},"$:/language/Manager/Item/Colour":{"text":"Colour"},"$:/language/Manager/Item/Fields":{"text":"Fields"},"$:/language/Manager/Item/Icon/None":{"text":"(none)"},"$:/language/Manager/Item/Icon":{"text":"Icon"},"$:/language/Manager/Item/RawText":{"text":"Raw text"},"$:/language/Manager/Item/Tags":{"text":"Tags"},"$:/language/Manager/Item/Tools":{"text":"Tools"},"$:/language/Manager/Item/WikifiedText":{"text":"Wikified text"},"$:/language/MissingTiddler/Hint":{"text":"Missing tiddler \"<$text text=<<currentTiddler>>/>\" -- click {{||$:/core/ui/Buttons/edit}} to create"},"$:/language/No":{"text":"No"},"$:/language/OfficialPluginLibrary":{"text":"Official ~TiddlyWiki Plugin Library"},"$:/language/OfficialPluginLibrary/Hint":{"text":"The official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team."},"$:/language/PageTemplate/Description":{"text":"the default ~TiddlyWiki layout"},"$:/language/PageTemplate/Name":{"text":"Default ~PageTemplate"},"$:/language/PluginReloadWarning":{"text":"Please save {{$:/core/ui/Buttons/save-wiki}} and reload {{$:/core/ui/Buttons/refresh}} to allow changes to ~JavaScript plugins to take effect"},"$:/language/RecentChanges/DateFormat":{"text":"DDth MMM YYYY"},"$:/language/Shortcuts/Input/AdvancedSearch/Hint":{"text":"Open the ~AdvancedSearch panel from within the sidebar search field"},"$:/language/Shortcuts/Input/Accept/Hint":{"text":"Accept the selected item"},"$:/language/Shortcuts/Input/AcceptVariant/Hint":{"text":"Accept the selected item (variant)"},"$:/language/Shortcuts/Input/Cancel/Hint":{"text":"Clear the input field"},"$:/language/Shortcuts/Input/Down/Hint":{"text":"Select the next item"},"$:/language/Shortcuts/Input/Tab-Left/Hint":{"text":"Select the previous Tab"},"$:/language/Shortcuts/Input/Tab-Right/Hint":{"text":"Select the next Tab"},"$:/language/Shortcuts/Input/Up/Hint":{"text":"Select the previous item"},"$:/language/Shortcuts/SidebarLayout/Hint":{"text":"Change the sidebar layout"},"$:/language/Switcher/Subtitle/theme":{"text":"Switch Theme"},"$:/language/Switcher/Subtitle/layout":{"text":"Switch Layout"},"$:/language/Switcher/Subtitle/language":{"text":"Switch Language"},"$:/language/Switcher/Subtitle/palette":{"text":"Switch Palette"},"$:/language/SystemTiddler/Tooltip":{"text":"This is a system tiddler"},"$:/language/SystemTiddlers/Include/Prompt":{"text":"Include system tiddlers"},"$:/language/TagManager/Colour/Heading":{"text":"Colour"},"$:/language/TagManager/Count/Heading":{"text":"Count"},"$:/language/TagManager/Icon/Heading":{"text":"Icon"},"$:/language/TagManager/Icons/None":{"text":"None"},"$:/language/TagManager/Info/Heading":{"text":"Info"},"$:/language/TagManager/Tag/Heading":{"text":"Tag"},"$:/language/Tiddler/DateFormat":{"text":"DDth MMM YYYY at hh12:0mmam"},"$:/language/UnsavedChangesWarning":{"text":"You have unsaved changes in TiddlyWiki"},"$:/language/Yes":{"text":"Yes"},"$:/language/Modals/Download":{"subtitle":"Download changes","footer":"<$button message=\"tm-close-tiddler\">Close</$button>","help":"https://tiddlywiki.com/static/DownloadingChanges.html","text":"Your browser only supports manual saving.\n\nTo save your modified wiki, right click on the download link below and select \"Download file\" or \"Save file\", and then choose the folder and filename.\n\n//You can marginally speed things up by clicking the link with the control key (Windows) or the options/alt key (Mac OS X). You will not be prompted for the folder or filename, but your browser is likely to give it an unrecognisable name -- you may need to rename the file to include an `.html` extension before you can do anything useful with it.//\n\nOn smartphones that do not allow files to be downloaded you can instead bookmark the link, and then sync your bookmarks to a desktop computer from where the wiki can be saved normally.\n"},"$:/language/Modals/SaveInstructions":{"subtitle":"Save your work","footer":"<$button message=\"tm-close-tiddler\">Close</$button>","help":"https://tiddlywiki.com/static/SavingChanges.html","text":"Your changes to this wiki need to be saved as a ~TiddlyWiki HTML file.\n\n!!! Desktop browsers\n\n# Select ''Save As'' from the ''File'' menu\n# Choose a filename and location\n#* Some browsers also require you to explicitly specify the file saving format as ''Webpage, HTML only'' or similar\n# Close this tab\n\n!!! Smartphone browsers\n\n# Create a bookmark to this page\n#* If you've got iCloud or Google Sync set up then the bookmark will automatically sync to your desktop where you can open it and save it as above\n# Close this tab\n\n//If you open the bookmark again in Mobile Safari you will see this message again. If you want to go ahead and use the file, just click the ''close'' button below//\n"},"$:/config/NewJournal/Title":{"text":"DDth MMM YYYY"},"$:/config/NewJournal/Text":{"text":""},"$:/config/NewJournal/Tags":{"text":"Journal\n"},"$:/language/Notifications/Save/Done":{"text":"Saved wiki"},"$:/language/Notifications/Save/Starting":{"text":"Starting to save wiki"},"$:/language/Notifications/CopiedToClipboard/Succeeded":{"text":"Copied to clipboard!"},"$:/language/Notifications/CopiedToClipboard/Failed":{"text":"Failed to copy to clipboard!"},"$:/language/Search/DefaultResults/Caption":{"text":"List"},"$:/language/Search/Filter/Caption":{"text":"Filter"},"$:/language/Search/Filter/Hint":{"text":"Search via a [[filter expression|https://tiddlywiki.com/static/Filters.html]]"},"$:/language/Search/Filter/Matches":{"text":"//<small><<resultCount>> matches</small>//"},"$:/language/Search/Matches":{"text":"//<small><<resultCount>> matches</small>//"},"$:/language/Search/Matches/All":{"text":"All matches:"},"$:/language/Search/Matches/Title":{"text":"Title matches:"},"$:/language/Search/Search":{"text":"Search"},"$:/language/Search/Search/TooShort":{"text":"Search text too short"},"$:/language/Search/Shadows/Caption":{"text":"Shadows"},"$:/language/Search/Shadows/Hint":{"text":"Search for shadow tiddlers"},"$:/language/Search/Shadows/Matches":{"text":"//<small><<resultCount>> matches</small>//"},"$:/language/Search/Standard/Caption":{"text":"Standard"},"$:/language/Search/Standard/Hint":{"text":"Search for standard tiddlers"},"$:/language/Search/Standard/Matches":{"text":"//<small><<resultCount>> matches</small>//"},"$:/language/Search/System/Caption":{"text":"System"},"$:/language/Search/System/Hint":{"text":"Search for system tiddlers"},"$:/language/Search/System/Matches":{"text":"//<small><<resultCount>> matches</small>//"},"$:/language/SideBar/All/Caption":{"text":"All"},"$:/language/SideBar/Contents/Caption":{"text":"Contents"},"$:/language/SideBar/Drafts/Caption":{"text":"Drafts"},"$:/language/SideBar/Explorer/Caption":{"text":"Explorer"},"$:/language/SideBar/Missing/Caption":{"text":"Missing"},"$:/language/SideBar/More/Caption":{"text":"More"},"$:/language/SideBar/Open/Caption":{"text":"Open"},"$:/language/SideBar/Orphans/Caption":{"text":"Orphans"},"$:/language/SideBar/Recent/Caption":{"text":"Recent"},"$:/language/SideBar/Shadows/Caption":{"text":"Shadows"},"$:/language/SideBar/System/Caption":{"text":"System"},"$:/language/SideBar/Tags/Caption":{"text":"Tags"},"$:/language/SideBar/Tags/Untagged/Caption":{"text":"untagged"},"$:/language/SideBar/Tools/Caption":{"text":"Tools"},"$:/language/SideBar/Types/Caption":{"text":"Types"},"$:/SiteSubtitle":{"text":"a non-linear personal web notebook"},"$:/SiteTitle":{"text":"My ~TiddlyWiki"},"$:/language/Snippets/ListByTag":{"tags":"$:/tags/TextEditor/Snippet","caption":"List of tiddlers by tag","text":"<<list-links \"[tag[task]sort[title]]\">>\n"},"$:/language/Snippets/MacroDefinition":{"tags":"$:/tags/TextEditor/Snippet","caption":"Macro definition","text":"\\define macroName(param1:\"default value\",param2)\nText of the macro\n\\end\n"},"$:/language/Snippets/Table4x3":{"tags":"$:/tags/TextEditor/Snippet","caption":"Table with 4 columns by 3 rows","text":"|! |!Alpha |!Beta |!Gamma |!Delta |\n|!One | | | | |\n|!Two | | | | |\n|!Three | | | | |\n"},"$:/language/Snippets/TableOfContents":{"tags":"$:/tags/TextEditor/Snippet","caption":"Table of Contents","text":"<div class=\"tc-table-of-contents\">\n\n<<toc-selective-expandable 'TableOfContents'>>\n\n</div>"},"$:/language/ThemeTweaks/ThemeTweaks":{"text":"Theme Tweaks"},"$:/language/ThemeTweaks/ThemeTweaks/Hint":{"text":"You can tweak certain aspects of the ''Vanilla'' theme."},"$:/language/ThemeTweaks/Options":{"text":"Options"},"$:/language/ThemeTweaks/Options/SidebarLayout":{"text":"Sidebar layout"},"$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid":{"text":"Fixed story, fluid sidebar"},"$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed":{"text":"Fluid story, fixed sidebar"},"$:/language/ThemeTweaks/Options/StickyTitles":{"text":"Sticky titles"},"$:/language/ThemeTweaks/Options/StickyTitles/Hint":{"text":"Causes tiddler titles to \"stick\" to the top of the browser window"},"$:/language/ThemeTweaks/Options/CodeWrapping":{"text":"Wrap long lines in code blocks"},"$:/language/ThemeTweaks/Settings":{"text":"Settings"},"$:/language/ThemeTweaks/Settings/FontFamily":{"text":"Font family"},"$:/language/ThemeTweaks/Settings/CodeFontFamily":{"text":"Code font family"},"$:/language/ThemeTweaks/Settings/EditorFontFamily":{"text":"Editor font family"},"$:/language/ThemeTweaks/Settings/BackgroundImage":{"text":"Page background image"},"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment":{"text":"Page background image attachment"},"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll":{"text":"Scroll with tiddlers"},"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed":{"text":"Fixed to window"},"$:/language/ThemeTweaks/Settings/BackgroundImageSize":{"text":"Page background image size"},"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto":{"text":"Auto"},"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover":{"text":"Cover"},"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain":{"text":"Contain"},"$:/language/ThemeTweaks/Metrics":{"text":"Sizes"},"$:/language/ThemeTweaks/Metrics/FontSize":{"text":"Font size"},"$:/language/ThemeTweaks/Metrics/LineHeight":{"text":"Line height"},"$:/language/ThemeTweaks/Metrics/BodyFontSize":{"text":"Font size for tiddler body"},"$:/language/ThemeTweaks/Metrics/BodyLineHeight":{"text":"Line height for tiddler body"},"$:/language/ThemeTweaks/Metrics/StoryLeft":{"text":"Story left position"},"$:/language/ThemeTweaks/Metrics/StoryLeft/Hint":{"text":"how far the left margin of the story river<br>(tiddler area) is from the left of the page"},"$:/language/ThemeTweaks/Metrics/StoryTop":{"text":"Story top position"},"$:/language/ThemeTweaks/Metrics/StoryTop/Hint":{"text":"how far the top margin of the story river<br>is from the top of the page"},"$:/language/ThemeTweaks/Metrics/StoryRight":{"text":"Story right"},"$:/language/ThemeTweaks/Metrics/StoryRight/Hint":{"text":"how far the left margin of the sidebar <br>is from the left of the page"},"$:/language/ThemeTweaks/Metrics/StoryWidth":{"text":"Story width"},"$:/language/ThemeTweaks/Metrics/StoryWidth/Hint":{"text":"the overall width of the story river"},"$:/language/ThemeTweaks/Metrics/TiddlerWidth":{"text":"Tiddler width"},"$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint":{"text":"within the story river"},"$:/language/ThemeTweaks/Metrics/SidebarBreakpoint":{"text":"Sidebar breakpoint"},"$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint":{"text":"the minimum page width at which the story<br>river and sidebar will appear side by side"},"$:/language/ThemeTweaks/Metrics/SidebarWidth":{"text":"Sidebar width"},"$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint":{"text":"the width of the sidebar in fluid-fixed layout"},"$:/language/TiddlerInfo/Advanced/Caption":{"text":"Advanced"},"$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint":{"text":"none"},"$:/language/TiddlerInfo/Advanced/PluginInfo/Heading":{"text":"Plugin Details"},"$:/language/TiddlerInfo/Advanced/PluginInfo/Hint":{"text":"This plugin contains the following shadow tiddlers:"},"$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading":{"text":"Shadow Status"},"$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint":{"text":"The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is not a shadow tiddler"},"$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint":{"text":"The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is a shadow tiddler"},"$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source":{"text":"It is defined in the plugin <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link>"},"$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint":{"text":"It is overridden by an ordinary tiddler"},"$:/language/TiddlerInfo/Fields/Caption":{"text":"Fields"},"$:/language/TiddlerInfo/List/Caption":{"text":"List"},"$:/language/TiddlerInfo/List/Empty":{"text":"This tiddler does not have a list"},"$:/language/TiddlerInfo/Listed/Caption":{"text":"Listed"},"$:/language/TiddlerInfo/Listed/Empty":{"text":"This tiddler is not listed by any others"},"$:/language/TiddlerInfo/References/Caption":{"text":"Backlinks"},"$:/language/TiddlerInfo/References/Empty":{"text":"No tiddlers link to this one"},"$:/language/TiddlerInfo/Tagging/Caption":{"text":"Tagging"},"$:/language/TiddlerInfo/Tagging/Empty":{"text":"No tiddlers are tagged with this one"},"$:/language/TiddlerInfo/Tools/Caption":{"text":"Tools"},"$:/language/Docs/Types/application/javascript":{"description":"JavaScript code","name":"application/javascript","group":"Developer","group-sort":"2"},"$:/language/Docs/Types/application/json":{"description":"JSON data","name":"application/json","group":"Developer","group-sort":"2"},"$:/language/Docs/Types/application/x-tiddler-dictionary":{"description":"Data dictionary","name":"application/x-tiddler-dictionary","group":"Developer","group-sort":"2"},"$:/language/Docs/Types/image/gif":{"description":"GIF image","name":"image/gif","group":"Image","group-sort":"1"},"$:/language/Docs/Types/image/jpeg":{"description":"JPEG image","name":"image/jpeg","group":"Image","group-sort":"1"},"$:/language/Docs/Types/image/png":{"description":"PNG image","name":"image/png","group":"Image","group-sort":"1"},"$:/language/Docs/Types/image/svg+xml":{"description":"Structured Vector Graphics image","name":"image/svg+xml","group":"Image","group-sort":"1"},"$:/language/Docs/Types/image/x-icon":{"description":"ICO format icon file","name":"image/x-icon","group":"Image","group-sort":"1"},"$:/language/Docs/Types/text/css":{"description":"Static stylesheet","name":"text/css","group":"Developer","group-sort":"2"},"$:/language/Docs/Types/text/html":{"description":"HTML markup","name":"text/html","group":"Text","group-sort":"0"},"$:/language/Docs/Types/text/plain":{"description":"Plain text","name":"text/plain","group":"Text","group-sort":"0"},"$:/language/Docs/Types/text/vnd.tiddlywiki":{"description":"TiddlyWiki 5","name":"text/vnd.tiddlywiki","group":"Text","group-sort":"0"},"$:/language/Docs/Types/text/x-tiddlywiki":{"description":"TiddlyWiki Classic","name":"text/x-tiddlywiki","group":"Text","group-sort":"0"},"$:/languages/en-GB/icon":{"type":"image/svg+xml","text":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 60 30\" width=\"1200\" height=\"600\">\n<clipPath id=\"t\">\n\t<path d=\"M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z\"/>\n</clipPath>\n<path d=\"M0,0 v30 h60 v-30 z\" fill=\"#00247d\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" stroke=\"#fff\" stroke-width=\"6\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" clip-path=\"url(#t)\" stroke=\"#cf142b\" stroke-width=\"4\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#fff\" stroke-width=\"10\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#cf142b\" stroke-width=\"6\"/>\n</svg>\n"},"$:/languages/en-GB":{"name":"en-GB","description":"English (British)","author":"JeremyRuston","core-version":">=5.0.0\"","text":"Stub pseudo-plugin for the default language"},"$:/core/modules/commander.js":{"text":"!function(){'use strict';function t(t,e,n,o){var s=require('path');this.commandTokens=t,this.nextToken=0,this.callback=e,this.wiki=n,this.streams=o,this.outputPath=s.resolve($tw.boot.wikiPath,$tw.config.wikiOutputSubDir)}t.prototype.log=function(t){this.verbose&&this.streams.output.write(t+'\\n')},t.prototype.write=function(t){this.verbose&&this.streams.output.write(t)},t.prototype.addCommandTokens=function(t){t=t.slice(0);t.unshift(0),t.unshift(this.nextToken),Array.prototype.splice.apply(this.commandTokens,t)},t.prototype.execute=function(){this.executeNextCommand()},t.prototype.executeNextCommand=function(){var e=this;if(this.nextToken>=this.commandTokens.length)this.callback(null);else{var t=this.commandTokens[this.nextToken++];if('--'!==t.substr(0,2))this.callback('Missing command: '+t);else{t=t.substr(2);for(var n=[];this.nextToken<this.commandTokens.length&&'--'!==this.commandTokens[this.nextToken].substr(0,2);)n.push(this.commandTokens[this.nextToken++]);var o,s=$tw.commands[t];if(s){if(this.verbose&&this.streams.output.write('Executing command: '+t+' '+n.join(' ')+'\\n'),s.info.namedParameterMode&&'string'==typeof(n=this.extractNamedParameters(n,s.info.mandatoryParameters)))return this.callback(n);s.info.synchronous?(o=new s.Command(n,this).execute())?this.callback(o):this.executeNextCommand():(o=new s.Command(n,this,function(t){t?e.callback(t):e.executeNextCommand()}).execute())&&this.callback(o)}else this.callback('Unknown command: '+t)}}},t.prototype.extractNamedParameters=function(t,e){e=e||[];var n=[],o=Object.create(null);return $tw.utils.each(t,function(t){var e=t.indexOf('=');e<1&&n.push('malformed named parameter: \\''+t+'\\''),o[t.slice(0,e)]=$tw.utils.trim(t.slice(e+1))}),$tw.utils.each(e,function(t){$tw.utils.hop(o,t)||n.push('missing mandatory parameter: \\''+t+'\\'')}),0<n.length?n.join(' and\\n'):o},t.initCommands=function(t){t=t||'command',$tw.commands={},$tw.modules.forEachModuleOfType(t,function(t,e){var n,o=$tw.commands[e.info.name]={};for(n in e)$tw.utils.hop(e,n)&&(o[n]=e[n])})},exports.Commander=t}();","type":"application/javascript","module-type":"global"},"$:/core/modules/commands/build.js":{"text":"!function(){'use strict';function t(t,n){this.params=t,this.commander=n}exports.info={name:'build',synchronous:!0},t.prototype.execute=function(){var t,n=$tw.boot.wikiInfo.build;if(!n)return'No build targets defined';t=0<this.params.length?this.params:Object.keys(n);for(var e=0;e<t.length;e++){var o=t[e],r=n[o];if(!r)return'Build target \\''+o+'\\' not found';this.commander.addCommandTokens(r)}return null},exports.Command=t}();","type":"application/javascript","module-type":"command"},"$:/core/modules/commands/clearpassword.js":{"text":"!function(){'use strict';function t(t,n,o){this.params=t,this.commander=n,this.callback=o}exports.info={name:'clearpassword',synchronous:!0},t.prototype.execute=function(){return $tw.crypto.setPassword(null),null},exports.Command=t}();","type":"application/javascript","module-type":"command"},"$:/core/modules/commands/deletetiddlers.js":{"text":"!function(){'use strict';function t(t,e,i){this.params=t,this.commander=e,this.callback=i}exports.info={name:'deletetiddlers',synchronous:!0},t.prototype.execute=function(){if(this.params.length<1)return'Missing filter';var e=this.commander.wiki,t=this.params[0],t=e.filterTiddlers(t);return $tw.utils.each(t,function(t){e.deleteTiddler(t)}),null},exports.Command=t}();","type":"application/javascript","module-type":"command"},"$:/core/modules/commands/editions.js":{"text":"!function(){'use strict';function t(t,n){this.params=t,this.commander=n}exports.info={name:'editions',synchronous:!0},t.prototype.execute=function(){var e=this;this.commander.streams.output.write('Available editions:\\n\\n');var t=$tw.utils.getEditionInfo();return $tw.utils.each(t,function(t,n){e.commander.streams.output.write(' '+n+': '+t.description+'\\n')}),this.commander.streams.output.write('\\n'),null},exports.Command=t}();","type":"application/javascript","module-type":"command"},"$:/core/modules/commands/fetch.js":{"text":"!function(){'use strict';function t(t,r,e){this.params=t,this.commander=r,this.callback=e}exports.info={name:'fetch',synchronous:!1},t.prototype.execute=function(){if(this.params.length<2)return'Missing subcommand and url';switch(this.params[0]){case'raw-file':return this.fetchFiles({raw:!0,url:this.params[1],transformFilter:this.params[2]||'',callback:this.callback});case'file':return this.fetchFiles({url:this.params[1],importFilter:this.params[2],transformFilter:this.params[3]||'',callback:this.callback});case'raw-files':return this.fetchFiles({raw:!0,urlFilter:this.params[1],transformFilter:this.params[2]||'',callback:this.callback});case'files':return this.fetchFiles({urlFilter:this.params[1],importFilter:this.params[2],transformFilter:this.params[3]||'',callback:this.callback})}return null},t.prototype.fetchFiles=function(r){var e,i=this;if(r.url)e=[r.url];else{if(!r.urlFilter)return'Missing URL';e=this.commander.wiki.filterTiddlers(r.urlFilter)}var a=0,s=function(t){if(t)return r.callback(t);a<e.length?i.fetchFile(e[a++],r,s):r.callback(null)};return s(null),null},t.prototype.fetchFile=function(i,a,s,n){if(10<n)return s('Error too many redirects retrieving '+i);var l=this;return('https://'===i.substr(0,8)?require('https'):require('http')).get(i).on('response',function(t){var r=(t.headers['content-type']||'').split(';')[0],e=[];l.commander.write('Reading '+i+': '),t.on('data',function(t){e.push(t),l.commander.write('.')}),t.on('end',function(){return l.commander.write('\\n'),200!==t.statusCode?302===t.statusCode||303===t.statusCode||307===t.statusCode?l.fetchFile(t.headers.location,a,s,n+1):s('Error '+t.statusCode+' retrieving '+i):(l.processBody(Buffer.concat(e),r,a,i),void s(null))}),t.on('error',function(t){console.log('Error on GET request: '+t),s(t)})}),null},t.prototype.processBody=function(t,r,a,e){var i,s=this,n=new $tw.Wiki;a.raw?(i=(i=r?$tw.config.contentTypeInfo[r]:null)?i.encoding:'utf8',n.addTiddler(new $tw.Tiddler({title:e,type:r,text:t.toString(i)}))):(t=this.commander.wiki.deserializeTiddlers(r||'text/html',t.toString('utf8'),{}),$tw.utils.each(t,function(t){n.addTiddler(new $tw.Tiddler(t))}));var l=n.filterTiddlers(a.importFilter||'[all[tiddlers]]'),o=0;n.each(function(t,r){var e,i;-1!==l.indexOf(r)&&(a.transformFilter?(i=(n.filterTiddlers(a.transformFilter,null,s.commander.wiki.makeTiddlerIterator([r]))||[''])[0])&&(s.commander.log('Importing '+r+' as '+i),e=new $tw.Tiddler(t,{title:i})):(s.commander.log('Importing '+r),e=t),s.commander.wiki.importTiddler(e),o++)}),s.commander.log('Imported '+o+' tiddlers')},exports.Command=t}();","type":"application/javascript","module-type":"command"},"$:/core/modules/commands/help.js":{"text":"!function(){'use strict';function e(e,t){this.params=e,this.commander=t}exports.info={name:'help',synchronous:!0},e.prototype.execute=function(){var e=this.params[0]||'default',t='$:/language/Help/';this.commander.wiki.getTiddler(t+e)||(e='notfound'),e=(e=this.commander.wiki.renderTiddler('text/plain-formatted',t+e)).replace(/^(\\r?\\n)*/g,''),this.commander.streams.output.write(e)},exports.Command=e}();","type":"application/javascript","module-type":"command"},"$:/core/modules/commands/import.js":{"text":"!function(){'use strict';function e(e,r,i){this.params=e,this.commander=r,this.callback=i}exports.info={name:'import',synchronous:!0},e.prototype.execute=function(){var r=this,e=require('fs');require('path');if(this.params.length<2)return'Missing parameters';var i=r.params[0],t=r.params[1],a=r.params[2]||i,s=r.params[3]||'utf8',s=e.readFileSync(i,s),t=this.commander.wiki.deserializeTiddlers(null,s,{title:a},{deserializer:t});return $tw.utils.each(t,function(e){r.commander.wiki.importTiddler(new $tw.Tiddler(e))}),this.commander.log(t.length+' tiddler(s) imported'),null},exports.Command=e}();","type":"application/javascript","module-type":"command"},"$:/core/modules/commands/init.js":{"text":"!function(){'use strict';function t(t,i){this.params=t,this.commander=i}exports.info={name:'init',synchronous:!0},t.prototype.execute=function(){var t=require('fs');require('path');if($tw.boot.wikiTiddlersPath||$tw.utils.isDirectory($tw.boot.wikiPath)&&!$tw.utils.isDirectoryEmpty($tw.boot.wikiPath))return'Wiki folder is not empty';for(var i=0<this.params.length?this.params:['empty'],e=0;e<i.length;e++){var r=i[e],o=$tw.findLibraryItem(r,$tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar));if(!$tw.utils.isDirectory(o))return'Edition \\''+r+'\\' not found';o=$tw.utils.copyDirectory(o,$tw.boot.wikiPath);if(o)return o;this.commander.streams.output.write('Copied edition \\''+r+'\\' to '+$tw.boot.wikiPath+'\\n')}var n=$tw.boot.wikiPath+'/tiddlywiki.info',s=JSON.parse(t.readFileSync(n));return delete s.includeWikis,t.writeFileSync(n,JSON.stringify(s,null,$tw.config.preferences.jsonSpaces)),null},exports.Command=t}();","type":"application/javascript","module-type":"command"},"$:/core/modules/commands/listen.js":{"text":"!function(){'use strict';var i=require('$:/core/modules/server/server.js').Server;function e(e,i,r){this.params=e,this.commander=i,this.callback=r}exports.info={name:'listen',synchronous:!0,namedParameterMode:!0,mandatoryParameters:[]},e.prototype.execute=function(){$tw.boot.wikiTiddlersPath||$tw.utils.warning('Warning: Wiki folder \\''+$tw.boot.wikiPath+'\\' does not exist or is missing a tiddlywiki.info file'),this.server=new i({wiki:this.commander.wiki,variables:this.params});var e=this.server.listen();return $tw.hooks.invokeHook('th-server-command-post-start',this.server,e,'tiddlywiki'),null},exports.Command=e}();","type":"application/javascript","module-type":"command"},"$:/core/modules/commands/load.js":{"text":"!function(){'use strict';function r(r,t,i){this.params=r,this.commander=t,this.callback=i}exports.info={name:'load',synchronous:!1},r.prototype.execute=function(){var t=this;require('fs'),require('path');if(this.params.length<1)return'Missing filename';var r=$tw.loadTiddlersFromPath(t.params[0]),i=0;return $tw.utils.each(r,function(r){$tw.utils.each(r.tiddlers,function(r){t.commander.wiki.importTiddler(new $tw.Tiddler(r)),i++})}),i||'noerror'===t.params[1]?t.callback(null):t.callback('No tiddlers found in file \"'+t.params[0]+'\"'),null},exports.Command=r}();","type":"application/javascript","module-type":"command"},"$:/core/modules/commands/makelibrary.js":{"text":"!function(){'use strict';function t(t,e,i){this.params=t,this.commander=e,this.callback=i}exports.info={name:'makelibrary',synchronous:!0},t.prototype.execute=function(){function r(t){for(var e=$tw.utils.getSubdirectories(t)||[],i=0;i<e.length;i++)$tw.boot.excludeRegExp.test(e[i])||(s=$tw.loadPluginFolder(a.resolve(t,'./'+e[i])))&&s.title&&(n[s.title]=s)}function t(t){for(var e=$tw.utils.getSubdirectories(t)||[],i=0;i<e.length;i++)$tw.boot.excludeRegExp.test(e[i])||r(a.resolve(t,'./'+e[i]))}var e=this.commander.wiki,a=(require('fs'),require('path')),i=this.params[0]||'$:/UpgradeLibrary',n={};$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.pluginsPath,$tw.config.pluginsEnvVar),t),$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.themesPath,$tw.config.themesEnvVar),t),$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.languagesPath,$tw.config.languagesEnvVar),r);var s={title:i,type:'application/json','plugin-type':'library',text:JSON.stringify({tiddlers:n})};return e.addTiddler(new $tw.Tiddler(s)),null},exports.Command=t}();","type":"application/javascript","module-type":"command"},"$:/core/modules/commands/output.js":{"text":"!function(){'use strict';function t(t,s,e){this.params=t,this.commander=s,this.callback=e}exports.info={name:'output',synchronous:!0},t.prototype.execute=function(){require('fs');var t=require('path');return this.params.length<1?'Missing output path':(this.commander.outputPath=t.resolve(process.cwd(),this.params[0]),null)},exports.Command=t}();","type":"application/javascript","module-type":"command"},"$:/core/modules/commands/password.js":{"text":"!function(){'use strict';function s(s,t,n){this.params=s,this.commander=t,this.callback=n}exports.info={name:'password',synchronous:!0},s.prototype.execute=function(){return this.params.length<1?'Missing password':($tw.crypto.setPassword(this.params[0]),null)},exports.Command=s}();","type":"application/javascript","module-type":"command"},"$:/core/modules/commands/render.js":{"text":"!function(){'use strict';function e(e,t,r){this.params=e,this.commander=t,this.callback=r}require('$:/core/modules/widgets/widget.js'),exports.info={name:'render',synchronous:!0},e.prototype.execute=function(){if(this.params.length<1)return'Missing tiddler filter';for(var i=this,s=require('fs'),n=require('path'),a=this.commander.wiki,e=this.params[0],l=this.params[1]||'[is[tiddler]addsuffix[.html]]',o=this.params[2]||'text/html',d=this.params[3],t=this.params.slice(4),e=a.filterTiddlers(e),c=Object.create(null);2<=t.length;)c[t[0]]=t[1],t=t.slice(2);return $tw.utils.each(e,function(e){var t=a.parseTiddler(d||e),r=a.makeWidget(t,{variables:$tw.utils.extend({},c,{currentTiddler:e})}),t=$tw.fakeDocument.createElement('div');r.render(t,null);r='text/html'===o?t.innerHTML:t.textContent,t=n.resolve(i.commander.outputPath,a.filterTiddlers(l,$tw.rootWidget,a.makeTiddlerIterator([e]))[0]);i.commander.verbose&&console.log('Rendering \"'+e+'\" to \"'+t+'\"'),$tw.utils.createFileDirectories(t),s.writeFileSync(t,r,'utf8')}),null},exports.Command=e}();","type":"application/javascript","module-type":"command"},"$:/core/modules/commands/rendertiddler.js":{"text":"!function(){'use strict';function t(t,r,e){this.params=t,this.commander=r,this.callback=e}exports.info={name:'rendertiddler',synchronous:!1},t.prototype.execute=function(){if(this.params.length<2)return'Missing filename';var r=this,t=require('fs'),e=require('path'),i=this.params[0],s=e.resolve(this.commander.outputPath,this.params[1]),a=this.params[2]||'text/html',n=this.params[3],m=this.params[4],h=this.params[5],e={};return $tw.utils.createFileDirectories(s),n&&(e.currentTiddler=i,i=n),m&&h&&(e[m]=h),t.writeFile(s,this.commander.wiki.renderTiddler(a,i,{variables:e}),'utf8',function(t){r.callback(t)}),null},exports.Command=t}();","type":"application/javascript","module-type":"command"},"$:/core/modules/commands/rendertiddlers.js":{"text":"!function(){'use strict';function e(e,t,r){this.params=e,this.commander=t,this.callback=r}require('$:/core/modules/widgets/widget.js'),exports.info={name:'rendertiddlers',synchronous:!0},e.prototype.execute=function(){if(this.params.length<2)return'Missing filename';var s=this,a=require('fs'),n=require('path'),o=this.commander.wiki,e=this.params[0],l=this.params[1],m=this.commander.outputPath,u=n.resolve(m,this.params[2]),c=this.params[3]||'text/html',h=this.params[4]||'.html',t='noclean'!==(this.params[5]||'').toLowerCase(),e=o.filterTiddlers(e);return t&&$tw.utils.deleteDirectory(u),$tw.utils.each(e,function(e){var t=o.parseTiddler(l),r=o.makeWidget(t,{variables:{currentTiddler:e}}),i=$tw.fakeDocument.createElement('div');r.render(i,null);t='text/html'===c?i.innerHTML:i.textContent,r=null;!$tw.utils.hop($tw.macros,'tv-get-export-path')||(i=$tw.macros['tv-get-export-path'].run.apply(s,[e]))&&(r=n.resolve(m,i+h));e=r||n.resolve(u,encodeURIComponent(e)+h);$tw.utils.createFileDirectories(e),a.writeFileSync(e,t,'utf8')}),null},exports.Command=e}();","type":"application/javascript","module-type":"command"},"$:/core/modules/commands/save.js":{"text":"!function(){'use strict';function e(e,t,i){this.params=e,this.commander=t,this.callback=i}exports.info={name:'save',synchronous:!0},e.prototype.execute=function(){if(this.params.length<1)return'Missing filename filter';var n=this,o=require('fs'),s=require('path'),a=this.commander.wiki,e=this.params[0],d=this.params[1]||'[is[tiddler]]',e=a.filterTiddlers(e);return $tw.utils.each(e,function(e){var t=n.commander.wiki.getTiddler(e),i=t.fields.type||'text/vnd.tiddlywiki',r=$tw.config.contentTypeInfo[i]||{encoding:'utf8'},i=s.resolve(n.commander.outputPath,a.filterTiddlers(d,$tw.rootWidget,a.makeTiddlerIterator([e]))[0]);n.commander.verbose&&console.log('Saving \"'+e+'\" to \"'+i+'\"'),$tw.utils.createFileDirectories(i),o.writeFileSync(i,t.fields.text,r.encoding)}),null},exports.Command=e}();","type":"application/javascript","module-type":"command"},"$:/core/modules/commands/savelibrarytiddlers.js":{"text":"!function(){'use strict';function e(e,t,i){this.params=e,this.commander=t,this.callback=i}exports.info={name:'savelibrarytiddlers',synchronous:!0},e.prototype.execute=function(){if(this.params.length<2)return'Missing filename';var n=this,d=require('fs'),o=require('path'),e=this.params[0],t=this.params[1],l=this.params[2],i=this.params[3],m=n.commander.wiki.getTiddlerDataCached(e,void 0);if(!m)return'\\''+e+'\\' is not a tiddler bundle';var r=[];$tw.utils.each(m.tiddlers,function(e,t){r.push(t)}),t=t?n.commander.wiki.filterTiddlers(t,null,n.commander.wiki.makeTiddlerIterator(r)):r;var u=[];return $tw.utils.each(t,function(e){var t=m.tiddlers[e],i=o.resolve(n.commander.outputPath,l+encodeURIComponent(e)+'.json');$tw.utils.createFileDirectories(i),d.writeFileSync(i,JSON.stringify(t),'utf8');var r,a=JSON.parse(t.text),s=(a.tiddlers[e+'/readme']||{}).text,i=!!n.commander.wiki.doesPluginInfoRequireReload(a),a=a.tiddlers[e+'/icon']||{},e=a.type,a=a.text;e&&a&&(r=$tw.utils.makeDataUri(a,e)),u.push($tw.utils.extend({},t,{text:void 0,readme:s,'requires-reload':i?'yes':'no',icon:r}))}),i&&n.commander.wiki.setTiddlerData(i,u),null},exports.Command=e}();","type":"application/javascript","module-type":"command"},"$:/core/modules/commands/savetiddler.js":{"text":"!function(){'use strict';function t(t,e,i){this.params=t,this.commander=e,this.callback=i}exports.info={name:'savetiddler',synchronous:!1},t.prototype.execute=function(){if(this.params.length<2)return'Missing filename';var e=this,t=require('fs'),i=require('path'),n=this.params[0],r=i.resolve(this.commander.outputPath,this.params[1]),i=this.commander.wiki.getTiddler(n);if(!i)return'Missing tiddler: '+n;n=i.fields.type||'text/vnd.tiddlywiki',n=$tw.config.contentTypeInfo[n]||{encoding:'utf8'};return $tw.utils.createFileDirectories(r),t.writeFile(r,i.fields.text,n.encoding,function(t){e.callback(t)}),null},exports.Command=t}();","type":"application/javascript","module-type":"command"},"$:/core/modules/commands/savetiddlers.js":{"text":"!function(){'use strict';function e(e,t,i){this.params=e,this.commander=t,this.callback=i}require('$:/core/modules/widgets/widget.js'),exports.info={name:'savetiddlers',synchronous:!0},e.prototype.execute=function(){if(this.params.length<1)return'Missing filename';var r=this,n=require('fs'),s=require('path'),e=this.commander.wiki,t=this.params[0],o=s.resolve(this.commander.outputPath,this.params[1]),i='noclean'!==(this.params[2]||'').toLowerCase(),t=e.filterTiddlers(t);return i&&$tw.utils.deleteDirectory(o),$tw.utils.createDirectory(o),$tw.utils.each(t,function(e){var t=r.commander.wiki.getTiddler(e),i=t.fields.type||'text/vnd.tiddlywiki',i=$tw.config.contentTypeInfo[i]||{encoding:'utf8'},e=s.resolve(o,encodeURIComponent(e));n.writeFileSync(e,t.fields.text,i.encoding)}),null},exports.Command=e}();","type":"application/javascript","module-type":"command"},"$:/core/modules/commands/savewikifolder.js":{"text":"!function(){'use strict';var o,n;function i(i,e,t){this.params=i,this.commander=e,this.callback=t}function e(i,e,t){this.wikiFolderPath=i,this.wikiFilter=e||'[all[tiddlers]]',this.commander=t,this.wiki=t.wiki,this.savedPaths=[]}exports.info={name:'savewikifolder',synchronous:!0},$tw.node&&(o=require('fs'),n=require('path')),i.prototype.execute=function(){return this.params.length<1?'Missing wiki folder path':new e(this.params[0],this.params[1],this.commander).save()},e.prototype.log=function(i){this.commander.verbose&&console.log(i)},e.prototype.tiddlersToIgnore=['$:/boot/boot.css','$:/boot/boot.js','$:/boot/bootprefix.js','$:/core','$:/library/sjcl.js','$:/temp/info-plugin'],e.prototype.save=function(){var l=this;if(o.existsSync(this.wikiFolderPath)&&!$tw.utils.isDirectoryEmpty(this.wikiFolderPath))return'The unpackwiki command requires that the output wiki folder be empty';var i=this.wiki.filterTiddlers(this.wikiFilter),n={};return $tw.utils.each(i,function(i){var e,t,s=l.wiki.getTiddler(i);s&&(-1!==l.tiddlersToIgnore.indexOf(i)?l.log('Ignoring tiddler: '+i):(e=s.fields.type,t=s.fields['plugin-type'],'application/json'===e&&t?(t=l.findPluginInLibrary(i))?(l.log('Adding built-in plugin: '+t.name),n[t.type]=n[t.type]||[],$tw.utils.pushTop(n[t.type],t.name)):(l.log('Processing custom plugin: '+i),l.saveCustomPlugin(s)):l.saveTiddler('tiddlers',s)))}),this.saveJSONFile('tiddlywiki.info',n),l.log('Writing tiddlywiki.info: '+JSON.stringify(n,null,$tw.config.preferences.jsonSpaces)),null},e.prototype.findPluginInLibrary=function(i){var e,t,s,i=i.split('/');return'$:'===i[0]&&('languages'===i[1]&&3===i.length?(e='languages'+n.sep+i[2],t=i[1],s=i[2]):('plugins'===i[1]||'themes'===i[1]&&4===i.length)&&(e=i[1]+n.sep+i[2]+n.sep+i[3],t=i[1],s=i[2]+'/'+i[3])),!!(e&&t&&s&&(e=n.resolve($tw.boot.bootPath,'..',e),o.existsSync(e)))&&{pluginPath:e,type:t,name:s}},e.prototype.saveCustomPlugin=function(i){var e=this,t=i.fields.title.split('/'),s=$tw.utils.generateTiddlerFilepath(t[t.length-1],{directory:n.resolve(this.wikiFolderPath,i.fields['plugin-type']+'s')}),t=i.getFieldStrings({exclude:['text','type']});this.saveJSONFile(s+n.sep+'plugin.info',t),e.log('Writing '+s+n.sep+'plugin.info: '+JSON.stringify(t,null,$tw.config.preferences.jsonSpaces));i=JSON.parse(i.fields.text).tiddlers;$tw.utils.each(i,function(i){e.saveTiddler(s,new $tw.Tiddler(i))})},e.prototype.saveTiddler=function(i,e){var t,s;e.fields.title;this.wiki.tiddlerExists('$:/config/FileSystemPaths')&&(t=this.wiki.getTiddlerText('$:/config/FileSystemPaths','').split('\\n')),this.wiki.tiddlerExists('$:/config/FileSystemExtensions')&&(s=this.wiki.getTiddlerText('$:/config/FileSystemExtensions','').split('\\n'));var l=$tw.utils.generateTiddlerFileInfo(e,{directory:n.resolve(this.wikiFolderPath,i),pathFilters:t,extFilters:s,wiki:this.wiki,fileInfo:{}});try{$tw.utils.saveTiddlerToFileSync(e,l)}catch(i){console.log('SaveWikiFolder: Error saving file \\''+l.filepath+'\\', tiddler: \\''+e.fields.title)}},e.prototype.saveJSONFile=function(i,e){this.saveTextFile(i,JSON.stringify(e,null,$tw.config.preferences.jsonSpaces))},e.prototype.saveTextFile=function(i,e){this.saveFile(i,'utf8',e)},e.prototype.saveFile=function(i,e,t){i=n.resolve(this.wikiFolderPath,i);$tw.utils.createFileDirectories(i),o.writeFileSync(i,t,e)},exports.Command=i}();","type":"application/javascript","module-type":"command"},"$:/core/modules/commands/server.js":{"text":"!function(){'use strict';var s=require('$:/core/modules/server/server.js').Server;function r(r,s,t){this.params=r,this.commander=s,this.callback=t}exports.info={name:'server',synchronous:!0},r.prototype.execute=function(){$tw.boot.wikiTiddlersPath||$tw.utils.warning('Warning: Wiki folder \\''+$tw.boot.wikiPath+'\\' does not exist or is missing a tiddlywiki.info file'),this.server=new s({wiki:this.commander.wiki,variables:{port:this.params[0],host:this.params[6],'root-tiddler':this.params[1],'root-render-type':this.params[2],'root-serve-type':this.params[3],username:this.params[4],password:this.params[5],'path-prefix':this.params[7],'debug-level':this.params[8]}});var r=this.server.listen();return $tw.hooks.invokeHook('th-server-command-post-start',this.server,r,'tiddlywiki'),null},exports.Command=r}();","type":"application/javascript","module-type":"command"},"$:/core/modules/commands/setfield.js":{"text":"!function(){'use strict';function e(e,t,r){this.params=e,this.commander=t,this.callback=r}require('$:/core/modules/widgets/widget.js'),exports.info={name:'setfield',synchronous:!0},e.prototype.execute=function(){if(this.params.length<4)return'Missing parameters';var s=this.commander.wiki,e=this.params[0],a=this.params[1]||'text',n=this.params[2],d=this.params[3]||'text/plain',e=s.filterTiddlers(e);return $tw.utils.each(e,function(e){var t=s.parseTiddler(n),r={},i=s.getTiddler(e);t?(t=s.makeWidget(t,{variables:{currentTiddler:e}}),e=$tw.fakeDocument.createElement('div'),t.render(e,null),r[a]='text/html'===d?e.innerHTML:e.textContent):r[a]=void 0,s.addTiddler(new $tw.Tiddler(i,r))}),null},exports.Command=e}();","type":"application/javascript","module-type":"command"},"$:/core/modules/commands/unpackplugin.js":{"text":"!function(){'use strict';function n(n,i,t){this.params=n,this.commander=i,this.callback=t}exports.info={name:'unpackplugin',synchronous:!0},n.prototype.execute=function(){if(this.params.length<1)return'Missing plugin name';var i=this,n=this.params[0],t=this.commander.wiki.getTiddlerDataCached(n);return t?($tw.utils.each(t.tiddlers,function(n){i.commander.wiki.addTiddler(new $tw.Tiddler(n))}),null):'Plugin \\''+n+'\\' not found'},exports.Command=n}();","type":"application/javascript","module-type":"command"},"$:/core/modules/commands/verbose.js":{"text":"!function(){'use strict';function o(o,t){this.params=o,this.commander=t}exports.info={name:'verbose',synchronous:!0},o.prototype.execute=function(){return this.commander.verbose=!0,this.commander.streams.output.write('Boot log:\\n '+$tw.boot.logMessages.join('\\n ')+'\\n'),null},exports.Command=o}();","type":"application/javascript","module-type":"command"},"$:/core/modules/commands/version.js":{"text":"!function(){'use strict';function t(t,n){this.params=t,this.commander=n}exports.info={name:'version',synchronous:!0},t.prototype.execute=function(){return this.commander.streams.output.write($tw.version+'\\n'),null},exports.Command=t}();","type":"application/javascript","module-type":"command"},"$:/core/modules/config.js":{"text":"!function(){'use strict';exports.preferences={},exports.preferences.notificationDuration=3e3,exports.preferences.jsonSpaces=4,exports.textPrimitives={upperLetter:'[A-ZÀ-ÖØ-ÞŐŰ]',lowerLetter:'[a-zß-öø-ÿőű]',anyLetter:'[A-Za-z0-9À-ÖØ-Þß-öø-ÿŐŰőű]',blockPrefixLetters:'[A-Za-z0-9-_À-ÖØ-Þß-öø-ÿŐŰőű]'},exports.textPrimitives.unWikiLink='~',exports.textPrimitives.wikiLink=exports.textPrimitives.upperLetter+'+'+exports.textPrimitives.lowerLetter+'+'+exports.textPrimitives.upperLetter+exports.textPrimitives.anyLetter+'*',exports.htmlEntities={quot:34,amp:38,apos:39,lt:60,gt:62,nbsp:160,iexcl:161,cent:162,pound:163,curren:164,yen:165,brvbar:166,sect:167,uml:168,copy:169,ordf:170,laquo:171,not:172,shy:173,reg:174,macr:175,deg:176,plusmn:177,sup2:178,sup3:179,acute:180,micro:181,para:182,middot:183,cedil:184,sup1:185,ordm:186,raquo:187,frac14:188,frac12:189,frac34:190,iquest:191,Agrave:192,Aacute:193,Acirc:194,Atilde:195,Auml:196,Aring:197,AElig:198,Ccedil:199,Egrave:200,Eacute:201,Ecirc:202,Euml:203,Igrave:204,Iacute:205,Icirc:206,Iuml:207,ETH:208,Ntilde:209,Ograve:210,Oacute:211,Ocirc:212,Otilde:213,Ouml:214,times:215,Oslash:216,Ugrave:217,Uacute:218,Ucirc:219,Uuml:220,Yacute:221,THORN:222,szlig:223,agrave:224,aacute:225,acirc:226,atilde:227,auml:228,aring:229,aelig:230,ccedil:231,egrave:232,eacute:233,ecirc:234,euml:235,igrave:236,iacute:237,icirc:238,iuml:239,eth:240,ntilde:241,ograve:242,oacute:243,ocirc:244,otilde:245,ouml:246,divide:247,oslash:248,ugrave:249,uacute:250,ucirc:251,uuml:252,yacute:253,thorn:254,yuml:255,OElig:338,oelig:339,Scaron:352,scaron:353,Yuml:376,fnof:402,circ:710,tilde:732,Alpha:913,Beta:914,Gamma:915,Delta:916,Epsilon:917,Zeta:918,Eta:919,Theta:920,Iota:921,Kappa:922,Lambda:923,Mu:924,Nu:925,Xi:926,Omicron:927,Pi:928,Rho:929,Sigma:931,Tau:932,Upsilon:933,Phi:934,Chi:935,Psi:936,Omega:937,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,omicron:959,pi:960,rho:961,sigmaf:962,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,thetasym:977,upsih:978,piv:982,ensp:8194,emsp:8195,thinsp:8201,zwnj:8204,zwj:8205,lrm:8206,rlm:8207,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,sbquo:8218,ldquo:8220,rdquo:8221,bdquo:8222,dagger:8224,Dagger:8225,bull:8226,hellip:8230,permil:8240,prime:8242,Prime:8243,lsaquo:8249,rsaquo:8250,oline:8254,frasl:8260,euro:8364,image:8465,weierp:8472,real:8476,trade:8482,alefsym:8501,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,crarr:8629,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,lowast:8727,radic:8730,prop:8733,infin:8734,ang:8736,and:8743,or:8744,cap:8745,cup:8746,int:8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,nsub:8836,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,lceil:8968,rceil:8969,lfloor:8970,rfloor:8971,lang:9001,rang:9002,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830},exports.htmlVoidElements='area,base,br,col,command,embed,hr,img,input,keygen,link,meta,param,source,track,wbr'.split(','),exports.htmlBlockElements='address,article,aside,audio,blockquote,canvas,dd,div,dl,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,hr,li,noscript,ol,output,p,pre,section,table,tfoot,ul,video'.split(','),exports.htmlUnsafeElements='script'.split(',')}();","type":"application/javascript","module-type":"config"},"$:/core/modules/deserializers.js":{"text":"!function(){'use strict';function c(t){var e={};if(1<arguments.length)for(var r=1;r<arguments.length;r++){var i,n=arguments[r];for(i in n)e[i]=n[i]}var s=/^\\s*<div\\s+([^>]*)>(\\s*<pre>)?/gi.exec(t);if(s){var a=(s[2]?/<\\/pre>\\s*<\\/div>\\s*$/gi:/<\\/div>\\s*$/gi).exec(t);if(a){e.text=t.substring(s.index+s[0].length,a.index);var l,o,d,u=/\\s*([^=\\s]+)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)')/gi;do{}while((d=u.exec(s[1]))&&(l=d[1],o=void 0!==d[2]?d[2]:d[3],e[l]=o),d);return e}}}function a(t,e,r,i){var n=[],s=/(<\\/div>\\s*)/gi,a=e,l=r?void 0:'text/x-tiddlywiki';s.lastIndex=a;for(var o=s.exec(t);o;){var d=s.lastIndex,u=c(t.substring(a,d),i,{type:l});if(!u)break;$tw.utils.each(u,function(t,e){'string'==typeof t&&(u[e]=$tw.utils.htmlDecode(t))}),null!==u.text&&n.push(u),a=d,o=s.exec(t)}return n}exports['application/x-tiddler-html-div']=function(t,e){return[c(t,e)]},exports['application/json']=function(t,e){var r,i=[];try{r=JSON.parse(t)}catch(t){r=[{title:'JSON error: '+t,text:''}]}$tw.utils.isArray(r)||(r=[r]);for(var n=0;n<r.length;n++){var s,a=r[n],e={};for(s in a)'string'==typeof a[s]&&(e[s]=a[s]);i.push(e)}return i},exports['text/html']=function(t,e){var r=/<div id=[\"']?storeArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,i=r.exec(t);if(i){var n=a(t,r.lastIndex,!!i[1],e),r=/<div id=[\"']?systemArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,i=r.exec(t);return i&&n.push.apply(n,a(t,r.lastIndex,!!i[1],e)),n}var s,n=$tw.utils.extractEncryptedStoreArea(t);return n?$tw.utils.decryptStoreArea(n):(t=t,e=e,s={},$tw.utils.each(e,function(t,e){s[e]=t}),s.text=t,s.type='text/html',[s])}}();","type":"application/javascript","module-type":"tiddlerdeserializer"},"$:/core/modules/editor/engines/framed.js":{"text":"!function(){'use strict';function e(e){e=e||{},this.widget=e.widget,this.value=e.value,this.parentNode=e.parentNode,this.nextSibling=e.nextSibling,this.dummyTextArea=this.widget.document.createElement('textarea'),this.widget.editClass&&(this.dummyTextArea.className=this.widget.editClass),this.dummyTextArea.setAttribute('hidden','true'),this.parentNode.insertBefore(this.dummyTextArea,this.nextSibling),this.widget.domNodes.push(this.dummyTextArea),this.iframeNode=this.widget.document.createElement('iframe'),this.parentNode.insertBefore(this.iframeNode,this.nextSibling),this.iframeDoc=this.iframeNode.contentWindow.document,this.iframeDoc.open(),this.iframeDoc.write(''),this.iframeDoc.close(),this.iframeNode.className=this.dummyTextArea.className,this.iframeNode.style.border='none',this.iframeNode.style.padding='0',this.iframeNode.style.resize='none',this.iframeDoc.body.style.margin='0',this.iframeDoc.body.style.padding='0',this.widget.domNodes.push(this.iframeNode);e=this.widget.editTag;-1!==$tw.config.htmlUnsafeElements.indexOf(e)&&(e='input'),this.domNode=this.iframeDoc.createElement(e),'textarea'===this.widget.editTag?this.domNode.appendChild(this.iframeDoc.createTextNode(this.value)):this.domNode.value=this.value,this.widget.editType&&this.domNode.setAttribute('type',this.widget.editType),this.widget.editPlaceholder&&this.domNode.setAttribute('placeholder',this.widget.editPlaceholder),this.widget.editSize&&this.domNode.setAttribute('size',this.widget.editSize),this.widget.editRows&&this.domNode.setAttribute('rows',this.widget.editRows),this.widget.editTabIndex&&this.iframeNode.setAttribute('tabindex',this.widget.editTabIndex),this.widget.editAutoComplete&&this.domNode.setAttribute('autocomplete',this.widget.editAutoComplete),'yes'===this.widget.isDisabled&&this.domNode.setAttribute('disabled',!0),this.copyStyles(),$tw.utils.addEventListeners(this.domNode,[{name:'click',handlerObject:this,handlerMethod:'handleClickEvent'},{name:'input',handlerObject:this,handlerMethod:'handleInputEvent'},{name:'keydown',handlerObject:this.widget,handlerMethod:'handleKeydownEvent'},{name:'focus',handlerObject:this,handlerMethod:'handleFocusEvent'}]),this.iframeDoc.body.appendChild(this.domNode)}e.prototype.copyStyles=function(){$tw.utils.copyStyles(this.dummyTextArea,this.domNode),this.domNode.style.display='block',this.domNode.style.width='100%',this.domNode.style.margin='0',this.domNode.style['-webkit-text-fill-color']='currentcolor'},e.prototype.setText=function(e,t){this.domNode.isTiddlyWikiFakeDom||(this.domNode.ownerDocument.activeElement!==this.domNode&&this.updateDomNodeText(e),this.fixHeight())},e.prototype.updateDomNodeText=function(e){this.domNode.value=e},e.prototype.getText=function(){return this.domNode.value},e.prototype.fixHeight=function(){var e;this.copyStyles(),'textarea'===this.widget.editTag&&(this.widget.editAutoHeight?this.domNode&&!this.domNode.isTiddlyWikiFakeDom&&(e=$tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight),this.iframeNode.style.height=e+14+'px'):(e=parseInt(this.widget.wiki.getTiddlerText('$:/config/TextEditor/EditorHeight/Height','400px'),10),e=Math.max(e,20),this.domNode.style.height=e+'px',this.iframeNode.style.height=e+14+'px'))},e.prototype.focus=function(){this.domNode.focus&&this.domNode.select&&(this.domNode.focus(),this.domNode.select())},e.prototype.handleFocusEvent=function(e){this.widget.editCancelPopups&&$tw.popup.cancel(0)},e.prototype.handleClickEvent=function(e){return this.fixHeight(),!0},e.prototype.handleInputEvent=function(e){return this.widget.saveChanges(this.getText()),this.fixHeight(),this.widget.editInputActions&&this.widget.invokeActionString(this.widget.editInputActions),!0},e.prototype.createTextOperation=function(){var e={text:this.domNode.value,selStart:this.domNode.selectionStart,selEnd:this.domNode.selectionEnd,cutStart:null,cutEnd:null,replacement:null,newSelStart:null,newSelEnd:null};return e.selection=e.text.substring(e.selStart,e.selEnd),e},e.prototype.executeTextOperation=function(e){var t=e.text;return null!==e.replacement&&(t=e.text.substring(0,e.cutStart)+e.replacement+e.text.substring(e.cutEnd),this.iframeDoc.queryCommandSupported('insertText')&&this.iframeDoc.queryCommandSupported('delete')&&!$tw.browser.isFirefox?(this.domNode.focus(),this.domNode.setSelectionRange(e.cutStart,e.cutEnd),''===e.replacement?this.iframeDoc.execCommand('delete',!1,''):this.iframeDoc.execCommand('insertText',!1,e.replacement)):this.domNode.value=t,this.domNode.focus(),this.domNode.setSelectionRange(e.newSelStart,e.newSelEnd)),this.domNode.focus(),t},exports.FramedEngine=e}();","type":"application/javascript","module-type":"library"},"$:/core/modules/editor/engines/simple.js":{"text":"!function(){'use strict';function t(t){t=t||{},this.widget=t.widget,this.value=t.value,this.parentNode=t.parentNode,this.nextSibling=t.nextSibling;t=this.widget.editTag;-1!==$tw.config.htmlUnsafeElements.indexOf(t)&&(t='input'),this.domNode=this.widget.document.createElement(t),'textarea'===this.widget.editTag?this.domNode.appendChild(this.widget.document.createTextNode(this.value)):this.domNode.value=this.value,this.widget.editType&&this.domNode.setAttribute('type',this.widget.editType),this.widget.editPlaceholder&&this.domNode.setAttribute('placeholder',this.widget.editPlaceholder),this.widget.editSize&&this.domNode.setAttribute('size',this.widget.editSize),this.widget.editRows&&this.domNode.setAttribute('rows',this.widget.editRows),this.widget.editClass&&(this.domNode.className=this.widget.editClass),this.widget.editTabIndex&&this.domNode.setAttribute('tabindex',this.widget.editTabIndex),this.widget.editAutoComplete&&this.domNode.setAttribute('autocomplete',this.widget.editAutoComplete),'yes'===this.widget.isDisabled&&this.domNode.setAttribute('disabled',!0),$tw.utils.addEventListeners(this.domNode,[{name:'focus',handlerObject:this,handlerMethod:'handleFocusEvent'},{name:'input',handlerObject:this,handlerMethod:'handleInputEvent'}]),this.parentNode.insertBefore(this.domNode,this.nextSibling),this.widget.domNodes.push(this.domNode)}t.prototype.setText=function(t,e){this.domNode.isTiddlyWikiFakeDom||(this.domNode.ownerDocument.activeElement===this.domNode&&''!==t||this.updateDomNodeText(t),this.fixHeight())},t.prototype.updateDomNodeText=function(t){this.domNode.value=t},t.prototype.getText=function(){return this.domNode.value},t.prototype.fixHeight=function(){var t;'textarea'===this.widget.editTag&&(this.widget.editAutoHeight?this.domNode&&!this.domNode.isTiddlyWikiFakeDom&&$tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight):(t=parseInt(this.widget.wiki.getTiddlerText('$:/config/TextEditor/EditorHeight/Height','400px'),10),t=Math.max(t,20),this.domNode.style.height=t+'px'))},t.prototype.focus=function(){this.domNode.focus&&this.domNode.select&&(this.domNode.focus(),this.domNode.select())},t.prototype.handleInputEvent=function(t){return this.widget.saveChanges(this.getText()),this.fixHeight(),this.widget.editInputActions&&this.widget.invokeActionString(this.widget.editInputActions),!0},t.prototype.handleFocusEvent=function(t){return this.widget.editCancelPopups&&$tw.popup.cancel(0),this.widget.editFocusPopup&&$tw.popup.triggerPopup({domNode:this.domNode,title:this.widget.editFocusPopup,wiki:this.widget.wiki,force:!0}),!0},t.prototype.createTextOperation=function(){return null},t.prototype.executeTextOperation=function(t){},exports.SimpleEngine=t}();","type":"application/javascript","module-type":"library"},"$:/core/modules/editor/factory.js":{"text":"!function(){'use strict';var s='$:/config/TextEditor/EditorHeight/Mode',r='$:/config/TextEditor/EnableToolbar',t=require('$:/core/modules/widgets/widget.js').widget;exports.editTextWidgetFactory=function(d,o){var i=function(t,e){this.editorOperations||(i.prototype.editorOperations={},$tw.modules.applyMethods('texteditoroperation',this.editorOperations)),this.initialise(t,e)};return i.prototype=new t,i.prototype.render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute(),this.editShowToolbar&&(this.toolbarNode=this.document.createElement('div'),this.toolbarNode.className='tc-editor-toolbar',t.insertBefore(this.toolbarNode,e),this.renderChildren(this.toolbarNode,null),this.domNodes.push(this.toolbarNode));var i=this.getEditInfo(),s=this.editShowToolbar?d:o;this.engine=new s({widget:this,value:i.value,type:i.type,parentNode:t,nextSibling:e}),this.postRender&&this.postRender(),this.engine.fixHeight(),'true'!==this.editFocus&&'yes'!==this.editFocus||this.engine.focus(),this.addEventListeners([{type:'tm-edit-text-operation',handler:'handleEditTextOperationMessage'}])},i.prototype.getEditInfo=function(){var t,e,s=this,i='text/plain';if(this.editIndex)t=this.wiki.extractTiddlerDataItem(this.editTitle,this.editIndex,this.editDefault),e=function(t){var e=s.wiki.getTiddlerData(s.editTitle,{});e[s.editIndex]!==t&&(e[s.editIndex]=t,s.wiki.setTiddlerData(s.editTitle,e))};else{var d=this.wiki.getTiddler(this.editTitle);if(d)t=d.hasField(this.editField)?d.getFieldString(this.editField):this.editDefault||'','text'===this.editField&&(i=d.fields.type||'text/vnd.tiddlywiki');else{switch(this.editField){case'text':t='Type the text for the tiddler \\''+this.editTitle+'\\'',i='text/vnd.tiddlywiki';break;case'title':t=this.editTitle;break;default:t=''}void 0!==this.editDefault&&(t=this.editDefault)}e=function(t){var e=s.wiki.getTiddler(s.editTitle),i={title:s.editTitle};i[s.editField]=t,s.wiki.addTiddler(new $tw.Tiddler(s.wiki.getCreationFields(),e,i,s.wiki.getModificationFields()))}}return this.editType&&(i=this.editType),{value:t||'',type:i,update:e}},i.prototype.handleEditTextOperationMessage=function(t){var e=this.engine.createTextOperation(),i=this.editorOperations[t.param];i&&i.call(this,t,e);e=this.engine.executeTextOperation(e);this.engine.fixHeight(),this.saveChanges(e)},i.prototype.execute=function(){var t,e,i;this.editTitle=this.getAttribute('tiddler',this.getVariable('currentTiddler')),this.editField=this.getAttribute('field','text'),this.editIndex=this.getAttribute('index'),this.editDefault=this.getAttribute('default'),this.editClass=this.getAttribute('class'),this.editPlaceholder=this.getAttribute('placeholder'),this.editSize=this.getAttribute('size'),this.editRows=this.getAttribute('rows'),this.editAutoHeight=this.wiki.getTiddlerText(s,'auto'),this.editAutoHeight='yes'===this.getAttribute('autoHeight','auto'===this.editAutoHeight?'yes':'no'),this.editMinHeight=this.getAttribute('minHeight','100px'),this.editFocusPopup=this.getAttribute('focusPopup'),this.editFocus=this.getAttribute('focus'),this.editTabIndex=this.getAttribute('tabindex'),this.editCancelPopups='yes'===this.getAttribute('cancelPopups',''),this.editInputActions=this.getAttribute('inputActions'),this.editRefreshTitle=this.getAttribute('refreshTitle'),this.editAutoComplete=this.getAttribute('autocomplete'),this.isDisabled=this.getAttribute('disabled','no'),'text'===this.editField?t='textarea':(t='input',(i=$tw.Tiddler.fieldModules[this.editField])&&i.editTag&&(t=i.editTag),i&&i.editType&&(e=i.editType),e=e||'text'),this.editTag=this.getAttribute('tag',t)||'input',this.editType=this.getAttribute('type',e),this.makeChildWidgets(),this.editShowToolbar=this.wiki.getTiddlerText(r,'yes'),this.editShowToolbar='yes'===this.editShowToolbar&&!!(this.children&&0<this.children.length)&&!this.document.isTiddlyWikiFakeDom},i.prototype.refresh=function(t){var e=this.computeAttributes();return e.tiddler||e.field||e.index||e.default||e.class||e.placeholder||e.size||e.autoHeight||e.minHeight||e.focusPopup||e.rows||e.tabindex||e.cancelPopups||e.inputActions||e.refreshTitle||e.autocomplete||t[s]||t[r]||e.disabled?(this.refreshSelf(),!0):(t[this.editRefreshTitle]?this.engine.updateDomNodeText(this.getEditInfo().value):t[this.editTitle]&&(e=this.getEditInfo(),this.updateEditor(e.value,e.type)),this.engine.fixHeight(),!!this.editShowToolbar&&this.refreshChildren(t))},i.prototype.updateEditor=function(t,e){this.updateEditorDomNode(t,e)},i.prototype.updateEditorDomNode=function(t,e){this.engine.setText(t,e)},i.prototype.saveChanges=function(t){var e=this.getEditInfo();t!==e.value&&e.update(t)},i.prototype.handleKeydownEvent=function(t){if(this.toolbarNode)for(var e=this.toolbarNode.querySelectorAll('[data-tw-keyboard-shortcut]'),i=0;i<e.length;i++){var s=e[i],d=s.getAttribute('data-tw-keyboard-shortcut'),d=$tw.keyboardManager.parseKeyDescriptors(d,{wiki:this.wiki});if($tw.keyboardManager.checkKeyDescriptors(t,d)){d=this.document.createEvent('Events');return d.initEvent('click',!0,!1),s.dispatchEvent(d),t.preventDefault(),t.stopPropagation(),!0}}return!!this.propogateKeydownEvent(t)&&(t.preventDefault(),t.stopPropagation(),!0)},i.prototype.propogateKeydownEvent=function(t){var e=this.document.createEventObject?this.document.createEventObject():this.document.createEvent('Events');return e.initEvent&&e.initEvent('keydown',!0,!0),e.keyCode=t.keyCode,e.which=t.which,e.metaKey=t.metaKey,e.ctrlKey=t.ctrlKey,e.altKey=t.altKey,e.shiftKey=t.shiftKey,!this.parentDomNode.dispatchEvent(e)},i}}();","type":"application/javascript","module-type":"library"},"$:/core/modules/editor/operations/bitmap/clear.js":{"text":"!function(){'use strict';exports.clear=function(t){var e=this.canvasDomNode.getContext('2d');e.globalAlpha=1,e.fillStyle=t.paramObject.colour||'white',e.fillRect(0,0,this.canvasDomNode.width,this.canvasDomNode.height),this.strokeEnd()}}();","type":"application/javascript","module-type":"bitmapeditoroperation"},"$:/core/modules/editor/operations/bitmap/resize.js":{"text":"!function(){'use strict';exports.resize=function(t){var a=parseInt(t.paramObject.width||this.canvasDomNode.width,10),t=parseInt(t.paramObject.height||this.canvasDomNode.height,10);0<a&&0<t&&(a!==this.currCanvas.width||t!==this.currCanvas.height)&&this.changeCanvasSize(a,t),this.refreshToolbar(),this.saveChanges()}}();","type":"application/javascript","module-type":"bitmapeditoroperation"},"$:/core/modules/editor/operations/bitmap/rotate-left.js":{"text":"!function(){'use strict';exports['rotate-left']=function(t){this.rotateCanvasLeft(),this.refreshToolbar(),this.saveChanges()}}();","type":"application/javascript","module-type":"bitmapeditoroperation"},"$:/core/modules/editor/operations/text/excise.js":{"text":"!function(){'use strict';exports.excise=function(e,t){var i=this.wiki.getTiddler(this.editTitle),a=this.editTitle;i&&i.fields['draft.of']&&(a=i.fields['draft.of']);i=e.paramObject.title||this.wiki.generateNewTitle('New Excision');switch(this.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),this.wiki.getModificationFields(),{title:i,text:t.selection,tags:'yes'===e.paramObject.tagnew?[a]:[]})),t.replacement=i,e.paramObject.type||'transclude'){case'transclude':t.replacement='{{'+t.replacement+'}}';break;case'link':t.replacement='[['+t.replacement+']]';break;case'macro':t.replacement='<<'+(e.paramObject.macro||'translink')+' \"\"\"'+t.replacement+'\"\"\">>'}t.cutStart=t.selStart,t.cutEnd=t.selEnd,t.newSelStart=t.selStart,t.newSelEnd=t.selStart+t.replacement.length}}();","type":"application/javascript","module-type":"texteditoroperation"},"$:/core/modules/editor/operations/text/make-link.js":{"text":"!function(){'use strict';exports['make-link']=function(e,t){t.selection?t.replacement='[['+t.selection+'|'+e.paramObject.text+']]':t.replacement='[['+e.paramObject.text+']]',t.cutStart=t.selStart,t.cutEnd=t.selEnd,t.newSelStart=t.selStart+t.replacement.length,t.newSelEnd=t.newSelStart}}();","type":"application/javascript","module-type":"texteditoroperation"},"$:/core/modules/editor/operations/text/prefix-lines.js":{"text":"!function(){'use strict';exports['prefix-lines']=function(r,t){var a=parseInt(r.paramObject.count+'',10);t.cutStart=$tw.utils.findPrecedingLineBreak(t.text,t.selStart),t.cutEnd=$tw.utils.findFollowingLineBreak(t.text,t.selEnd);var c=$tw.utils.repeat(r.paramObject.character,a),l=t.text.substring(t.cutStart,t.cutEnd).split(/\\r?\\n/gm);$tw.utils.each(l,function(t,e){for(var n=0;t.charAt(0)===r.paramObject.character;)t=t.substring(1),n++;for(;' '===t.charAt(0);)t=t.substring(1);n!==a&&(t=c+' '+t),l[e]=t}),t.replacement=l.join('\\n'),1===l.length?(t.newSelStart=t.cutStart+t.replacement.length,t.newSelEnd=t.newSelStart):(t.newSelStart=t.cutStart,t.newSelEnd=t.newSelStart+t.replacement.length)}}();","type":"application/javascript","module-type":"texteditoroperation"},"$:/core/modules/editor/operations/text/replace-all.js":{"text":"!function(){'use strict';exports['replace-all']=function(t,e){e.cutStart=0,e.cutEnd=e.text.length,e.replacement=t.paramObject.text,e.newSelStart=0,e.newSelEnd=e.replacement.length}}();","type":"application/javascript","module-type":"texteditoroperation"},"$:/core/modules/editor/operations/text/replace-selection.js":{"text":"!function(){'use strict';exports['replace-selection']=function(t,e){e.replacement=t.paramObject.text,e.cutStart=e.selStart,e.cutEnd=e.selEnd,e.newSelStart=e.selStart,e.newSelEnd=e.selStart+e.replacement.length}}();","type":"application/javascript","module-type":"texteditoroperation"},"$:/core/modules/editor/operations/text/save-selection.js":{"text":"!function(){'use strict';exports['save-selection']=function(t,e){var s=t.paramObject.tiddler,t=t.paramObject.field||'text';s&&t&&this.wiki.setText(s,t,null,e.text.substring(e.selStart,e.selEnd))}}();","type":"application/javascript","module-type":"texteditoroperation"},"$:/core/modules/editor/operations/text/wrap-lines.js":{"text":"!function(){'use strict';exports['wrap-lines']=function(t,e){e.cutStart=$tw.utils.findPrecedingLineBreak(e.text,e.selStart),e.cutEnd=$tw.utils.findFollowingLineBreak(e.text,e.selEnd),e.replacement=t.paramObject.prefix+'\\n'+e.text.substring(e.cutStart,e.cutEnd)+'\\n'+t.paramObject.suffix+'\\n',e.newSelStart=e.cutStart+t.paramObject.prefix.length+1,e.newSelEnd=e.newSelStart+(e.cutEnd-e.cutStart)}}();","type":"application/javascript","module-type":"texteditoroperation"},"$:/core/modules/editor/operations/text/wrap-selection.js":{"text":"!function(){'use strict';exports['wrap-selection']=function(t,e){e.selStart===e.selEnd?(e.text.substring(e.selStart-t.paramObject.prefix.length,e.selStart+t.paramObject.suffix.length)===t.paramObject.prefix+t.paramObject.suffix?(e.cutStart=e.selStart-t.paramObject.prefix.length,e.cutEnd=e.selEnd+t.paramObject.suffix.length,e.replacement='',e.newSelStart=e.cutStart):(e.cutStart=e.selStart,e.cutEnd=e.selEnd,e.replacement=t.paramObject.prefix+t.paramObject.suffix,e.newSelStart=e.selStart+t.paramObject.prefix.length),e.newSelEnd=e.newSelStart):(e.text.substring(e.selStart,e.selStart+t.paramObject.prefix.length)===t.paramObject.prefix&&e.text.substring(e.selEnd-t.paramObject.suffix.length,e.selEnd)===t.paramObject.suffix?(e.cutStart=e.selStart,e.cutEnd=e.selEnd,e.replacement=e.selection.substring(t.paramObject.prefix.length,e.selection.length-t.paramObject.suffix.length)):(e.cutStart=e.selStart,e.cutEnd=e.selEnd,e.replacement=t.paramObject.prefix+e.selection+t.paramObject.suffix),e.newSelStart=e.selStart,e.newSelEnd=e.selStart+e.replacement.length)}}();","type":"application/javascript","module-type":"texteditoroperation"},"$:/core/modules/filterrunprefixes/all.js":{"text":"!function(){'use strict';exports.all=function(c){return function(n,t,u){n.push.apply(n,c(t,u))}}}();","type":"application/javascript","module-type":"filterrunprefix"},"$:/core/modules/filterrunprefixes/and.js":{"text":"!function(){'use strict';exports.and=function(e,i){return function(r,t,n){t=i.wiki.makeTiddlerIterator(r.toArray()),r.clear(),r.pushTop(e(t,n))}}}();","type":"application/javascript","module-type":"filterrunprefix"},"$:/core/modules/filterrunprefixes/else.js":{"text":"!function(){'use strict';exports.else=function(u){return function(n,t,e){0===n.length&&n.pushTop(u(t,e))}}}();","type":"application/javascript","module-type":"filterrunprefix"},"$:/core/modules/filterrunprefixes/except.js":{"text":"!function(){'use strict';exports.except=function(c){return function(t,e,n){t.remove(c(e,n))}}}();","type":"application/javascript","module-type":"filterrunprefix"},"$:/core/modules/filterrunprefixes/filter.js":{"text":"!function(){'use strict';exports.filter=function(i,o){return function(t,e,n){var r;0<t.length&&(r=[],t.each(function(t){0===i(o.wiki.makeTiddlerIterator([t]),n).length&&r.push(t)}),t.remove(r))}}}();","type":"application/javascript","module-type":"filterrunprefix"},"$:/core/modules/filterrunprefixes/intersection.js":{"text":"!function(){'use strict';exports.intersection=function(r){return function(n,t,e){var i;0!==n.length&&(i=r(t,e),e=n.toArray(),n.clear(),$tw.utils.each(e,function(t){-1!==i.indexOf(t)&&n.push(t)}))}}}();","type":"application/javascript","module-type":"filterrunprefix"},"$:/core/modules/filterrunprefixes/or.js":{"text":"!function(){'use strict';exports.or=function(u){return function(n,t,o){n.pushTop(u(t,o))}}}();","type":"application/javascript","module-type":"filterrunprefix"},"$:/core/modules/filterrunprefixes/reduce.js":{"text":"!function(){'use strict';exports.reduce=function(c,i){return function(t,e,n){var u,a;0<t.length&&(u='',a=0,t.each(function(r){var e=c(i.wiki.makeTiddlerIterator([r]),{getVariable:function(e){switch(e){case'currentTiddler':return''+r;case'accumulator':return''+u;case'index':return''+a;case'revIndex':return''+(t.length-1-a);case'length':return''+t.length;default:return n.getVariable(e)}}});0<e.length&&(u=''+e[0]),++a}),t.clear(),t.push(u))}}}();","type":"application/javascript","module-type":"filterrunprefix"},"$:/core/modules/filters/addprefix.js":{"text":"!function(){'use strict';exports.addprefix=function(n,t,r){var u=[];return n(function(n,r){u.push(t.operand+r)}),u}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/addsuffix.js":{"text":"!function(){'use strict';exports.addsuffix=function(n,u,t){var r=[];return n(function(n,t){r.push(t+u.operand)}),r}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/after.js":{"text":"!function(){'use strict';exports.after=function(n,t,e){var r=[];n(function(n,t){r.push(t)});t=r.indexOf(t.operand);return-1===t||t>r.length-2?[]:[r[t+1]]}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/all/current.js":{"text":"!function(){'use strict';exports.current=function(t,e,r){r=r.widget&&r.widget.getVariable('currentTiddler');return r?[r]:[]}}();","type":"application/javascript","module-type":"allfilteroperator"},"$:/core/modules/filters/all/missing.js":{"text":"!function(){'use strict';exports.missing=function(i,s,t){return t.wiki.getMissingTitles()}}();","type":"application/javascript","module-type":"allfilteroperator"},"$:/core/modules/filters/all/orphans.js":{"text":"!function(){'use strict';exports.orphans=function(t,n,i){return i.wiki.getOrphanTitles()}}();","type":"application/javascript","module-type":"allfilteroperator"},"$:/core/modules/filters/all/shadows.js":{"text":"!function(){'use strict';exports.shadows=function(t,i,s){return s.wiki.allShadowTitles()}}();","type":"application/javascript","module-type":"allfilteroperator"},"$:/core/modules/filters/all/tags.js":{"text":"!function(){'use strict';exports.tags=function(t,e,i){return Object.keys(i.wiki.getTagMap())}}();","type":"application/javascript","module-type":"allfilteroperator"},"$:/core/modules/filters/all/tiddlers.js":{"text":"!function(){'use strict';exports.tiddlers=function(t,i,e){return e.wiki.allTitles()}}();","type":"application/javascript","module-type":"allfilteroperator"},"$:/core/modules/filters/all.js":{"text":"!function(){'use strict';var n;exports.all=function(e,r,t){var i=(n||(n={},$tw.modules.applyMethods('allfilteroperator',n)),n),l=new $tw.utils.LinkedList,s=r.operand.split('+');if(1===s.length&&''===s[0])return e;if(1===s.length&&'tiddlers'===s[0])return t.wiki.each;if(1===s.length&&'shadows'===s[0])return t.wiki.eachShadow;if(2===s.length&&'tiddlers'===s[0]&&'shadows'===s[1])return t.wiki.eachTiddlerPlusShadows;if(2===s.length&&'shadows'===s[0]&&'tiddlers'===s[1])return t.wiki.eachShadowPlusTiddlers;for(var a=0;a<s.length;a++){var d=i[s[a]];d&&l.pushTop(d(e,r.prefix,t))}return l.toArray()}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/backlinks.js":{"text":"!function(){'use strict';exports.backlinks=function(i,t,n){var s=[];return i(function(i,t){$tw.utils.pushTop(s,n.wiki.getTiddlerBacklinks(t))}),s}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/before.js":{"text":"!function(){'use strict';exports.before=function(n,e,r){var t=[];n(function(n,e){t.push(e)});e=t.indexOf(e.operand);return e<=0?[]:[t[e-1]]}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/commands.js":{"text":"!function(){'use strict';exports.commands=function(t,n,s){var c=[];return $tw.utils.each($tw.commands,function(t,n){c.push(n)}),c.sort(),c}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/compare.js":{"text":"!function(){'use strict';exports.compare=function(n,e,t){var r=e.suffixes||[],u=(r[0]||[])[0],r=(r[1]||[])[0],i=$tw.utils.makeCompareFunction(u,{defaultType:'number'}),o=a[r]||a.eq,f='!'===e.prefix,c=[];return n(function(n,t){o(i(t,e.operand))!==f&&c.push(t)}),c};var a={eq:function(n){return 0===n},ne:function(n){return 0!==n},gteq:function(n){return 0<=n},gt:function(n){return 0<n},lteq:function(n){return n<=0},lt:function(n){return n<0}}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/contains.js":{"text":"!function(){'use strict';exports.contains=function(i,t,n){var e=[],s=(t.suffix||'list').toLowerCase();return'!'===t.prefix?i(function(i,n){i&&-1!==i.getFieldList(s).indexOf(t.operand)||e.push(n)}):i(function(i,n){i&&-1!==i.getFieldList(s).indexOf(t.operand)&&e.push(n)}),e}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/count.js":{"text":"!function(){'use strict';exports.count=function(n,t,u){var c=0;return n(function(n,t){c++}),[c+'']}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/days.js":{"text":"!function(){'use strict';exports.days=function(t,e,s){function i(t){return 0===(t=$tw.utils.sign(a-new Date(t).setHours(0,0,0,0)))||t===f}var n=[],u=e.suffix||'modified',r=parseInt(e.operand,10)||0,f=$tw.utils.sign(r),a=(new Date).setHours(0,0,0,0)+864e5*r;return'!'===e.prefix?(a-=864e5*f,t(function(t,e){t&&t.fields[u]&&(i($tw.utils.parseDate(t.fields[u]))||n.push(e))})):t(function(t,e){t&&t.fields[u]&&i($tw.utils.parseDate(t.fields[u]))&&n.push(e)}),n}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/duplicateslugs.js":{"text":"!function(){'use strict';exports.duplicateslugs=function(u,t,n){var s=Object.create(null),c=[];return u(function(u,t){var i=n.wiki.slugify(t);i in s?(!0!==s[i]&&(c.push(s[i]),s[i]=!0),c.push(t)):s[i]=t}),c}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/each.js":{"text":"!function(){'use strict';exports.each=function(t,i,u){var n,s=[],e={},o=i.operand||'title';return'value'===i.suffix&&'title'===o?t(function(t,i){$tw.utils.hop(e,i)||(e[i]=!0,s.push(i))}):'list-item'!==i.suffix?t('title'===o?function(t,i){t&&!$tw.utils.hop(e,i)&&(e[i]=!0,s.push(i))}:function(t,i){t&&(n=t.getFieldString(o),$tw.utils.hop(e,n)||(e[n]=!0,s.push(i)))}):t(function(t,i){t&&$tw.utils.each(u.wiki.getTiddlerList(i,o),function(t){$tw.utils.hop(e,t)||(e[t]=!0,s.push(t))})}),s}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/eachday.js":{"text":"!function(){'use strict';exports.eachday=function(e,t,s){var i=[],n=[],u=t.operand||'modified';return e(function(e,t){e&&e.fields[u]&&(e=$tw.utils.parseDate(e.fields[u]),e=(e=new Date(e).setHours(0,0,0,0))+0,-1===n.indexOf(e)&&(n.push(e),i.push(t)))}),i}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/editiondescription.js":{"text":"!function(){'use strict';exports.editiondescription=function(t,i,n){var o,e=[];return!$tw.node||(o=$tw.utils.getEditionInfo())&&t(function(t,i){$tw.utils.hop(o,i)&&e.push(o[i].description||'')}),e}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/editions.js":{"text":"!function(){'use strict';exports.editions=function(t,n,i){var o,s=[];return $tw.node&&((o=$tw.utils.getEditionInfo())&&$tw.utils.each(o,function(t,n){s.push(n)}),s.sort()),s}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/else.js":{"text":"!function(){'use strict';exports.else=function(n,t,e){var r=[];return n(function(n,t){r.push(t)}),0===r.length?[t.operand]:r}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/decodeuricomponent.js":{"text":"!function(){'use strict';exports.decodeuricomponent=function(n,t,e){var r=[];return n(function(n,t){var e=t;try{e=decodeURIComponent(t)}catch(n){}r.push(e)}),r},exports.encodeuricomponent=function(n,t,e){var r=[];return n(function(n,t){r.push(encodeURIComponent(t))}),r},exports.decodeuri=function(n,t,e){var r=[];return n(function(n,t){var e=t;try{e=decodeURI(t)}catch(n){}r.push(e)}),r},exports.encodeuri=function(n,t,e){var r=[];return n(function(n,t){r.push(encodeURI(t))}),r},exports.decodehtml=function(n,t,e){var r=[];return n(function(n,t){r.push($tw.utils.htmlDecode(t))}),r},exports.encodehtml=function(n,t,e){var r=[];return n(function(n,t){r.push($tw.utils.htmlEncode(t))}),r},exports.stringify=function(n,e,t){var r=[];return n(function(n,t){r.push($tw.utils.stringify(t,'rawunicode'===e.suffix))}),r},exports.jsonstringify=function(n,e,t){var r=[];return n(function(n,t){r.push($tw.utils.jsonStringify(t,'rawunicode'===e.suffix))}),r},exports.escaperegexp=function(n,t,e){var r=[];return n(function(n,t){r.push($tw.utils.escapeRegExp(t))}),r},exports.escapecss=function(n,t,e){var r=[];return n(function(n,t){r.push($tw.utils.escapeCSS(t))}),r}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/enlist.js":{"text":"!function(){'use strict';exports.enlist=function(r,e,t){var i=!1;switch(e.suffix){case'raw':i=!0;break;case'dedupe':i=!1}var n=$tw.utils.parseStringArray(e.operand,i);if('!'!==e.prefix)return n;var s=[];return r(function(r,e){-1===n.indexOf(e)&&s.push(e)}),s}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/field.js":{"text":"!function(){'use strict';exports.field=function(e,i,n){var r,t=[],l=(i.suffix||i.operator||'title').toLowerCase();if('!'===i.prefix)i.regexp?e(function(e,n){e&&(null===(e=e.getFieldString(l))||i.regexp.exec(e))||t.push(n)}):e(function(e,n){e&&(null===(e=e.getFieldString(l))||e===i.operand)||t.push(n)});else if(i.regexp)e(function(e,n){!e||null!==(e=e.getFieldString(l))&&i.regexp.exec(e)&&t.push(n)});else{if(e.byField&&i.operand&&(r=e.byField(l,i.operand)))return r;e(function(e,n){!e||null!==(e=e.getFieldString(l))&&e===i.operand&&t.push(n)})}return t}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/fields.js":{"text":"!function(){'use strict';exports.fields=function(i,e,f){var s,n=[],t=(e.suffixes||[])[0]||[],u=$tw.utils.parseStringArray(e.operand);return i(function(i,e){if(i)if(-1!==t.indexOf('include'))for(s in i.fields)-1!==u.indexOf(s)&&$tw.utils.pushTop(n,s);else if(-1!==t.indexOf('exclude'))for(s in i.fields)-1===u.indexOf(s)&&$tw.utils.pushTop(n,s);else for(s in i.fields)$tw.utils.pushTop(n,s)}),n}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/filter.js":{"text":"!function(){'use strict';exports.filter=function(i,e,r){var t=r.wiki.compileFilter(e.operand),n=[],l='!'!==e.prefix;return i(function(i,e){0<t.call(r.wiki,r.wiki.makeTiddlerIterator([e])).length==l&&n.push(e)}),n}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/format/date.js":{"text":"!function(){'use strict';exports.date=function(t,n,i){var a=[];return t(function(t,i){i=$tw.utils.parseDate(i);i&&$tw.utils.isDate(i)&&'Invalid Date'!==i.toString()&&a.push($tw.utils.formatDateString(i,n||'YYYY MM DD 0hh:0mm'))}),a}}();","type":"application/javascript","module-type":"formatfilteroperator"},"$:/core/modules/filters/format/relativedate.js":{"text":"!function(){'use strict';exports.relativedate=function(t,e,i){var a=[];return t(function(t,e){e=$tw.utils.parseDate(e);e&&$tw.utils.isDate(e)&&'Invalid Date'!==e.toString()&&a.push($tw.utils.getRelativeDate(new Date-new Date(e)).description)}),a}}();","type":"application/javascript","module-type":"formatfilteroperator"},"$:/core/modules/filters/format.js":{"text":"!function(){'use strict';var f;exports.format=function(r,t,o){var e=(f||(f={},$tw.modules.applyMethods('formatfilteroperator',f)),f);if(t.suffix){e=e[t.suffix];return e?e(r,t.operand,o):[$tw.language.getString('Error/FormatFilterOperator')]}var a=[];return r(function(r,t){a.push(t)}),a}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/get.js":{"text":"!function(){'use strict';exports.get=function(t,e,n){var r=[];return t(function(t,n){!t||(t=t.getFieldString(e.operand))&&r.push(t)}),r}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/getindex.js":{"text":"!function(){'use strict';exports.getindex=function(t,i,n){var r,a=[];return i.operand&&t(function(t,e){e=t?t.fields.title:e,(r=n.wiki.extractTiddlerDataItem(t,i.operand))&&a.push(r)}),a}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/getvariable.js":{"text":"!function(){'use strict';exports.getvariable=function(t,e,i){var n=[];return t(function(t,e){n.push(i.widget.getVariable(e)||'')}),n}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/has.js":{"text":"!function(){'use strict';exports.has=function(e,i,n){var u=[],t='!'===i.prefix;return'field'===i.suffix?e(t?function(e,t){e&&(!e||$tw.utils.hop(e.fields,i.operand))||u.push(t)}:function(e,t){e&&$tw.utils.hop(e.fields,i.operand)&&u.push(t)}):'index'===i.suffix?e(t?function(e,t){e&&(!e||$tw.utils.hop(n.wiki.getTiddlerDataCached(e,Object.create(null)),i.operand))||u.push(t)}:function(e,t){e&&$tw.utils.hop(n.wiki.getTiddlerDataCached(e,Object.create(null)),i.operand)&&u.push(t)}):e(t?function(e,t){e&&$tw.utils.hop(e.fields,i.operand)&&0!==e.fields[i.operand].length||u.push(t)}:function(e,t){e&&$tw.utils.hop(e.fields,i.operand)&&0!==e.fields[i.operand].length&&u.push(t)}),u}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/haschanged.js":{"text":"!function(){'use strict';exports.haschanged=function(n,t,i){var u=[];return'!'===t.prefix?n(function(n,t){0===i.wiki.getChangeCount(t)&&u.push(t)}):n(function(n,t){0<i.wiki.getChangeCount(t)&&u.push(t)}),u}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/indexes.js":{"text":"!function(){'use strict';exports.indexes=function(t,e,i){var n=[];return t(function(t,e){e=i.wiki.getTiddlerDataCached(e);e&&$tw.utils.pushTop(n,Object.keys(e))}),n.sort(),n}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/insertbefore.js":{"text":"!function(){'use strict';exports.insertbefore=function(e,n,r){var i=[];e(function(e,n){i.push(n)});e=r.widget&&r.widget.getVariable(n.suffix||'currentTiddler');return e!==n.operand&&(-1!==(r=i.indexOf(n.operand))&&i.splice(r,1),-1!==(r=i.indexOf(e))?i.splice(r,0,n.operand):i.push(n.operand)),i}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/is/binary.js":{"text":"!function(){'use strict';exports.binary=function(i,n,r){var t=[];return i('!'===n?function(i,n){r.wiki.isBinaryTiddler(n)||t.push(n)}:function(i,n){r.wiki.isBinaryTiddler(n)&&t.push(n)}),t}}();","type":"application/javascript","module-type":"isfilteroperator"},"$:/core/modules/filters/is/blank.js":{"text":"!function(){'use strict';exports.blank=function(n,t,u){var c=[];return n('!'===t?function(n,t){t&&c.push(t)}:function(n,t){t||c.push(t)}),c}}();","type":"application/javascript","module-type":"isfilteroperator"},"$:/core/modules/filters/is/current.js":{"text":"!function(){'use strict';exports.current=function(t,n,r){var e=[],u=r.widget&&r.widget.getVariable('currentTiddler');return t('!'===n?function(t,n){n!==u&&e.push(n)}:function(t,n){n===u&&e.push(n)}),e}}();","type":"application/javascript","module-type":"isfilteroperator"},"$:/core/modules/filters/is/draft.js":{"text":"!function(){'use strict';exports.draft=function(t,f,i){var n=[];return t('!'===f?function(t,f){t&&$tw.utils.hop(t.fields,'draft.of')||n.push(f)}:function(t,f){t&&$tw.utils.hop(t.fields,'draft.of')&&0!==t.fields['draft.of'].length&&n.push(f)}),n}}();","type":"application/javascript","module-type":"isfilteroperator"},"$:/core/modules/filters/is/image.js":{"text":"!function(){'use strict';exports.image=function(i,n,e){var t=[];return i('!'===n?function(i,n){e.wiki.isImageTiddler(n)||t.push(n)}:function(i,n){e.wiki.isImageTiddler(n)&&t.push(n)}),t}}();","type":"application/javascript","module-type":"isfilteroperator"},"$:/core/modules/filters/is/missing.js":{"text":"!function(){'use strict';exports.missing=function(i,t,s){var n=[];return i('!'===t?function(i,t){s.wiki.tiddlerExists(t)&&n.push(t)}:function(i,t){s.wiki.tiddlerExists(t)||n.push(t)}),n}}();","type":"application/javascript","module-type":"isfilteroperator"},"$:/core/modules/filters/is/orphan.js":{"text":"!function(){'use strict';exports.orphan=function(n,i,t){var u=[],e=t.wiki.getOrphanTitles();return n('!'===i?function(n,i){-1===e.indexOf(i)&&u.push(i)}:function(n,i){-1!==e.indexOf(i)&&u.push(i)}),u}}();","type":"application/javascript","module-type":"isfilteroperator"},"$:/core/modules/filters/is/shadow.js":{"text":"!function(){'use strict';exports.shadow=function(i,n,o){var s=[];return i('!'===n?function(i,n){o.wiki.isShadowTiddler(n)||s.push(n)}:function(i,n){o.wiki.isShadowTiddler(n)&&s.push(n)}),s}}();","type":"application/javascript","module-type":"isfilteroperator"},"$:/core/modules/filters/is/system.js":{"text":"!function(){'use strict';exports.system=function(i,s,t){var n=[];return i('!'===s?function(i,s){t.wiki.isSystemTiddler(s)||n.push(s)}:function(i,s){t.wiki.isSystemTiddler(s)&&n.push(s)}),n}}();","type":"application/javascript","module-type":"isfilteroperator"},"$:/core/modules/filters/is/tag.js":{"text":"!function(){'use strict';exports.tag=function(t,u,i){var n=[],o=i.wiki.getTagMap();return t('!'===u?function(t,u){$tw.utils.hop(o,u)||n.push(u)}:function(t,u){$tw.utils.hop(o,u)&&n.push(u)}),n}}();","type":"application/javascript","module-type":"isfilteroperator"},"$:/core/modules/filters/is/tiddler.js":{"text":"!function(){'use strict';exports.tiddler=function(i,t,n){var s=[];return i('!'===t?function(i,t){n.wiki.tiddlerExists(t)||s.push(t)}:function(i,t){n.wiki.tiddlerExists(t)&&s.push(t)}),s}}();","type":"application/javascript","module-type":"isfilteroperator"},"$:/core/modules/filters/is/variable.js":{"text":"!function(){'use strict';exports.variable=function(i,n,t){var e=[];return i('!'===n?function(i,n){n in t.widget.variables||e.push(n)}:function(i,n){n in t.widget.variables&&e.push(n)}),e}}();","type":"application/javascript","module-type":"isfilteroperator"},"$:/core/modules/filters/is.js":{"text":"!function(){'use strict';var i;exports.is=function(r,t,e){var n=(i||(i={},$tw.modules.applyMethods('isfilteroperator',i)),i);if(t.operand){n=n[t.operand];return n?n(r,t.prefix,e):[$tw.language.getString('Error/IsFilterOperator')]}var o=[];return r(function(r,t){o.push(t)}),o}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/limit.js":{"text":"!function(){'use strict';exports.limit=function(n,t,i){var e=[];n(function(n,t){e.push(t)});n=Math.min(e.length,parseInt(t.operand,10));return e='!'===t.prefix?e.slice(-n):e.slice(0,n)}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/links.js":{"text":"!function(){'use strict';exports.links=function(i,t,n){var r=new $tw.utils.LinkedList;return i(function(i,t){r.pushTop(n.wiki.getTiddlerLinks(t))}),r.toArray()}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/list.js":{"text":"!function(){'use strict';exports.list=function(e,i,t){var r=[],n=$tw.utils.parseTextReference(i.operand),d=t.widget&&t.widget.getVariable('currentTiddler'),s=t.wiki.getTiddlerList(n.title||d,n.field,n.index);return'!'===i.prefix?e(function(e,i){-1===s.indexOf(i)&&r.push(i)}):r=s,r}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/listed.js":{"text":"!function(){'use strict';exports.listed=function(i,t,n){var s=t.operand||'list',r=[];return i(function(i,t){$tw.utils.pushTop(r,n.wiki.findListingsOfTiddler(t,s))}),r}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/listops.js":{"text":"!function(){'use strict';exports.order=function(t,n,r){var e=[];return'reverse'===n.operand.toLowerCase()?t(function(t,n){e.unshift(n)}):t(function(t,n){e.push(n)}),e},exports.reverse=function(t,n,r){var e=[];return t(function(t,n){e.unshift(n)}),e},exports.first=function(t,n,r){var n=$tw.utils.getInt(n.operand,1),e=[];return t(function(t,n){e.push(n)}),e.slice(0,n)},exports.last=function(t,n,r){var n=$tw.utils.getInt(n.operand,1),e=[];return t(function(t,n){e.push(n)}),e.slice(-n)},exports.rest=function(t,n,r){var n=$tw.utils.getInt(n.operand,1),e=[];return t(function(t,n){e.push(n)}),e.slice(n)},exports.butfirst=exports.rest,exports.bf=exports.rest,exports.butlast=function(t,n,r){var n=$tw.utils.getInt(n.operand,1),e=[];return t(function(t,n){e.push(n)}),e.slice(0,-n)},exports.bl=exports.butlast,exports.nth=function(t,n,r){var n=$tw.utils.getInt(n.operand,1),e=[];return t(function(t,n){e.push(n)}),e.slice(n-1,n)}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/lookup.js":{"text":"!function(){'use strict';exports.lookup=function(t,n,u){var e=[];return t(function(t,i){e.push(u.wiki.getTiddlerText(n.operand+i)||n.suffix||'')}),e}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/match.js":{"text":"!function(){'use strict';exports.match=function(e,o,n){var s=[];return-1!==((o.suffixes||[])[0]||[]).indexOf('caseinsensitive')?'!'===o.prefix?e(function(e,n){n.toLowerCase()!==(o.operand||'').toLowerCase()&&s.push(n)}):e(function(e,n){n.toLowerCase()===(o.operand||'').toLowerCase()&&s.push(n)}):'!'===o.prefix?e(function(e,n){n!==o.operand&&s.push(n)}):e(function(e,n){n===o.operand&&s.push(n)}),s}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/math.js":{"text":"!function(){'use strict';function t(o){return function(t,n,r){var u=[],e=$tw.utils.parseNumber(n.operand);return t(function(t,n){u.push($tw.utils.stringifyNumber(o($tw.utils.parseNumber(n),e)))}),u}}function n(e,o){return o=o||0,function(t,n,r){var u=[];return t(function(t,n){u.push(n)}),[$tw.utils.stringifyNumber(u.reduce(function(t,n){return e(t,$tw.utils.parseNumber(n))},o))]}}exports.negate=t(function(t){return-t}),exports.abs=t(function(t){return Math.abs(t)}),exports.ceil=t(function(t){return Math.ceil(t)}),exports.floor=t(function(t){return Math.floor(t)}),exports.round=t(function(t){return Math.round(t)}),exports.trunc=t(function(t){return Math.trunc(t)}),exports.untrunc=t(function(t){return Math.ceil(Math.abs(t))*Math.sign(t)}),exports.sign=t(function(t){return Math.sign(t)}),exports.add=t(function(t,n){return t+n}),exports.subtract=t(function(t,n){return t-n}),exports.multiply=t(function(t,n){return t*n}),exports.divide=t(function(t,n){return t/n}),exports.remainder=t(function(t,n){return t%n}),exports.max=t(function(t,n){return Math.max(t,n)}),exports.min=t(function(t,n){return Math.min(t,n)}),exports.fixed=t(function(t,n){return Number.prototype.toFixed.call(t,Math.min(Math.max(n,0),100))}),exports.precision=t(function(t,n){return Number.prototype.toPrecision.call(t,Math.min(Math.max(n,1),100))}),exports.exponential=t(function(t,n){return Number.prototype.toExponential.call(t,Math.min(Math.max(n,0),100))}),exports.power=t(function(t,n){return Math.pow(t,n)}),exports.log=t(function(t,n){return n?Math.log(t)/Math.log(n):Math.log(t)}),exports.sum=n(function(t,n){return t+n},0),exports.product=n(function(t,n){return t*n},1),exports.maxall=n(function(t,n){return Math.max(t,n)},-1/0),exports.minall=n(function(t,n){return Math.min(t,n)},1/0)}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/minlength.js":{"text":"!function(){'use strict';exports.minlength=function(n,t,e){var r=[],u=parseInt(t.operand||'',10)||0;return n(function(n,t){t.length>=u&&r.push(t)}),r}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/modules.js":{"text":"!function(){'use strict';exports.modules=function(t,u,n){var s=[];return t(function(t,u){$tw.utils.each($tw.modules.types[u],function(t,u){s.push(u)})}),s.sort(),s}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/moduletypes.js":{"text":"!function(){'use strict';exports.moduletypes=function(t,s,u){var e=[];return $tw.utils.each($tw.modules.types,function(t,s){e.push(s)}),e.sort(),e}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/next.js":{"text":"!function(){'use strict';exports.next=function(n,t,e){var i=[],r=e.wiki.getTiddlerList(t.operand);return n(function(n,t){t=r.indexOf(t);0<++t&&t<r.length&&i.push(r[t])}),i}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/plugintiddlers.js":{"text":"!function(){'use strict';exports.plugintiddlers=function(t,i,e){var n=[];return t(function(t,i){i=e.wiki.getPluginInfo(i)||e.wiki.getTiddlerDataCached(i,{tiddlers:[]});i&&i.tiddlers&&$tw.utils.each(i.tiddlers,function(t,i){n.push(i)})}),n.sort(),n}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/prefix.js":{"text":"!function(){'use strict';exports.prefix=function(n,t,r){var e=[];return'!'===t.prefix?n(function(n,r){r.substr(0,t.operand.length)!==t.operand&&e.push(r)}):n(function(n,r){r.substr(0,t.operand.length)===t.operand&&e.push(r)}),e}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/previous.js":{"text":"!function(){'use strict';exports.previous=function(i,n,t){var e=[],r=t.wiki.getTiddlerList(n.operand);return i(function(i,n){n=r.indexOf(n);0<=--n&&e.push(r[n])}),e}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/range.js":{"text":"!function(){'use strict';exports.range=function(e,r,t){for(var a,n,s,i=[],o=r.operand.split(/[,:;]/g),u=0,f=0;f<o.length;f++){if(!/^\\s*[+-]?((\\d+(\\.\\d*)?)|(\\.\\d+))\\s*$/.test(o[f]))return['range: bad number \"'+o[f]+'\"'];var p=/\\.\\d+/.exec(o[f]);p&&(u=Math.max(u,p[0].length-1)),o[f]=parseFloat(o[f])}switch(o.length){case 1:if(1<=(n=o[0]))a=1;else{if(!(n<=-1))return[];a=-1}s=1;break;case 2:a=o[0],n=o[1],s=1;break;case 3:a=o[0],n=o[1],s=Math.abs(o[2])}if(0===s)return['range: increment 0 causes infinite loop'];var c=n<a?-1:1;if(1e4<(n-a)/(s*=c))return['range: too many steps (over 10K)'];var g=10010;if((n+=.5*c*Math.pow(.1,u))<a)for(f=a;n<f&&(i.push(f.toFixed(u)),!(--g<0));f+=s);else for(f=a;f<n&&(i.push(f.toFixed(u)),!(--g<0));f+=s);return g<0?['range: unexpectedly large output']:('!'===r.prefix&&i.reverse(),i)}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/reduce.js":{"text":"!function(){'use strict';exports.reduce=function(e,r,t){var n=[];e(function(e,r){n.push(r)});for(var a=t.wiki.compileFilter(r.operand),i=r.operands[1]||'',u=0;u<n.length;u++){var c=n[u],l=a.call(t.wiki,t.wiki.makeTiddlerIterator([c]),{getVariable:function(e){switch(e){case'currentTiddler':return''+c;case'accumulator':return''+i;case'index':return''+u;case'revIndex':return''+(n.length-1-u);case'length':return''+n.length;default:return t.widget.getVariable(e)}}});0<l.length&&(i=''+l[0])}return 0<n.length?[i]:[]}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/regexp.js":{"text":"!function(){'use strict';exports.regexp=function(e,t,n){function r(e,t){return e?e.getFieldString(c):'title'===c?t:null}var u,i=[],c=(t.suffix||'title').toLowerCase(),l='',s=t.operand,g=/^\\(\\?([gim]+)\\)/.exec(s);g?(l=g[1],s=s.substr(g[0].length)):(g=/\\(\\?([gim]+)\\)$/.exec(s))&&(l=g[1],s=s.substr(0,s.length-g[0].length));try{u=new RegExp(s,l)}catch(e){return[''+e]}return'!'===t.prefix?e(function(e,t){e=r(e,t);null!==e&&(u.exec(e)||i.push(t))}):e(function(e,t){e=r(e,t);null!==e&&u.exec(e)&&i.push(t)}),i}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/removeprefix.js":{"text":"!function(){'use strict';exports.removeprefix=function(n,e,r){var t=[];return n(function(n,r){r.substr(0,e.operand.length)===e.operand&&t.push(r.substr(e.operand.length))}),t}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/removesuffix.js":{"text":"!function(){'use strict';exports.removesuffix=function(n,e,t){var r=[];return n(function(n,t){t&&t.substr(-e.operand.length)===e.operand&&r.push(t.substr(0,t.length-e.operand.length))}),r}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/sameday.js":{"text":"!function(){'use strict';exports.sameday=function(e,t,s){var i=[],n=t.suffix||'modified',u=new Date($tw.utils.parseDate(t.operand)).setHours(0,0,0,0);return e(function(e,t){e&&e.getFieldDay(n)===u&&i.push(t)}),i}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/search.js":{"text":"!function(){'use strict';exports.search=function(e,i,r){var s='!'===i.prefix;if(i.suffixes){var c,n=function(e){return-1!==(i.suffixes[1]||[]).indexOf(e)},t=!1,a=i.suffixes[0]||[],f=a[0]||'';return'-'===f.charAt(0)?(c=[f.slice(1)].concat(a.slice(1)),t=!0):'*'===a[0]?(c=[],t=!0):c=a.slice(0),r.wiki.search(i.operand,{source:e,invert:s,field:c,excludeField:t,caseSensitive:n('casesensitive'),literal:n('literal'),whitespace:n('whitespace'),anchored:n('anchored'),regexp:n('regexp'),words:n('words')})}return r.wiki.search(i.operand,{source:e,invert:s})}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/shadowsource.js":{"text":"!function(){'use strict';exports.shadowsource=function(t,o,u){var r=[];return t(function(t,o){o=u.wiki.getShadowSource(o);o&&$tw.utils.pushTop(r,o)}),r.sort(),r}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/slugify.js":{"text":"!function(){'use strict';exports.slugify=function(i,u,n){var t=[];return i(function(i,u){t.push(n.wiki.slugify(u))}),t}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/sort.js":{"text":"!function(){'use strict';exports.sort=function(r,t,i){r=e(r);return i.wiki.sortTiddlers(r,t.operand||'title','!'===t.prefix,!1,!1),r},exports.nsort=function(r,t,i){r=e(r);return i.wiki.sortTiddlers(r,t.operand||'title','!'===t.prefix,!1,!0),r},exports.sortan=function(r,t,i){r=e(r);return i.wiki.sortTiddlers(r,t.operand||'title','!'===t.prefix,!1,!1,!0),r},exports.sortcs=function(r,t,i){r=e(r);return i.wiki.sortTiddlers(r,t.operand||'title','!'===t.prefix,!0,!1),r},exports.nsortcs=function(r,t,i){r=e(r);return i.wiki.sortTiddlers(r,t.operand||'title','!'===t.prefix,!0,!0),r};var e=function(r){var i=[];return r(function(r,t){i.push(t)}),i}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/sortsub.js":{"text":"!function(){'use strict';exports.sortsub=function(t,r,e){var n=e.wiki.compileFilter(r.operand),u=[],a=[];t(function(t,r){u.push(r);var i=n.call(e.wiki,function(t){t(e.wiki.getTiddler(r),r)},{getVariable:function(t){return'currentTiddler'===t?r:e.widget.getVariable(t)}});a.push(i[0]||'')});for(var i=new Array(u.length),o=0;o<u.length;o++)i[o]=o;var c=$tw.utils.makeCompareFunction(r.suffix,{defaultType:'string',invert:'!'===r.prefix}),i=i.sort(function(t,r){return c(a[t],a[r])}),l=[];return $tw.utils.each(i,function(t){l.push(u[t])}),l}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/splitbefore.js":{"text":"!function(){'use strict';exports.splitbefore=function(t,o,n){var p=[];return t(function(t,n){n=n.split(o.operand);1===n.length?$tw.utils.pushTop(p,n[0]):$tw.utils.pushTop(p,n[0]+o.operand)}),p}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/storyviews.js":{"text":"!function(){'use strict';exports.storyviews=function(t,s,o){var e=[],r={};return $tw.modules.applyMethods('storyview',r),$tw.utils.each(r,function(t,s){e.push(s)}),e.sort(),e}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/strings.js":{"text":"!function(){'use strict';var u,i;function t(u){return function(t,e,r){var n=[];return t(function(t,r){Array.prototype.push.apply(n,u(r,e.operand||'',e.suffix||''))}),n}}exports.length=t(function(t){return[''+(''+t).length]}),exports.uppercase=t(function(t){return[(''+t).toUpperCase()]}),exports.lowercase=t(function(t){return[(''+t).toLowerCase()]}),exports.sentencecase=t(function(t){return[$tw.utils.toSentenceCase(t)]}),exports.titlecase=t(function(t){return[$tw.utils.toTitleCase(t)]}),exports.trim=function(t,r,e){var n=[],u=r.suffix||'',i=r.operand||'',o='prefix'===u?function(t,r){return[$tw.utils.trimPrefix(t,r)]}:'suffix'===u?function(t,r){return[$tw.utils.trimSuffix(t,r)]}:''===i?function(t){return[$tw.utils.trim(t)]}:function(t,r){return[$tw.utils.trimSuffix($tw.utils.trimPrefix(t,r),r)]};return t(function(t,r){Array.prototype.push.apply(n,o(r,i))}),n},exports.split=t(function(t,r){return(''+t).split(r)}),exports['enlist-input']=t(function(t,r,e){return $tw.utils.parseStringArray(''+t,'raw'===e)}),exports.join=(u=function(t,r,e){return null===t?r:t+e+r},i=null,function(t,e,r){var n=[];return t(function(t,r){n.push(r)}),0===n.length?[]:[n.reduce(function(t,r){return u(t,r,e.operand||'')},i)||'']}),exports.splitregexp=function(t,r,e){var n,u=[],i=r.suffix||'',o=(-1!==i.indexOf('m')?'m':'')+(-1!==i.indexOf('i')?'i':'');try{n=new RegExp(r.operand||'',o)}catch(t){return['RegExp error: '+t]}return t(function(t,r){Array.prototype.push.apply(u,r.split(n))}),u},exports['search-replace']=function(t,e,r){var n,u,i=[],o=e.suffixes||[],p=o[0]&&o[0][0]||'',s=(-1!==p.indexOf('g')?'g':'')+(-1!==p.indexOf('i')?'i':''),f=!(!o[1]||'regexp'!==o[1][0]);return t(function(t,r){if(r&&1<e.operands.length){n=f?e.operand:$tw.utils.escapeRegExp(e.operand);try{u=new RegExp(n,s)}catch(t){return['RegExp error: '+t]}i.push(r.replace(u,e.operands[1]))}else i.push(r)}),i},exports.pad=function(t,u,r){var i=[],o=u.operand?parseInt(u.operand):0,p=u.operands[1]||'0';return t(function(t,r){if(r&&r.length)if(r.length>=o)i.push(r);else{for(var e='',n=o-r.length;n>e.length;)e+=p;e=e.slice(0,n),u.suffix&&'suffix'===u.suffix?r+=e:r=e+r,i.push(r)}}),i}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/subfilter.js":{"text":"!function(){'use strict';exports.subfilter=function(i,r,e){var t=e.wiki.filterTiddlers(r.operand,e.widget,i);if('!'!==r.prefix)return t;var n=[];return i(function(i,r){-1===t.indexOf(r)&&n.push(r)}),n}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/subtiddlerfields.js":{"text":"!function(){'use strict';exports.subtiddlerfields=function(i,e,n){var u=[];return i(function(i,t){t=n.wiki.getSubTiddler(e.operand,t);if(t)for(var r in t.fields)$tw.utils.pushTop(u,r)}),u}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/suffix.js":{"text":"!function(){'use strict';exports.suffix=function(n,t,r){var u=[];return'!'===t.prefix?n(function(n,r){r.substr(-t.operand.length)!==t.operand&&u.push(r)}):n(function(n,r){r.substr(-t.operand.length)===t.operand&&u.push(r)}),u}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/tag.js":{"text":"!function(){'use strict';exports.tag=function(i,e,t){var n,r,s=[];if('strict'!==(e.suffix||'').toLowerCase()||e.operand)if('!'===e.prefix)r=t.wiki.getTiddlersWithTag(e.operand),i(function(i,e){-1===r.indexOf(e)&&s.push(e)});else if(i.byTag){if(n=i.byTag(e.operand))return n}else r=t.wiki.getTiddlersWithTag(e.operand),i(function(i,e){-1!==r.indexOf(e)&&s.push(e)}),s=t.wiki.sortByList(s,e.operand);else i(function(i,e){s.push(e)});return s}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/tagging.js":{"text":"!function(){'use strict';exports.tagging=function(t,i,n){var u=[];return t(function(t,i){$tw.utils.pushTop(u,n.wiki.getTiddlersWithTag(i))}),u}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/tags.js":{"text":"!function(){'use strict';exports.tags=function(t,s,e){var i={};return t(function(t,s){var e,f;if(t&&t.fields.tags)for(e=0,f=t.fields.tags.length;e<f;e++)i[t.fields.tags[e]]=!0}),Object.keys(i)}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/then.js":{"text":"!function(){'use strict';exports.then=function(n,r,t){var u=[];return n(function(n,t){u.push(r.operand)}),u}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/title.js":{"text":"!function(){'use strict';exports.title=function(t,n,e){var i=[];return'!'===n.prefix?t(function(t,e){t&&t.fields.title!==n.operand&&i.push(e)}):i.push(n.operand),i}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/untagged.js":{"text":"!function(){'use strict';exports.untagged=function(t,s,i){var u=[];return'!'===s.prefix?t(function(t,s){t&&$tw.utils.isArray(t.fields.tags)&&0<t.fields.tags.length&&$tw.utils.pushTop(u,s)}):t(function(t,s){t&&t.hasField('tags')&&(!$tw.utils.isArray(t.fields.tags)||0!==t.fields.tags.length)||$tw.utils.pushTop(u,s)}),u}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/variables.js":{"text":"!function(){'use strict';exports.variables=function(r,t,i){var s,e=[];for(s in i.widget.variables)e.push(s);return e.sort()}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/wikiparserrules.js":{"text":"!function(){'use strict';exports.wikiparserrules=function(t,e,r){var s=[],u=e.operand;return $tw.utils.each($tw.modules.types.wikirule,function(t){t=t.exports;u&&!t.types[u]||s.push(t.name)}),s.sort(),s}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters/x-listops.js":{"text":"!function(){'use strict';function o(e){var n=[];return e(function(e,t){n.push(t)}),n}function r(e,t,n){for(var r,n=n||1,i=0,s=t.length;i<s&&-1===(r=e.indexOf(t[i]));i++);return-1!==r?(n=(i+=n)<s?i:i-s,1<t.length?e.splice(r,1,t[n]):e.splice(r,1)):e.push(t[0]),e}exports.putbefore=function(e,t){var n=o(e),e=n.indexOf(t.operand),t=$tw.utils.getInt(t.suffix,1);return-1===e?n.slice(0,-1):n.slice(0,e).concat(n.slice(-t)).concat(n.slice(e,-t))},exports.putafter=function(e,t){var n=o(e),e=n.indexOf(t.operand),t=$tw.utils.getInt(t.suffix,1);return-1===e?n.slice(0,-1):n.slice(0,e+1).concat(n.slice(-t)).concat(n.slice(e+1,-t))},exports.replace=function(e,t){var n=o(e),e=n.indexOf(t.operand),t=$tw.utils.getInt(t.suffix,1);return-1===e?n.slice(0,-t):n.slice(0,e).concat(n.slice(-t)).concat(n.slice(e+1,-t))},exports.putfirst=function(e,t){e=o(e),t=$tw.utils.getInt(t.suffix,1);return e.slice(-t).concat(e.slice(0,-t))},exports.putlast=function(e,t){e=o(e),t=$tw.utils.getInt(t.suffix,1);return e.slice(t).concat(e.slice(0,t))},exports.move=function(e,t){var n=o(e),r=n.indexOf(t.operand),e=$tw.utils.getInt(t.suffix,1),t=n.splice(r,1),e=0<r+e?r+e:0;return n.slice(0,e).concat(t).concat(n.slice(e))},exports.allafter=function(e,t){var n=o(e),e=n.indexOf(t.operand);return-1===e?[]:t.suffix?n.slice(e):n.slice(e+1)},exports.allbefore=function(e,t){var n=o(e),e=n.indexOf(t.operand);return-1===e?[]:t.suffix?n.slice(0,e+1):n.slice(0,e)},exports.append=function(e,t){var n=$tw.utils.parseStringArray(t.operand,'true'),r=o(e),e=parseInt(t.suffix)||n.length;return 0===n.length?r:t.prefix?r.concat(n.slice(-e)):r.concat(n.slice(0,e))},exports.prepend=function(e,t){var n=$tw.utils.parseStringArray(t.operand,'true'),r=o(e),e=$tw.utils.getInt(t.suffix,n.length);return 0===n.length?r:(t.prefix?n.slice(-e):n.slice(0,e)).concat(r)},exports.remove=function(e,t){for(var n,r=$tw.utils.parseStringArray(t.operand,'true'),i=o(e),s=parseInt(t.suffix)||r.length,c=r.length-1,u=0;u<s;++u)-1!==(n=t.prefix?i.indexOf(r[c-u]):i.indexOf(r[u]))&&i.splice(n,1);return i},exports.sortby=function(e,t){e=o(e);if(!e||e.length<2)return e;var n=$tw.utils.parseStringArray(t.operand,'true');return e.sort(function(e,t){return n.indexOf(e)-n.indexOf(t)}),e},exports.unique=function(e,t){return o(e).reduce(function(e,t){return e.indexOf(t)<0&&e.push(t),e},[])},exports.toggle=function(e,t){return r(o(e),t.operands)},exports.cycle=function(e,t){var n=o(e),e=t.operand.length?$tw.utils.parseStringArray(t.operand,'true'):[''],t=$tw.utils.getInt(t.operands[1]||'',1);return t<0&&(e.reverse(),t=Math.abs(t)),r(n,e,t)}}();","type":"application/javascript","module-type":"filteroperator"},"$:/core/modules/filters.js":{"text":"!function(){'use strict';exports.parseFilter=function(e){e=e||'';for(var r,t=[],i=0,s=/(\\s+)/gm,n=/((?:\\+|\\-|~|=|\\:(\\w+))?)(?:(\\[)|(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s\\[\\]]+))/gm;i<e.length;)if(s.lastIndex=i,(r=s.exec(e))&&r.index===i&&(i+=r[0].length),i<e.length){if(n.lastIndex=i,!(r=n.exec(e))||r.index!==i)throw $tw.language.getString('Error/FilterSyntax');var a={prefix:'',operators:[]};r[1]&&(a.prefix=r[1],i+=a.prefix.length,r[2]&&(a.namedPrefix=r[2])),i=r[3]?function(e,s,n){var a,o;if('['!==s.charAt(n++))throw'Missing [ in filter expression';do{if(o={},'!'===s.charAt(n)&&(o.prefix=s.charAt(n++)),-1===(a=s.substring(n).search(/[\\[\\{<\\/]/)))throw'Missing [ in filter expression';a+=n;var r=s.charAt(a);o.operator=s.substring(n,a);var t=o.operator.indexOf(':');-1<t?(o.suffix=o.operator.substring(t+1),o.operator=o.operator.substring(0,t)||'field',o.suffixes=[],$tw.utils.each(o.suffix.split(':'),function(e){o.suffixes.push([]),$tw.utils.each(e.split(','),function(e){(e=$tw.utils.trim(e))&&o.suffixes[o.suffixes.length-1].push(e)})})):''===o.operator&&(o.operator='title'),o.operands=[];var i=function(e){var r={};switch(e){case'{':r.indirect=!0,a=s.indexOf('}',n);break;case'[':a=s.indexOf(']',n);break;case'<':r.variable=!0,a=s.indexOf('>',n);break;case'/':var t=/^((?:[^\\\\\\/]|\\\\.)*)\\/(?:\\(([mygi]+)\\))?/g,i=t.exec(s.substring(n));if(!i)throw'Unterminated regular expression in filter expression';o.regexp=new RegExp(i[1],i[2]),console.log('WARNING: Filter',o.operator,'has a deprecated regexp operand',o.regexp),a=n+t.lastIndex-1}if(-1===a)throw'Missing closing bracket in filter expression';o.regexp||(r.text=s.substring(n,a),o.operands.push(r)),n=a+1};for(n=a+1,i(r);','===s.charAt(n);){if(n++,!/^[\\[\\{<\\/]/.test(s.substring(n)))throw'Missing [ in filter expression';a=n,n++,i(s.charAt(a))}}while(e.push(o),']'!==s.charAt(n));if(']'!==s.charAt(n++))throw'Missing ] in filter expression';return n}(a.operators,e,i):r.index+r[0].length,(r[4]||r[5]||r[6])&&a.operators.push({operator:'title',operands:[{text:r[4]||r[5]||r[6]}]}),t.push(a)}return t},exports.getFilterOperators=function(){return this.filterOperators||($tw.Wiki.prototype.filterOperators={},$tw.modules.applyMethods('filteroperator',this.filterOperators)),this.filterOperators},exports.getFilterRunPrefixes=function(){return this.filterRunPrefixes||($tw.Wiki.prototype.filterRunPrefixes={},$tw.modules.applyMethods('filterrunprefix',this.filterRunPrefixes)),this.filterRunPrefixes},exports.filterTiddlers=function(e,r,t){return this.compileFilter(e).call(this,t,r)},exports.compileFilter=function(e){var r;try{r=this.parseFilter(e)}catch(t){return function(e,r){return[$tw.language.getString('Error/Filter')+': '+t]}}var o=this.getFilterOperators(),s=[],f=this;return $tw.utils.each(r,function(r){function t(e,i){var s=e,n=[],a=i&&i.getVariable('currentTiddler');if($tw.utils.each(r.operators,function(e){var r=[],t=e.operator?o[e.operator]||o.field:o.title;$tw.utils.each(e.operands,function(e){e.indirect?e.value=f.getTextReference(e.text,'',a):e.variable?e.value=i.getVariable(e.text,{defaultValue:''}):e.value=e.text,r.push(e.value)}),n=t(s,{operator:e.operator,operand:0<r.length?r[0]:void 0,operands:r,prefix:e.prefix,suffix:e.suffix,suffixes:e.suffixes,regexp:e.regexp},{wiki:f,widget:i}),s=$tw.utils.isArray(n)?f.makeTiddlerIterator(n):n}),$tw.utils.isArray(n))return n;var t=[];return n(function(e,r){t.push(r)}),t}var i=f.getFilterRunPrefixes();s.push(function(){var e={wiki:f};switch(r.prefix||''){case'':return i.or(t,e);case'=':return i.all(t,e);case'-':return i.except(t,e);case'+':return i.and(t,e);case'~':return i.else(t,e);default:return r.namedPrefix&&i[r.namedPrefix]?i[r.namedPrefix](t,e):function(e,r,t){e.clear(),e.push($tw.language.getString('Error/FilterRunPrefix'))}}}())}),$tw.perf.measure('filter: '+e,function(r,t){r?'object'==typeof r&&(r=f.makeTiddlerIterator(r)):r=f.each;var i=new $tw.utils.LinkedList;return $tw.utils.each(s,function(e){e(i,r,t)}),i.toArray()})}}();","type":"application/javascript","module-type":"wikimethod"},"$:/core/modules/indexers/backlinks-indexer.js":{"text":"!function(){'use strict';function t(t){this.wiki=t}t.prototype.init=function(){this.index=null},t.prototype.rebuild=function(){this.index=null},t.prototype._getLinks=function(t){t=this.wiki.parseText(t.fields.type,t.fields.text,{});return t?this.wiki.extractLinks(t.tree):[]},t.prototype.update=function(i){var t,e,n;this.index&&(t=[],e=[],n=this,i.old.exists&&(e=this._getLinks(i.old.tiddler)),i.new.exists&&(t=this._getLinks(i.new.tiddler)),$tw.utils.each(e,function(t){n.index[t]&&delete n.index[t][i.old.tiddler.fields.title]}),$tw.utils.each(t,function(t){n.index[t]||(n.index[t]=Object.create(null)),n.index[t][i.new.tiddler.fields.title]=!0}))},t.prototype.lookup=function(t){var e;return this.index||(this.index=Object.create(null),(e=this).wiki.forEachTiddler(function(i,t){t=e._getLinks(t);$tw.utils.each(t,function(t){e.index[t]||(e.index[t]=Object.create(null)),e.index[t][i]=!0})})),this.index[t]?Object.keys(this.index[t]):[]},exports.BacklinksIndexer=t}();","type":"application/javascript","module-type":"indexer"},"$:/core/modules/indexers/field-indexer.js":{"text":"!function(){'use strict';function i(i){this.wiki=i}i.prototype.init=function(){this.index=null,this.maxIndexedValueLength=128,this.addIndexMethods()},i.prototype.setMaxIndexedValueLength=function(i){this.index=null,this.maxIndexedValueLength=i},i.prototype.addIndexMethods=function(){var n=this;this.wiki.each.byField=function(i,e){var t=n.wiki.allTitles(),e=n.lookup(i,e);return e&&e.filter(function(i){return-1!==t.indexOf(i)})},this.wiki.eachShadow.byField=function(i,e){var t=n.wiki.allShadowTitles(),e=n.lookup(i,e);return e&&e.filter(function(i){return-1!==t.indexOf(i)})},this.wiki.eachTiddlerPlusShadows.byField=function(i,e){e=n.lookup(i,e);return e?e.slice(0):null},this.wiki.eachShadowPlusTiddlers.byField=function(i,e){e=n.lookup(i,e);return e?e.slice(0):null}},i.prototype.rebuild=function(){this.index=null},i.prototype.buildIndexForField=function(t){var n=this;this.index=this.index||Object.create(null),this.index[t]=Object.create(null);var d=this.index[t];this.wiki.eachTiddlerPlusShadows(function(i,e){t in i.fields&&((i=i.getFieldString(t)).length<n.maxIndexedValueLength&&(d[i]=d[i]||[],d[i].push(e)))})},i.prototype.update=function(t){var n=this;null!==this.index&&(t.old.tiddler&&$tw.utils.each(this.index,function(i,e){e in t.old.tiddler.fields&&(!(i=i[t.old.tiddler.getFieldString(e)])||-1!==(e=i.indexOf(t.old.tiddler.fields.title))&&i.splice(e,1))}),t.new.tiddler&&$tw.utils.each(this.index,function(i,e){e in t.new.tiddler.fields&&((e=t.new.tiddler.getFieldString(e)).length<n.maxIndexedValueLength&&(i[e]=i[e]||[],i[e].push(t.new.tiddler.fields.title)))}))},i.prototype.lookup=function(i,e){return e.length>=this.maxIndexedValueLength?null:(null!==this.index&&this.index[i]||this.buildIndexForField(i),this.index[i][e]||[])},exports.FieldIndexer=i}();","type":"application/javascript","module-type":"indexer"},"$:/core/modules/indexers/tag-indexer.js":{"text":"!function(){'use strict';function t(t){this.wiki=t}function i(t,i){this.indexer=t,this.iteratorMethod=i,this.index=null}t.prototype.init=function(){this.subIndexers=[new i(this,'each'),new i(this,'eachShadow'),new i(this,'eachTiddlerPlusShadows'),new i(this,'eachShadowPlusTiddlers')],$tw.utils.each(this.subIndexers,function(t){t.addIndexMethod()})},t.prototype.rebuild=function(){$tw.utils.each(this.subIndexers,function(t){t.rebuild()})},t.prototype.update=function(i){$tw.utils.each(this.subIndexers,function(t){t.update(i)})},i.prototype.addIndexMethod=function(){var i=this;this.indexer.wiki[this.iteratorMethod].byTag=function(t){return i.lookup(t).slice(0)}},i.prototype.rebuild=function(){var e=this;this.index=Object.create(null),this.indexer.wiki[this.iteratorMethod](function(t,i){$tw.utils.each(t.fields.tags,function(t){e.index[t]?e.index[t].titles.push(i):e.index[t]={isSorted:!1,titles:[i]}})})},i.prototype.update=function(t){this.index=null},i.prototype.lookup=function(t){null===this.index&&this.rebuild();var i=this.index[t];return i?(i.isSorted||(this.indexer.wiki.sortByList&&(i.titles=this.indexer.wiki.sortByList(i.titles,t)),i.isSorted=!0),i.titles):[]},exports.TagIndexer=t}();","type":"application/javascript","module-type":"indexer"},"$:/core/modules/info/platform.js":{"text":"!function(){'use strict';exports.getInfoTiddlerFields=function(e){var t,o,n,i=function(t){return t?'yes':'no'},r=[];return r.push({title:'$:/info/browser',text:i(!!$tw.browser)}),r.push({title:'$:/info/node',text:i(!!$tw.node)}),r.push({title:'$:/info/startup-timestamp',text:$tw.utils.stringifyDate(new Date)}),$tw.browser&&((t=function(t,e){r.push({title:'$:/info/url/'+t,text:e})})('full',(i=document.location).toString().split('#')[0]),t('host',i.host),t('hostname',i.hostname),t('protocol',i.protocol),t('port',i.port),t('pathname',i.pathname),t('search',i.search),t('origin',i.origin),r.push({title:'$:/info/browser/screen/width',text:window.screen.width.toString()}),r.push({title:'$:/info/browser/screen/height',text:window.screen.height.toString()}),o=window.matchMedia('(prefers-color-scheme: dark)'),n=function(){return{title:'$:/info/darkmode',text:o.matches?'yes':'no'}},r.push(n()),o.addListener(function(t){e([n()])}),r.push({title:'$:/info/browser/language',text:navigator.language||''})),r}}();","type":"application/javascript","module-type":"info"},"$:/core/modules/keyboard.js":{"text":"!function(){'use strict';var e={cancel:3,help:6,backspace:8,tab:9,clear:12,return:13,enter:13,pause:19,escape:27,space:32,page_up:33,page_down:34,end:35,home:36,left:37,up:38,right:39,down:40,printscreen:44,insert:45,delete:46,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,firefoxsemicolon:59,firefoxequals:61,a:65,b:66,c:67,d:68,e:69,f:70,g:71,h:72,i:73,j:74,k:75,l:76,m:77,n:78,o:79,p:80,q:81,r:82,s:83,t:84,u:85,v:86,w:87,x:88,y:89,z:90,numpad0:96,numpad1:97,numpad2:98,numpad3:99,numpad4:100,numpad5:101,numpad6:102,numpad7:103,numpad8:104,numpad9:105,multiply:106,add:107,separator:108,subtract:109,decimal:110,divide:111,f1:112,f2:113,f3:114,f4:115,f5:116,f6:117,f7:118,f8:119,f9:120,f10:121,f11:122,f12:123,f13:124,f14:125,f15:126,f16:127,f17:128,f18:129,f19:130,f20:131,f21:132,f22:133,f23:134,f24:135,firefoxminus:173,semicolon:186,equals:187,comma:188,dash:189,period:190,slash:191,backquote:192,openbracket:219,backslash:220,closebracket:221,quote:222};function t(t){var s=this;this.namedKeys=e,this.keyNames=[],$tw.utils.each(e,function(t,e){s.keyNames[t]=e.substr(0,1).toUpperCase()+e.substr(1)}),this.metaKeyName=$tw.platform.isMac?'cmd-':'win-',this.shortcutKeysList=[],this.shortcutActionList=[],this.shortcutParsedList=[],this.lookupNames=['shortcuts'],this.lookupNames.push($tw.platform.isMac?'shortcuts-mac':'shortcuts-not-mac'),this.lookupNames.push($tw.platform.isWindows?'shortcuts-windows':'shortcuts-not-windows'),this.lookupNames.push($tw.platform.isLinux?'shortcuts-linux':'shortcuts-not-linux'),this.updateShortcutLists(this.getShortcutTiddlerList()),$tw.wiki.addEventListener('change',function(t){s.handleShortcutChanges(t)})}t.prototype.getModifierKeys=function(){return[16,17,18,20,91,93,224]},t.prototype.parseKeyDescriptor=function(t){for(var e=t.split(/\\+|\\-/),s={keyCode:0,shiftKey:!1,altKey:!1,ctrlKey:!1,metaKey:!1},r=0;r<e.length;r++){var i=e[r].toLowerCase();i.charCodeAt(0);'ctrl'===i?s.ctrlKey=!0:'shift'===i?s.shiftKey=!0:'alt'===i?s.altKey=!0:'meta'!==i&&'cmd'!==i&&'win'!==i||(s.metaKey=!0),this.namedKeys[i]&&(s.keyCode=this.namedKeys[i])}return s.keyCode?s:null},t.prototype.parseKeyDescriptors=function(t,s){var r=this;(s=s||{}).stack=s.stack||[];var i=s.wiki||$tw.wiki;if('string'==typeof t&&''===t)return[];$tw.utils.isArray(t)||(t=t.split(' '));var o=[];return $tw.utils.each(t,function(t){var e;'(('===t.substr(0,2)&&'))'===t.substr(-2,2)?-1===s.stack.indexOf(t)&&(s.stack.push(t),e=t.substring(2,t.length-2),$tw.utils.each(r.lookupNames,function(t){t=t,(t=i.getTiddlerText('$:/config/'+t+'/'+e))&&o.push.apply(o,r.parseKeyDescriptors(t,s))})):o.push(r.parseKeyDescriptor(t))}),o},t.prototype.getPrintableShortcuts=function(t){var e=this,s=[];return $tw.utils.each(t,function(t){t&&s.push((t.ctrlKey?'ctrl-':'')+(t.shiftKey?'shift-':'')+(t.altKey?'alt-':'')+(t.metaKey?e.metaKeyName:'')+e.keyNames[t.keyCode])}),s},t.prototype.checkKeyDescriptor=function(t,e){return e&&t.keyCode===e.keyCode&&t.shiftKey===e.shiftKey&&t.altKey===e.altKey&&t.ctrlKey===e.ctrlKey&&t.metaKey===e.metaKey},t.prototype.checkKeyDescriptors=function(t,e){for(var s=0;s<e.length;s++)if(this.checkKeyDescriptor(t,e[s]))return!0;return!1},t.prototype.getEventModifierKeyDescriptor=function(t){return!t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?!t.shiftKey||t.ctrlKey||t.altKey||t.metaKey?t.ctrlKey&&t.shiftKey&&!t.altKey&&!t.metaKey?'ctrl-shift':!t.altKey||t.shiftKey||t.ctrlKey||t.metaKey?t.altKey&&t.shiftKey&&!t.ctrlKey&&!t.metaKey?'alt-shift':t.altKey&&t.ctrlKey&&!t.shiftKey&&!t.metaKey?'ctrl-alt':t.altKey&&t.shiftKey&&t.ctrlKey&&!t.metaKey?'ctrl-alt-shift':!t.metaKey||t.ctrlKey||t.shiftKey||t.altKey?t.metaKey&&t.ctrlKey&&!t.shiftKey&&!t.altKey?'meta-ctrl':t.metaKey&&t.ctrlKey&&t.shiftKey&&!t.altKey?'meta-ctrl-shift':t.metaKey&&t.ctrlKey&t.shiftKey&&t.altKey?'meta-ctrl-alt-shift':'normal':'meta':'alt':'shift':'ctrl'},t.prototype.getShortcutTiddlerList=function(){return $tw.wiki.getTiddlersWithTag('$:/tags/KeyboardShortcut')},t.prototype.updateShortcutLists=function(t){this.shortcutTiddlers=t;for(var e=0;e<t.length;e++){var s=t[e],s=$tw.wiki.getTiddler(s).fields;this.shortcutKeysList[e]=void 0!==s.key?s.key:void 0,this.shortcutActionList[e]=s.text,this.shortcutParsedList[e]=void 0!==this.shortcutKeysList[e]?this.parseKeyDescriptors(this.shortcutKeysList[e]):void 0}},t.prototype.handleKeydownEvent=function(t){for(var e,s,r=0;r<this.shortcutTiddlers.length;r++)void 0!==this.shortcutParsedList[r]&&this.checkKeyDescriptors(t,this.shortcutParsedList[r])&&(e=this.shortcutParsedList[r],s=this.shortcutActionList[r]);return void 0!==e&&(t.preventDefault(),t.stopPropagation(),$tw.rootWidget.invokeActionString(s,$tw.rootWidget),!0)},t.prototype.detectNewShortcuts=function(s){var r=[],i=!1;return $tw.utils.each(this.lookupNames,function(t){var e='$:/config/'+t+'/';Object.keys(s).forEach(function(t){t.substr(0,t.lastIndexOf('/')+1)===e&&(r.push(t),i=!0)})}),!!i&&$tw.utils.hopArray(s,r)},t.prototype.handleShortcutChanges=function(t){var e=this.getShortcutTiddlerList();!$tw.utils.hopArray(t,this.shortcutTiddlers)&&(!$tw.utils.hopArray(t,e)&&!this.detectNewShortcuts(t))||this.updateShortcutLists(e)},exports.KeyboardManager=t}();","type":"application/javascript","module-type":"global"},"$:/core/modules/language.js":{"text":"!function(){'use strict';function i(i){i=i||'',this.wiki=i.wiki||$tw.wiki}i.prototype.getString=function(i,t){return t=t||{},i='$:/language/'+i,this.wiki.renderTiddler('text/plain',i,{variables:t.variables})},i.prototype.getRawString=function(i){return i='$:/language/'+i,this.wiki.getTiddlerText(i)},exports.Language=i}();","type":"application/javascript","module-type":"global"},"$:/core/modules/macros/changecount.js":{"text":"!function(){'use strict';exports.name='changecount',exports.params=[],exports.run=function(){return this.wiki.getChangeCount(this.getVariable('currentTiddler'))+''}}();","type":"application/javascript","module-type":"macro"},"$:/core/modules/macros/contrastcolour.js":{"text":"!function(){'use strict';exports.name='contrastcolour',exports.params=[{name:'target'},{name:'fallbackTarget'},{name:'colourA'},{name:'colourB'}],exports.run=function(r,t,a,e){var o=$tw.utils.parseCSSColor(r)||$tw.utils.parseCSSColor(t);if(!o)return a;r=$tw.utils.parseCSSColor(a),t=$tw.utils.parseCSSColor(e);if(r&&!t)return r;if(t&&!r)return t;if(!r&&!t)return[255-o[0],255-o[1],255-o[2],o[3]];o=.299*o[0]+.587*o[1]+.114*o[2],r=.299*r[0]+.587*r[1]+.114*r[2],t=.299*t[0]+.587*t[1]+.114*t[2];return Math.abs(o-r)>Math.abs(o-t)?a:e}}();","type":"application/javascript","module-type":"macro"},"$:/core/modules/macros/csvtiddlers.js":{"text":"!function(){'use strict';function a(e){return'\"'+e.replace(/\"/gm,'\"\"')+'\"'}exports.name='csvtiddlers',exports.params=[{name:'filter'},{name:'format'}],exports.run=function(e,i){var r,t,n=this.wiki.filterTiddlers(e),s=[];for(d=0;d<n.length;d++)for(t in(r=this.wiki.getTiddler(n[d])).fields)-1===s.indexOf(t)&&s.push(t);s.sort(),'title text modified modifier created creator'.split(' ').reverse().forEach(function(e,i){var r=s.indexOf(e);-1!==r&&(s.splice(r,1),s.unshift(e))});var o=[],f=[];s.forEach(function(e){f.push(a(e))}),o.push(f.join(','));for(var d=0;d<n.length;d++){for(f=[],r=this.wiki.getTiddler(n[d]),t=0;t<s.length;t++)f.push(a(r&&r.getFieldString(s[t])||''));o.push(f.join(','))}return o.join('\\n')}}();","type":"application/javascript","module-type":"macro"},"$:/core/modules/macros/displayshortcuts.js":{"text":"!function(){'use strict';exports.name='displayshortcuts',exports.params=[{name:'shortcuts'},{name:'prefix'},{name:'separator'},{name:'suffix'}],exports.run=function(e,r,t,a){e=$tw.keyboardManager.getPrintableShortcuts($tw.keyboardManager.parseKeyDescriptors(e,{wiki:this.wiki}));return 0<e.length?(e.sort(function(e,r){return e.toLowerCase().localeCompare(r.toLowerCase())}),r+e.join(t)+a):''}}();","type":"application/javascript","module-type":"macro"},"$:/core/modules/macros/jsontiddler.js":{"text":"!function(){'use strict';exports.name='jsontiddler',exports.params=[{name:'title'}],exports.run=function(e){var r=!!(e=e||this.getVariable('currentTiddler'))&&this.wiki.getTiddler(e),t=new Object;if(r)for(var i in r.fields)t[i]=r.getFieldString(i);return JSON.stringify(t,null,$tw.config.preferences.jsonSpaces)}}();","type":"application/javascript","module-type":"macro"},"$:/core/modules/macros/jsontiddlers.js":{"text":"!function(){'use strict';exports.name='jsontiddlers',exports.params=[{name:'filter'},{name:'spaces'}],exports.run=function(s,t){return this.wiki.getTiddlersAsJson(s,$tw.utils.parseInt(t))}}();","type":"application/javascript","module-type":"macro"},"$:/core/modules/macros/makedatauri.js":{"text":"!function(){'use strict';exports.name='makedatauri',exports.params=[{name:'text'},{name:'type'},{name:'_canonical_uri'}],exports.run=function(t,a,e){return $tw.utils.makeDataUri(t,a,e)}}();","type":"application/javascript","module-type":"macro"},"$:/core/modules/macros/now.js":{"text":"!function(){'use strict';exports.name='now',exports.params=[{name:'format'}],exports.run=function(t){return $tw.utils.formatDateString(new Date,t||'0hh:0mm, DDth MMM YYYY')}}();","type":"application/javascript","module-type":"macro"},"$:/core/modules/macros/qualify.js":{"text":"!function(){'use strict';exports.name='qualify',exports.params=[{name:'title'}],exports.run=function(t){return t+'-'+this.getStateQualifier()}}();","type":"application/javascript","module-type":"macro"},"$:/core/modules/macros/resolvepath.js":{"text":"!function(){'use strict';exports.name='resolvepath',exports.params=[{name:'source'},{name:'root'}],exports.run=function(e,t){return $tw.utils.resolvePath(e,t)}}();","type":"application/javascript","module-type":"macro"},"$:/core/modules/macros/unusedtitle.js":{"text":"!function(){'use strict';exports.name='unusedtitle',exports.params=[{name:'baseName'},{name:'options'}],exports.run=function(e,t){return e=e||$tw.language.getString('DefaultNewTiddlerTitle'),this.wiki.generateNewTitle(e,t)}}();","type":"application/javascript","module-type":"macro"},"$:/core/modules/macros/version.js":{"text":"!function(){'use strict';exports.name='version',exports.params=[],exports.run=function(){return $tw.version}}();","type":"application/javascript","module-type":"macro"},"$:/core/modules/parsers/audioparser.js":{"text":"!function(){'use strict';function t(t,e,i){var a={type:'element',tag:'audio',attributes:{controls:{type:'string',value:'controls'},style:{type:'string',value:'width: 100%; object-fit: contain'}}};i._canonical_uri?a.attributes.src={type:'string',value:i._canonical_uri}:e&&(a.attributes.src={type:'string',value:'data:'+t+';base64,'+e}),this.tree=[a]}exports['audio/ogg']=t,exports['audio/mpeg']=t,exports['audio/mp3']=t,exports['audio/mp4']=t}();","type":"application/javascript","module-type":"parser"},"$:/core/modules/parsers/binaryparser.js":{"text":"!function(){'use strict';exports['application/octet-stream']=function(t,e,i){var r={type:'element',tag:'p',children:[{type:'transclude',attributes:{tiddler:{type:'string',value:'$:/core/ui/BinaryWarning'}}}]},a={type:'element',tag:'a',attributes:{title:{type:'indirect',textReference:'!!title'},download:{type:'indirect',textReference:'!!title'}},children:[{type:'transclude',attributes:{tiddler:{type:'string',value:'$:/core/images/export-button'}}}]};i._canonical_uri?a.attributes.href={type:'string',value:i._canonical_uri}:e&&(a.attributes.href={type:'string',value:'data:'+t+';base64,'+e});a={type:'element',tag:'div',attributes:{class:{type:'string',value:'tc-binary-warning'}},children:[r,a]};this.tree=[a]}}();","type":"application/javascript","module-type":"parser"},"$:/core/modules/parsers/csvparser.js":{"text":"!function(){'use strict';exports['text/csv']=function(t,e,l){this.tree=[{type:'scrollable',children:[{type:'element',tag:'table',children:[{type:'element',tag:'tbody',children:[]}],attributes:{class:{type:'string',value:'tc-csv-table'}}}]}];for(var r=e.split(/\\r?\\n/gm),n='th',i=0;i<r.length;i++){var c=r[i];if(c){for(var h={type:'element',tag:'tr',children:[]},s=c.split(','),a=0;a<s.length;a++)h.children.push({type:'element',tag:n,children:[{type:'text',text:s[a]}]});n='td',this.tree[0].children[0].children[0].children.push(h)}}}}();","type":"application/javascript","module-type":"parser"},"$:/core/modules/parsers/htmlparser.js":{"text":"!function(){'use strict';exports['text/html']=function(t,e,i){var n;i._canonical_uri?n=i._canonical_uri:e&&(n='data:text/html;charset=utf-8,'+encodeURIComponent(e)),this.tree=[{type:'element',tag:'iframe',attributes:{src:{type:'string',value:n}}}],'yes'!==$tw.wiki.getTiddlerText('$:/config/HtmlParser/DisableSandbox','no')&&(this.tree[0].attributes.sandbox={type:'string',value:$tw.wiki.getTiddlerText('$:/config/HtmlParser/SandboxTokens','')})}}();","type":"application/javascript","module-type":"parser"},"$:/core/modules/parsers/imageparser.js":{"text":"!function(){'use strict';function e(e,t,i){var a={type:'element',tag:'img',attributes:{}};i._canonical_uri?a.attributes.src={type:'string',value:i._canonical_uri}:t&&(a.attributes.src='image/svg+xml'===e||'.svg'===e?{type:'string',value:'data:image/svg+xml,'+encodeURIComponent(t)}:{type:'string',value:'data:'+e+';base64,'+t}),this.tree=[a]}exports['image/svg+xml']=e,exports['image/jpg']=e,exports['image/jpeg']=e,exports['image/png']=e,exports['image/gif']=e,exports['image/webp']=e,exports['image/heic']=e,exports['image/heif']=e,exports['image/x-icon']=e,exports['image/vnd.microsoft.icon']=e}();","type":"application/javascript","module-type":"parser"},"$:/core/modules/utils/parseutils.js":{"text":"!function(){'use strict';exports.parseWhiteSpace=function(t,e){for(var r,a=e;' '===(r=t.charAt(a))||'\\f'===r||'\\n'===r||'\\r'===r||'\\t'===r||'\\v'===r||' '===r;)a++;return a===e?null:{type:'whitespace',start:e,end:a}},exports.skipWhiteSpace=function(t,e){for(var r;;){if(' '!==(r=t.charAt(e))&&'\\f'!==r&&'\\n'!==r&&'\\r'!==r&&'\\t'!==r&&'\\v'!==r&&' '!==r)return e;e++}},exports.parseTokenString=function(t,e,r){return t.indexOf(r,e)===e?{type:'token',value:r,start:e,end:e+r.length}:null},exports.parseTokenRegExp=function(t,e,r){var a={type:'regexp',start:e};return r.lastIndex=e,a.match=r.exec(t),a.match&&a.match.index===e?(a.end=e+a.match[0].length,a):null},exports.parseStringLiteral=function(t,e){var r={type:'string',start:e},a=/(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\")|(?:'([^']*)')/g;a.lastIndex=e;t=a.exec(t);return t&&t.index===e?(r.value=void 0!==t[1]?t[1]:void 0!==t[2]?t[2]:t[3],r.end=e+t[0].length,r):null},exports.parseMacroParameter=function(t,e){var r={type:'macro-parameter',start:e};e=$tw.utils.skipWhiteSpace(t,e);t=$tw.utils.parseTokenRegExp(t,e,/(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|((?:(?:>(?!>))|[^\\s>\"'])+)))/g);return t?(e=t.end,r.value=void 0!==t.match[2]?t.match[2]:void 0!==t.match[3]?t.match[3]:void 0!==t.match[4]?t.match[4]:void 0!==t.match[5]?t.match[5]:void 0!==t.match[6]?t.match[6]:'',t.match[1]&&(r.name=t.match[1]),r.end=e,r):null},exports.parseMacroInvocation=function(t,e){var r={type:'macrocall',start:e,params:[]};e=$tw.utils.skipWhiteSpace(t,e);var a=$tw.utils.parseTokenString(t,e,'<<');if(!a)return null;e=a.end;var n=$tw.utils.parseTokenRegExp(t,e,/([^\\s>\"'=]+)/g);if(!n)return null;r.name=n.match[1],e=n.end;for(var s=$tw.utils.parseMacroParameter(t,e);s;)r.params.push(s),e=s.end,s=$tw.utils.parseMacroParameter(t,e);return e=$tw.utils.skipWhiteSpace(t,e),(a=$tw.utils.parseTokenString(t,e,'>>'))?(e=a.end,r.end=e,r):null},exports.parseAttribute=function(t,e){var r={start:e};e=$tw.utils.skipWhiteSpace(t,e);var a=$tw.utils.parseTokenRegExp(t,e,/([^\\/\\s>\"'=]+)/g);if(!a)return null;r.name=a.match[1],e=a.end,e=$tw.utils.skipWhiteSpace(t,e);a=$tw.utils.parseTokenString(t,e,'=');return a?(e=a.end,e=$tw.utils.skipWhiteSpace(t,e),(a=$tw.utils.parseStringLiteral(t,e))?(e=a.end,r.type='string',r.value=a.value):(a=$tw.utils.parseTokenRegExp(t,e,/\\{\\{\\{(.+?)\\}\\}\\}/g))?(e=a.end,r.type='filtered',r.filter=a.match[1]):(a=$tw.utils.parseTokenRegExp(t,e,/\\{\\{([^\\}]+)\\}\\}/g))?(e=a.end,r.type='indirect',r.textReference=a.match[1]):(a=$tw.utils.parseTokenRegExp(t,e,/([^\\/\\s<>\"'=]+)/g))?(e=a.end,r.type='string',r.value=a.match[1]):(t=$tw.utils.parseMacroInvocation(t,e))?(e=t.end,r.type='macro',r.value=t):(r.type='string',r.value='true')):(r.type='string',r.value='true'),r.end=e,r}}();","type":"application/javascript","module-type":"utils"},"$:/core/modules/parsers/pdfparser.js":{"text":"!function(){'use strict';exports['application/pdf']=function(t,a,e){var i={type:'element',tag:'embed',attributes:{}};e._canonical_uri?i.attributes.src={type:'string',value:e._canonical_uri}:a&&(i.attributes.src={type:'string',value:'data:application/pdf;base64,'+a}),this.tree=[i]}}();","type":"application/javascript","module-type":"parser"},"$:/core/modules/parsers/textparser.js":{"text":"!function(){'use strict';function t(t,e,i){this.tree=[{type:'codeblock',attributes:{code:{type:'string',value:e},language:{type:'string',value:t}}}]}exports['text/plain']=t,exports['text/x-tiddlywiki']=t,exports['application/javascript']=t,exports['application/json']=t,exports['text/css']=t,exports['application/x-tiddler-dictionary']=t}();","type":"application/javascript","module-type":"parser"},"$:/core/modules/parsers/videoparser.js":{"text":"!function(){'use strict';function t(t,e,i){var o={type:'element',tag:'video',attributes:{controls:{type:'string',value:'controls'},style:{type:'string',value:'width: 100%; object-fit: contain'}}};i._canonical_uri?o.attributes.src={type:'string',value:i._canonical_uri}:e&&(o.attributes.src={type:'string',value:'data:'+t+';base64,'+e}),this.tree=[o]}exports['video/ogg']=t,exports['video/webm']=t,exports['video/mp4']=t,exports['video/quicktime']=t}();","type":"application/javascript","module-type":"parser"},"$:/core/modules/parsers/wikiparser/rules/codeblock.js":{"text":"!function(){'use strict';exports.name='codeblock',exports.types={block:!0},exports.init=function(s){this.parser=s,this.matchRegExp=/```([\\w-]*)\\r?\\n/gm},exports.parse=function(){var s=/(\\r?\\n```$)/gm;this.parser.pos=this.matchRegExp.lastIndex,s.lastIndex=this.parser.pos;var e,s=s.exec(this.parser.source);return s?(e=this.parser.source.substring(this.parser.pos,s.index),this.parser.pos=s.index+s[0].length):(e=this.parser.source.substr(this.parser.pos),this.parser.pos=this.parser.sourceLength),[{type:'codeblock',attributes:{code:{type:'string',value:e},language:{type:'string',value:this.match[1]}}}]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/codeinline.js":{"text":"!function(){'use strict';exports.name='codeinline',exports.types={inline:!0},exports.init=function(s){this.parser=s,this.matchRegExp=/(``?)/gm},exports.parse=function(){this.parser.pos=this.matchRegExp.lastIndex;var s=new RegExp(this.match[1],'mg');s.lastIndex=this.parser.pos;var e,s=s.exec(this.parser.source);return s?(e=this.parser.source.substring(this.parser.pos,s.index),this.parser.pos=s.index+s[0].length):(e=this.parser.source.substr(this.parser.pos),this.parser.pos=this.parser.sourceLength),[{type:'element',tag:'code',children:[{type:'text',text:e}]}]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/commentblock.js":{"text":"!function(){'use strict';exports.name='commentblock',exports.types={block:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/<!--/gm,this.endMatchRegExp=/-->/gm},exports.findNextMatch=function(t){if(this.matchRegExp.lastIndex=t,this.match=this.matchRegExp.exec(this.parser.source),this.match&&(this.endMatchRegExp.lastIndex=this.match.index+this.match[0].length,this.endMatch=this.endMatchRegExp.exec(this.parser.source),this.endMatch))return this.match.index},exports.parse=function(){return this.parser.pos=this.endMatchRegExp.lastIndex,[]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/commentinline.js":{"text":"!function(){'use strict';exports.name='commentinline',exports.types={inline:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/<!--/gm,this.endMatchRegExp=/-->/gm},exports.findNextMatch=function(t){if(this.matchRegExp.lastIndex=t,this.match=this.matchRegExp.exec(this.parser.source),this.match&&(this.endMatchRegExp.lastIndex=this.match.index+this.match[0].length,this.endMatch=this.endMatchRegExp.exec(this.parser.source),this.endMatch))return this.match.index},exports.parse=function(){return this.parser.pos=this.endMatchRegExp.lastIndex,[]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/dash.js":{"text":"!function(){'use strict';exports.name='dash',exports.types={inline:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/-{2,3}(?!-)/gm},exports.parse=function(){return this.parser.pos=this.matchRegExp.lastIndex,[{type:'entity',entity:2===this.match[0].length?'–':'—'}]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js":{"text":"!function(){'use strict';exports.name='bold',exports.types={inline:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/''/gm},exports.parse=function(){return this.parser.pos=this.matchRegExp.lastIndex,[{type:'element',tag:'strong',children:this.parser.parseInlineRun(/''/gm,{eatTerminator:!0})}]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js":{"text":"!function(){'use strict';exports.name='italic',exports.types={inline:!0},exports.init=function(e){this.parser=e,this.matchRegExp=/\\/\\//gm},exports.parse=function(){return this.parser.pos=this.matchRegExp.lastIndex,[{type:'element',tag:'em',children:this.parser.parseInlineRun(/\\/\\//gm,{eatTerminator:!0})}]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js":{"text":"!function(){'use strict';exports.name='strikethrough',exports.types={inline:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/~~/gm},exports.parse=function(){return this.parser.pos=this.matchRegExp.lastIndex,[{type:'element',tag:'strike',children:this.parser.parseInlineRun(/~~/gm,{eatTerminator:!0})}]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js":{"text":"!function(){'use strict';exports.name='subscript',exports.types={inline:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/,,/gm},exports.parse=function(){return this.parser.pos=this.matchRegExp.lastIndex,[{type:'element',tag:'sub',children:this.parser.parseInlineRun(/,,/gm,{eatTerminator:!0})}]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js":{"text":"!function(){'use strict';exports.name='superscript',exports.types={inline:!0},exports.init=function(e){this.parser=e,this.matchRegExp=/\\^\\^/gm},exports.parse=function(){return this.parser.pos=this.matchRegExp.lastIndex,[{type:'element',tag:'sup',children:this.parser.parseInlineRun(/\\^\\^/gm,{eatTerminator:!0})}]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js":{"text":"!function(){'use strict';exports.name='underscore',exports.types={inline:!0},exports.init=function(e){this.parser=e,this.matchRegExp=/__/gm},exports.parse=function(){return this.parser.pos=this.matchRegExp.lastIndex,[{type:'element',tag:'u',children:this.parser.parseInlineRun(/__/gm,{eatTerminator:!0})}]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/entity.js":{"text":"!function(){'use strict';exports.name='entity',exports.types={inline:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/(&#?[a-zA-Z0-9]{2,8};)/gm},exports.parse=function(){this.match[1];return this.parser.pos=this.matchRegExp.lastIndex,[{type:'entity',entity:this.match[0]}]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/extlink.js":{"text":"!function(){'use strict';exports.name='extlink',exports.types={inline:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/~?(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/gm},exports.parse=function(){return this.parser.pos=this.matchRegExp.lastIndex,'~'===this.match[0].substr(0,1)?[{type:'text',text:this.match[0].substr(1)}]:[{type:'element',tag:'a',attributes:{href:{type:'string',value:this.match[0]},class:{type:'string',value:'tc-tiddlylink-external'},target:{type:'string',value:'_blank'},rel:{type:'string',value:'noopener noreferrer'}},children:[{type:'text',text:this.match[0]}]}]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js":{"text":"!function(){'use strict';exports.name='filteredtranscludeblock',exports.types={block:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?(?:\\r?\\n|$)/gm},exports.parse=function(){this.parser.pos=this.matchRegExp.lastIndex;var t=this.match[1],s=this.match[2],e=$tw.utils.trim(this.match[3]),i=this.match[4],r=this.match[5],t={type:'list',attributes:{filter:{type:'string',value:t}},isBlock:!0};return s&&(t.attributes.tooltip={type:'string',value:s}),e&&(t.attributes.template={type:'string',value:e}),i&&(t.attributes.style={type:'string',value:i}),r&&(t.attributes.itemClass={type:'string',value:r.split('.').join(' ')}),[t]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js":{"text":"!function(){'use strict';exports.name='filteredtranscludeinline',exports.types={inline:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?/gm},exports.parse=function(){this.parser.pos=this.matchRegExp.lastIndex;var t=this.match[1],e=this.match[2],i=$tw.utils.trim(this.match[3]),s=this.match[4],r=this.match[5],t={type:'list',attributes:{filter:{type:'string',value:t}}};return e&&(t.attributes.tooltip={type:'string',value:e}),i&&(t.attributes.template={type:'string',value:i}),s&&(t.attributes.style={type:'string',value:s}),r&&(t.attributes.itemClass={type:'string',value:r.split('.').join(' ')}),[t]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js":{"text":"!function(){'use strict';exports.name='hardlinebreaks',exports.types={inline:!0},exports.init=function(e){this.parser=e,this.matchRegExp=/\"\"\"(?:\\r?\\n)?/gm},exports.parse=function(){var e,s=/(\"\"\")|(\\r?\\n)/gm,r=[];for(this.parser.pos=this.matchRegExp.lastIndex;r.push.apply(r,this.parser.parseInlineRun(s,{eatTerminator:!1})),s.lastIndex=this.parser.pos,(e=s.exec(this.parser.source))&&(this.parser.pos=s.lastIndex,e[2]&&r.push({type:'element',tag:'br'})),e&&!e[1];);return r}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/heading.js":{"text":"!function(){'use strict';exports.name='heading',exports.types={block:!0},exports.init=function(e){this.parser=e,this.matchRegExp=/(!{1,6})/gm},exports.parse=function(){var e=this.match[1].length;this.parser.pos=this.matchRegExp.lastIndex;var s=this.parser.parseClasses();this.parser.skipWhitespace({treatNewlinesAsNonWhitespace:!0});var t=this.parser.parseInlineRun(/(\\r?\\n)/gm);return[{type:'element',tag:'h'+e,attributes:{class:{type:'string',value:s.join(' ')}},children:t}]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/horizrule.js":{"text":"!function(){'use strict';exports.name='horizrule',exports.types={block:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/-{3,}\\r?(?:\\n|$)/gm},exports.parse=function(){return this.parser.pos=this.matchRegExp.lastIndex,[{type:'element',tag:'hr'}]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/html.js":{"text":"!function(){'use strict';exports.name='html',exports.types={inline:!0,block:!0},exports.init=function(t){this.parser=t},exports.findNextMatch=function(t){return this.nextTag=this.findNextTag(this.parser.source,t,{requireLineBreak:this.is.block}),this.nextTag?this.nextTag.start:void 0},exports.parse=function(){var t=this.nextTag;this.nextTag=null,this.parser.pos=t.end;var e,r=!t.isSelfClosing&&!!$tw.utils.parseTokenRegExp(this.parser.source,this.parser.pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);return t.isBlock=this.is.block||r,t.isSelfClosing||-1!==$tw.config.htmlVoidElements.indexOf(t.tag)||(e='</'+$tw.utils.escapeRegExp(t.tag)+'>',r?t.children=this.parser.parseBlocks(e):(e=new RegExp('('+e+')','mg'),t.children=this.parser.parseInlineRun(e,{eatTerminator:!0}))),[t]},exports.parseTag=function(t,e,r){r=r||{};var n,s={type:'element',start:e,attributes:{}};if(e=$tw.utils.skipWhiteSpace(t,e),!(n=$tw.utils.parseTokenString(t,e,'<')))return null;if(e=n.end,!(n=$tw.utils.parseTokenRegExp(t,e,/([a-zA-Z0-9\\-\\$]+)/g)))return null;if(s.tag=n.match[1],-1!==s.tag.slice(1).indexOf('$'))return null;if('$'===s.tag.charAt(0)&&(s.type=s.tag.substr(1)),e=n.end,!$tw.utils.parseWhiteSpace(t,e)&&'/'!==t.charAt(e)&&'>'!==t.charAt(e))return null;for(var i=$tw.utils.parseAttribute(t,e);i;)e=(s.attributes[i.name]=i).end,i=$tw.utils.parseAttribute(t,e);return e=$tw.utils.skipWhiteSpace(t,e),(n=$tw.utils.parseTokenString(t,e,'/'))&&(e=n.end,s.isSelfClosing=!0),(n=$tw.utils.parseTokenString(t,e,'>'))?(e=n.end,r.requireLineBreak&&!(n=$tw.utils.parseTokenRegExp(t,e,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g))?null:(s.end=e,s)):null},exports.findNextTag=function(t,e,r){var n=/<([a-zA-Z\\-\\$]+)/g;n.lastIndex=e;for(var s=n.exec(t);s;){var i=this.parseTag(t,s.index,r);if(i&&this.isLegalTag(i))return i;n.lastIndex=s.index+1,s=n.exec(t)}return null},exports.isLegalTag=function(t){return'element'!==t.type||'-'!==t.tag.charAt(0)}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/image.js":{"text":"!function(){'use strict';exports.name='image',exports.types={inline:!0},exports.init=function(t){this.parser=t},exports.findNextMatch=function(t){return this.nextImage=this.findNextImage(this.parser.source,t),this.nextImage?this.nextImage.start:void 0},exports.parse=function(){return this.parser.pos=this.nextImage.end,[{type:'image',attributes:this.nextImage.attributes}]},exports.findNextImage=function(t,e){var i=/(\\[img)/g;i.lastIndex=e;for(var r=i.exec(t);r;){var s=this.parseImage(t,r.index);if(s)return s;i.lastIndex=r.index+1,r=i.exec(t)}return null},exports.parseImage=function(t,e){var i,r={type:'image',start:e,attributes:{}};if(e=$tw.utils.skipWhiteSpace(t,e),!(i=$tw.utils.parseTokenString(t,e,'[img')))return null;if(e=i.end,e=$tw.utils.skipWhiteSpace(t,e),'['!==t.charAt(e))for(var s=$tw.utils.parseAttribute(t,e);s;)e=(r.attributes[s.name]=s).end,e=$tw.utils.skipWhiteSpace(t,e),s='['!==t.charAt(e)?$tw.utils.parseAttribute(t,e):null;return e=$tw.utils.skipWhiteSpace(t,e),(i=$tw.utils.parseTokenString(t,e,'['))?(e=i.end,e=$tw.utils.skipWhiteSpace(t,e),(i=$tw.utils.parseTokenRegExp(t,e,/(?:([^|\\]]*?)\\|)?([^\\]]+?)\\]\\]/g))?(e=i.end,i.match[1]&&(r.attributes.tooltip={type:'string',value:i.match[1].trim()}),r.attributes.source={type:'string',value:(i.match[2]||'').trim()},r.end=e,r):null):null}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/import.js":{"text":"!function(){'use strict';exports.name='import',exports.types={pragma:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/^\\\\import[^\\S\\n]/gm},exports.parse=function(){this.parser.pos=this.matchRegExp.lastIndex;var t=/(.*)(\\r?\\n)|$/gm;t.lastIndex=this.parser.pos;var r=t.exec(this.parser.source);return this.parser.pos=t.lastIndex,[{type:'importvariables',attributes:{filter:{type:'string',value:r[1]}},children:[]}]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/list.js":{"text":"!function(){'use strict';exports.name='list',exports.types={block:!0},exports.init=function(e){this.parser=e,this.matchRegExp=/([\\*#;:>]+)/gm};var h={'*':{listTag:'ul',itemTag:'li'},'#':{listTag:'ol',itemTag:'li'},';':{listTag:'dl',itemTag:'dt'},':':{listTag:'dl',itemTag:'dd'},'>':{listTag:'blockquote',itemTag:'div'}};exports.parse=function(){for(var e=[];;){var t=/([\\*#;:>]+)/gm;t.lastIndex=this.parser.pos;var s=t.exec(this.parser.source);if(!s||s.index!==this.parser.pos)break;var i=h[s[0].charAt(0)];if(0<e.length&&e[0].tag!==i.listTag)break;this.parser.pos=s.index+s[0].length;for(var r=0;r<s[0].length;r++){var a,i=h[s[0].charAt(r)];e.length>r&&e[r].tag!==i.listTag&&e.splice(r,e.length-r),e.length<=r?(a={type:'element',tag:i.listTag,children:[{type:'element',tag:i.itemTag,children:[]}]},r&&e[r-1].children[e[r-1].children.length-1].children.push(a),e[r]=a):r===s[0].length-1&&e[r].children.push({type:'element',tag:i.itemTag,children:[]})}e.length>s[0].length&&e.splice(s[0].length,e.length-s[0].length);var l=e[e.length-1].children,n=l[l.length-1],t=this.parser.parseClasses();this.parser.skipWhitespace({treatNewlinesAsNonWhitespace:!0});l=this.parser.parseInlineRun(/(\\r?\\n)/gm);n.children.push.apply(n.children,l),0<t.length&&$tw.utils.addClassToParseTreeNode(n,t.join(' ')),this.parser.skipWhitespace()}return[e[0]]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/macrocallblock.js":{"text":"!function(){'use strict';exports.name='macrocallblock',exports.types={block:!0},exports.init=function(r){this.parser=r},exports.findNextMatch=function(r){for(var t=r;0<=(t=this.parser.source.indexOf('<<',t));){var s=$tw.utils.parseMacroInvocation(this.parser.source,t);if(s){var e=this.parser.source.charAt(s.end);if(''===e||'\\n'===e||'\\r'===e&&'\\n'===this.parser.source.charAt(s.end+1))return this.nextCall=s,t}t+=2}},exports.parse=function(){var r=this.nextCall;return r.isBlock=!0,this.nextCall=null,this.parser.pos=r.end,[r]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/macrocallinline.js":{"text":"!function(){'use strict';exports.name='macrocallinline',exports.types={inline:!0},exports.init=function(t){this.parser=t},exports.findNextMatch=function(t){for(var e=t;0<=(e=this.parser.source.indexOf('<<',e));){if(this.nextCall=$tw.utils.parseMacroInvocation(this.parser.source,e),this.nextCall)return e;e+=2}},exports.parse=function(){var t=this.nextCall;return this.nextCall=null,this.parser.pos=t.end,[t]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/macrodef.js":{"text":"!function(){'use strict';exports.name='macrodef',exports.types={pragma:!0},exports.init=function(s){this.parser=s,this.matchRegExp=/^\\\\define\\s+([^(\\s]+)\\(\\s*([^)]*)\\)(\\s*\\r?\\n)?/gm},exports.parse=function(){this.parser.pos=this.matchRegExp.lastIndex;var s=this.match[2],e=[];if(''!==s)for(var r=/\\s*([A-Za-z0-9\\-_]+)(?:\\s*:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))?/gm,t=r.exec(s);t;){var a={name:t[1]},i=t[2]||t[3]||t[4]||t[5]||t[6];i&&(a.default=i),e.push(a),t=r.exec(s)}this.match[3]?n=/(\\r?\\n\\\\end[^\\S\\n\\r]*(?:$|\\r?\\n))/gm:(n=/($|\\r?\\n)/gm,this.parser.pos=$tw.utils.skipWhiteSpace(this.parser.source,this.parser.pos)),n.lastIndex=this.parser.pos;var p,n=n.exec(this.parser.source);return n?(p=this.parser.source.substring(this.parser.pos,n.index),this.parser.pos=n.index+n[0].length):p='',[{type:'set',attributes:{name:{type:'string',value:this.match[1]},value:{type:'string',value:p}},children:[],params:e,isMacroDefinition:!0}]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/prettyextlink.js":{"text":"!function(){'use strict';exports.name='prettyextlink',exports.types={inline:!0},exports.init=function(t){this.parser=t},exports.findNextMatch=function(t){return this.nextLink=this.findNextLink(this.parser.source,t),this.nextLink?this.nextLink.start:void 0},exports.parse=function(){return this.parser.pos=this.nextLink.end,[this.nextLink]},exports.findNextLink=function(t,e){var n=/(\\[ext\\[)/g;n.lastIndex=e;for(var r=n.exec(t);r;){var i=this.parseLink(t,r.index);if(i)return i;n.lastIndex=r.index+1,r=n.exec(t)}return null},exports.parseLink=function(t,e){var n={type:'text'},r={type:'element',tag:'a',start:e,attributes:{class:{type:'string',value:'tc-tiddlylink-external'}},children:[n]};if(e=$tw.utils.skipWhiteSpace(t,e),!(a=$tw.utils.parseTokenString(t,e,'[ext[')))return null;e=a.end;var i=t.indexOf(']]',e);if(-1===i)return null;var s,a=t.indexOf('|',e);return(-1===a||i<a)&&(a=null),a?(s=t.substring(a+1,i).trim(),n.text=t.substring(e,a).trim()):(s=t.substring(e,i).trim(),n.text=s),r.attributes.href={type:'string',value:s},r.attributes.target={type:'string',value:'_blank'},r.attributes.rel={type:'string',value:'noopener noreferrer'},r.end=i+2,r}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/prettylink.js":{"text":"!function(){'use strict';exports.name='prettylink',exports.types={inline:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/\\[\\[(.*?)(?:\\|(.*?))?\\]\\]/gm},exports.parse=function(){this.parser.pos=this.matchRegExp.lastIndex;var t=this.match[1],e=this.match[2]||t;return $tw.utils.isLinkExternal(e)?[{type:'element',tag:'a',attributes:{href:{type:'string',value:e},class:{type:'string',value:'tc-tiddlylink-external'},target:{type:'string',value:'_blank'},rel:{type:'string',value:'noopener noreferrer'}},children:[{type:'text',text:t}]}]:[{type:'link',attributes:{to:{type:'string',value:e}},children:[{type:'text',text:t}]}]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/quoteblock.js":{"text":"!function(){'use strict';exports.name='quoteblock',exports.types={block:!0},exports.init=function(e){this.parser=e,this.matchRegExp=/(<<<+)/gm},exports.parse=function(){var e=['tc-quote'],t='^'+this.match[1]+'(?!<)';this.parser.pos=this.matchRegExp.lastIndex,e.push.apply(e,this.parser.parseClasses()),this.parser.skipWhitespace({treatNewlinesAsNonWhitespace:!0});var s=this.parser.parseInlineRun(/(\\r?\\n)/gm),t=this.parser.parseBlocks(t);return 0<s.length&&t.unshift({type:'element',tag:'cite',children:s}),this.parser.skipWhitespace({treatNewlinesAsNonWhitespace:!0}),0<(s=this.parser.parseInlineRun(/(\\r?\\n)/gm)).length&&t.push({type:'element',tag:'cite',children:s}),[{type:'element',tag:'blockquote',attributes:{class:{type:'string',value:e.join(' ')}},children:t}]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/rules.js":{"text":"!function(){'use strict';exports.name='rules',exports.types={pragma:!0},exports.init=function(s){this.parser=s,this.matchRegExp=/^\\\\rules[^\\S\\n]/gm},exports.parse=function(){this.parser.pos=this.matchRegExp.lastIndex;var s=/[^\\S\\n]*(\\S+)|(\\r?\\n)/gm,e=[];s.lastIndex=this.parser.pos;for(var r=s.exec(this.parser.source);r&&r.index===this.parser.pos&&(this.parser.pos=s.lastIndex,!r[2]);)r[1]&&e.push(r[1]),r=s.exec(this.parser.source);return 0<e.length&&this.parser.amendRules(e[0],e.slice(1)),[]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/styleblock.js":{"text":"!function(){'use strict';exports.name='styleblock',exports.types={block:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(?:\\.([^\\r\\n\\s]+))?\\r?\\n/gm},exports.parse=function(){for(var t=[],s=[];this.match[1]&&s.push(this.match[1]),this.match[2]&&t.push(this.match[2].split('.').join(' ')),this.parser.pos=this.matchRegExp.lastIndex,this.match=this.matchRegExp.exec(this.parser.source),this.match&&this.match.index===this.parser.pos;);for(var e=this.parser.parseBlocks('^@@(?:\\\\r?\\\\n)?'),r=0;r<e.length;r++)0<t.length&&$tw.utils.addClassToParseTreeNode(e[r],t.join(' ')),0<s.length&&$tw.utils.addAttributeToParseTreeNode(e[r],'style',s.join(''));return e}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/styleinline.js":{"text":"!function(){'use strict';exports.name='styleinline',exports.types={inline:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(\\.(?:[^\\r\\n\\s]+)\\s+)?/gm},exports.parse=function(){var t=this.match[1],e=this.match[2]?this.match[2].split('.').join(' '):void 0;this.parser.pos=this.matchRegExp.lastIndex;var s={type:'element',tag:'span',attributes:{class:{type:'string',value:'tc-inline-style'}},children:this.parser.parseInlineRun(/@@/g,{eatTerminator:!0})};return e&&$tw.utils.addClassToParseTreeNode(s,e),t&&$tw.utils.addAttributeToParseTreeNode(s,'style',t),[s]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/syslink.js":{"text":"!function(){'use strict';exports.name='syslink',exports.types={inline:!0},exports.init=function(t){this.parser=t,this.matchRegExp=new RegExp('~?\\\\$:\\\\/['+$tw.config.textPrimitives.anyLetter.substr(1,$tw.config.textPrimitives.anyLetter.length-2)+'/._-]+','mg')},exports.parse=function(){var t=this.match[0];return this.parser.pos=this.matchRegExp.lastIndex,'~'===t.substr(0,1)?[{type:'text',text:t.substr(1)}]:[{type:'link',attributes:{to:{type:'string',value:t}},children:[{type:'text',text:t}]}]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/table.js":{"text":"!function(){'use strict';function h(e){var t,r=/(?:\\|([^\\n\\|]*)\\|)|(\\|[fhck]?\\r?(?:\\n|$))/gm,s=/((?:\\x20*)\\|)/gm,a=[],i=0,o=1;r.lastIndex=this.parser.pos;for(var p=r.exec(this.parser.source);p&&p.index===this.parser.pos;){if('~'===p[1]){var n=e[i];n&&(n.rowSpanCount++,$tw.utils.addAttributeToParseTreeNode(n.element,'rowspan',n.rowSpanCount),h=$tw.utils.getAttributeValueFromParseTreeNode(n.element,'valign','center'),$tw.utils.addAttributeToParseTreeNode(n.element,'valign',h),1<o&&($tw.utils.addAttributeToParseTreeNode(n.element,'colspan',o),o=1)),this.parser.pos=r.lastIndex-1}else if('>'===p[1])o++,this.parser.pos=r.lastIndex-1;else if('<'===p[1]&&t)o=1+$tw.utils.getAttributeValueFromParseTreeNode(t,'colspan',1),$tw.utils.addAttributeToParseTreeNode(t,'colspan',o),o=1,this.parser.pos=r.lastIndex-1;else{if(p[2]){t&&1<o&&(t.attributes&&t.attributes&&t.attributes.colspan?o+=t.attributes.colspan.value:--o,$tw.utils.addAttributeToParseTreeNode(t,'colspan',o)),this.parser.pos=r.lastIndex-1;break}this.parser.pos++;var l=!1,h=null;0===this.parser.source.substr(this.parser.pos).search(/^\\^([^\\^]|\\^\\^)/)?h='top':0===this.parser.source.substr(this.parser.pos).search(/^,([^,]|,,)/)&&(h='bottom'),h&&this.parser.pos++;for(var d=this.parser.source.substr(this.parser.pos,1);' '===d;)l=!0,this.parser.pos++,d=this.parser.source.substr(this.parser.pos,1);n='!'===d?(this.parser.pos++,{type:'element',tag:'th',children:[]}):{type:'element',tag:'td',children:[]},a.push(n),t=n,e[i]={rowSpanCount:1,element:n},1<o&&($tw.utils.addAttributeToParseTreeNode(n,'colspan',o),o=1),n.children=this.parser.parseInlineRun(s,{eatTerminator:!0}),h&&$tw.utils.addAttributeToParseTreeNode(n,'valign',h),' '===this.parser.source.substr(this.parser.pos-2,1)?$tw.utils.addAttributeToParseTreeNode(n,'align',l?'center':'left'):l&&$tw.utils.addAttributeToParseTreeNode(n,'align','right'),this.parser.pos--}i++,r.lastIndex=this.parser.pos,p=r.exec(this.parser.source)}return a}exports.name='table',exports.types={block:!0},exports.init=function(e){this.parser=e,this.matchRegExp=/^\\|(?:[^\\n]*)\\|(?:[fhck]?)\\r?(?:\\n|$)/gm},exports.parse=function(){var e,t,r={c:'caption',h:'thead','':'tbody',f:'tfoot'},s={type:'element',tag:'table',children:[]},a=/^\\|([^\\n]*)\\|([fhck]?)\\r?(?:\\n|$)/gm,i=/(\\|(?:[fhck]?)\\r?(?:\\n|$))/gm,o=[],p=0;a.lastIndex=this.parser.pos;for(var n=a.exec(this.parser.source);n&&n.index===this.parser.pos;){var l=n[2];'k'===l?($tw.utils.addClassToParseTreeNode(s,n[1]),this.parser.pos=n.index+n[0].length):(l!==e&&(t={type:'element',tag:r[l],children:[]},s.children.push(t),e=l),'c'===e?(this.parser.pos++,1!==s.children.length&&(s.children.pop(),s.children.splice(0,0,t)),t.children=this.parser.parseInlineRun(i,{eatTerminator:!0})):(l={type:'element',tag:'tr',children:[]},$tw.utils.addClassToParseTreeNode(l,p%2?'oddRow':'evenRow'),t.children.push(l),l.children=h.call(this,o),this.parser.pos=n.index+n[0].length,p++)),n=a.exec(this.parser.source)}return[s]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/transcludeblock.js":{"text":"!function(){'use strict';exports.name='transcludeblock',exports.types={block:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}(?:\\r?\\n|$)/gm},exports.parse=function(){this.parser.pos=this.matchRegExp.lastIndex;var t,e,i,s,r=$tw.utils.trim(this.match[2]),a=$tw.utils.trim(this.match[1]),l={type:'transclude',attributes:{},isBlock:!0};return a&&(t=(s=$tw.utils.parseTextReference(a)).title,e=s.field,i=s.index,s={type:'tiddler',attributes:{tiddler:{type:'string',value:t}},isBlock:!0,children:[l]}),r?(l.attributes.tiddler={type:'string',value:r},a?[s]:[l]):a?(l.attributes.tiddler={type:'string',value:t},e&&(l.attributes.field={type:'string',value:e}),i&&(l.attributes.index={type:'string',value:i}),[s]):[l]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/transcludeinline.js":{"text":"!function(){'use strict';exports.name='transcludeinline',exports.types={inline:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}/gm},exports.parse=function(){this.parser.pos=this.matchRegExp.lastIndex;var t,e,i,r,s=$tw.utils.trim(this.match[2]),n=$tw.utils.trim(this.match[1]),a={type:'transclude',attributes:{}};return n&&(t=(r=$tw.utils.parseTextReference(n)).title,e=r.field,i=r.index,r={type:'tiddler',attributes:{tiddler:{type:'string',value:t}},children:[a]}),s?(a.attributes.tiddler={type:'string',value:s},n?[r]:[a]):n?(a.attributes.tiddler={type:'string',value:t},e&&(a.attributes.field={type:'string',value:e}),i&&(a.attributes.index={type:'string',value:i}),[r]):[a]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/typedblock.js":{"text":"!function(){'use strict';require('$:/core/modules/widgets/widget.js'),exports.name='typedblock',exports.types={block:!0},exports.init=function(e){this.parser=e,this.matchRegExp=/\\$\\$\\$([^ >\\r\\n]*)(?: *> *([^ \\r\\n]+))?\\r?\\n/gm},exports.parse=function(){var e=/\\r?\\n\\$\\$\\$\\r?(?:\\n|$)/gm,t=this.match[1],r=this.match[2];this.parser.pos=this.matchRegExp.lastIndex,e.lastIndex=this.parser.pos;var s,i=e.exec(this.parser.source);i?(s=this.parser.source.substring(this.parser.pos,i.index),this.parser.pos=i.index+i[0].length):(s=this.parser.source.substr(this.parser.pos),this.parser.pos=this.parser.sourceLength);e=this.parser.wiki.parseText(t,s,{defaultType:'text/plain'});if(r){i=this.parser.wiki.makeWidget(e),t=$tw.fakeDocument.createElement('div');return i.render(t,null),[{type:'element',tag:'pre',children:[{type:'text',text:s='text/html'===r?t.innerHTML:t.textContent}]}]}return e.tree}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/whitespace.js":{"text":"!function(){'use strict';exports.name='whitespace',exports.types={pragma:!0},exports.init=function(s){this.parser=s,this.matchRegExp=/^\\\\whitespace[^\\S\\n]/gm},exports.parse=function(){var e=this;this.parser.pos=this.matchRegExp.lastIndex;var s=/[^\\S\\n]*(\\S+)|(\\r?\\n)/gm,r=[];s.lastIndex=this.parser.pos;for(var t=s.exec(this.parser.source);t&&t.index===this.parser.pos&&(this.parser.pos=s.lastIndex,!t[2]);)t[1]&&r.push(t[1]),t=s.exec(this.parser.source);return $tw.utils.each(r,function(s){switch(s){case'trim':e.parser.configTrimWhiteSpace=!0;break;case'notrim':e.parser.configTrimWhiteSpace=!1}}),[]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/rules/wikilink.js":{"text":"!function(){'use strict';exports.name='wikilink',exports.types={inline:!0},exports.init=function(t){this.parser=t,this.matchRegExp=new RegExp($tw.config.textPrimitives.unWikiLink+'?'+$tw.config.textPrimitives.wikiLink,'mg')},exports.parse=function(){var t=this.match[0];if(this.parser.pos=this.matchRegExp.lastIndex,t.substr(0,1)===$tw.config.textPrimitives.unWikiLink)return[{type:'text',text:t.substr(1)}];if(0<this.match.index){var i=new RegExp($tw.config.textPrimitives.blockPrefixLetters,'mg');i.lastIndex=this.match.index-1;i=i.exec(this.parser.source);if(i&&i.index===this.match.index-1)return[{type:'text',text:t}]}return[{type:'link',attributes:{to:{type:'string',value:t}},children:[{type:'text',text:t}]}]}}();","type":"application/javascript","module-type":"wikirule"},"$:/core/modules/parsers/wikiparser/wikiparser.js":{"text":"!function(){'use strict';var r=function(s,e,t){this.wiki=t.wiki;var i,n;$tw.browser&&''===(e||'')&&t._canonical_uri&&(this.loadRemoteTiddler(t._canonical_uri),e=$tw.language.getRawString('LazyLoadingWarning')),this.type=s||'text/vnd.tiddlywiki',this.source=e||'',this.sourceLength=this.source.length,this.configTrimWhiteSpace=!1,this.pos=0,this.tree=[],e=t.rules?(i=t.rules.pragma,n=t.rules.block,t.rules.inline):(this.pragmaRuleClasses||(r.prototype.pragmaRuleClasses=$tw.modules.createClassesFromModules('wikirule','pragma',$tw.WikiRuleBase),this.setupRules(r.prototype.pragmaRuleClasses,'$:/config/WikiParserRules/Pragmas/')),i=this.pragmaRuleClasses,this.blockRuleClasses||(r.prototype.blockRuleClasses=$tw.modules.createClassesFromModules('wikirule','block',$tw.WikiRuleBase),this.setupRules(r.prototype.blockRuleClasses,'$:/config/WikiParserRules/Block/')),n=this.blockRuleClasses,this.inlineRuleClasses||(r.prototype.inlineRuleClasses=$tw.modules.createClassesFromModules('wikirule','inline',$tw.WikiRuleBase),this.setupRules(r.prototype.inlineRuleClasses,'$:/config/WikiParserRules/Inline/')),this.inlineRuleClasses),this.pragmaRules=this.instantiateRules(i,'pragma',0),this.blockRules=this.instantiateRules(n,'block',0),this.inlineRules=this.instantiateRules(e,'inline',0);e=this.parsePragmas();t.parseAsInline?e.push.apply(e,this.parseInlineRun()):e.push.apply(e,this.parseBlocks())};r.prototype.loadRemoteTiddler=function(t){var i=this;$tw.utils.httpRequest({url:t,type:'GET',callback:function(s,e){s||(e=i.wiki.deserializeTiddlers('.tid',e,i.wiki.getCreationFields()),$tw.utils.each(e,function(s){s._canonical_uri=t}),e&&i.wiki.addTiddlers(e))}})},r.prototype.setupRules=function(t,i){var n=this;$tw.safemode||$tw.utils.each(t,function(s,e){'enable'!==n.wiki.getTiddlerText(i+e,'enable')&&delete t[e]})},r.prototype.instantiateRules=function(s,t,i){var n=[],r=this;return $tw.utils.each(s,function(s){var e=new s(r);e.is={},e.is[t]=!0,e.init(r);s=e.findNextMatch(i);void 0!==s&&n.push({rule:e,matchIndex:s})}),n},r.prototype.skipWhitespace=function(s){var e=(s=s||{}).treatNewlinesAsNonWhitespace?/([^\\S\\n]+)/gm:/(\\s+)/gm;e.lastIndex=this.pos;s=e.exec(this.source);s&&s.index===this.pos&&(this.pos=e.lastIndex)},r.prototype.findNextMatch=function(s,e){for(var t,i=this.sourceLength,n=0;n<s.length;n++){var r=s[n];void 0!==r.matchIndex&&r.matchIndex<e&&(r.matchIndex=r.rule.findNextMatch(e)),void 0!==r.matchIndex&&r.matchIndex<=i&&(i=(t=r).matchIndex)}return t},r.prototype.parsePragmas=function(){for(var s=this.tree;this.skipWhitespace(),!(this.pos>=this.sourceLength);){var e=this.findNextMatch(this.pragmaRules,this.pos);if(!e||e.matchIndex!==this.pos)break;e=e.rule.parse();0<e.length&&(s.push.apply(s,e),e[0].children=[],s=e[0].children)}return s},r.prototype.parseBlock=function(s){var e=s?new RegExp('('+s+'|\\\\r?\\\\n\\\\r?\\\\n)','mg'):/(\\r?\\n\\r?\\n)/gm;if(this.skipWhitespace(),this.pos>=this.sourceLength)return[];s=this.findNextMatch(this.blockRules,this.pos);return s&&s.matchIndex===this.pos?s.rule.parse():[{type:'element',tag:'p',children:this.parseInlineRun(e)}]},r.prototype.parseBlocks=function(s){return s?this.parseBlocksTerminated(s):this.parseBlocksUnterminated()},r.prototype.parseBlocksUnterminated=function(){for(var s=[];this.pos<this.sourceLength;)s.push.apply(s,this.parseBlock());return s},r.prototype.parseBlocksTerminated=function(s){var e=new RegExp('('+s+')','mg'),t=[];this.skipWhitespace(),e.lastIndex=this.pos;for(var i=e.exec(this.source);this.pos<this.sourceLength&&(!i||i.index!==this.pos);){var n=this.parseBlock(s);t.push.apply(t,n),this.skipWhitespace(),e.lastIndex=this.pos,i=e.exec(this.source)}return i&&i.index===this.pos&&(this.pos=i.index+i[0].length),t},r.prototype.parseInlineRun=function(s,e){return s?this.parseInlineRunTerminated(s,e):this.parseInlineRunUnterminated(e)},r.prototype.parseInlineRunUnterminated=function(s){for(var e=[],t=this.findNextMatch(this.inlineRules,this.pos);this.pos<this.sourceLength&&t;)t.matchIndex>this.pos&&(this.pushTextWidget(e,this.source.substring(this.pos,t.matchIndex)),this.pos=t.matchIndex),e.push.apply(e,t.rule.parse()),t=this.findNextMatch(this.inlineRules,this.pos);return this.pos<this.sourceLength&&this.pushTextWidget(e,this.source.substr(this.pos)),this.pos=this.sourceLength,e},r.prototype.parseInlineRunTerminated=function(s,e){e=e||{};var t=[];s.lastIndex=this.pos;for(var i=s.exec(this.source),n=this.findNextMatch(this.inlineRules,this.pos);this.pos<this.sourceLength&&(i||n);){if(i&&(!n||n.matchIndex>=i.index))return i.index>this.pos&&this.pushTextWidget(t,this.source.substring(this.pos,i.index)),this.pos=i.index,e.eatTerminator&&(this.pos+=i[0].length),t;n&&(n.matchIndex>this.pos&&(this.pushTextWidget(t,this.source.substring(this.pos,n.matchIndex)),this.pos=n.matchIndex),t.push.apply(t,n.rule.parse()),n=this.findNextMatch(this.inlineRules,this.pos),s.lastIndex=this.pos,i=s.exec(this.source))}return this.pos<this.sourceLength&&this.pushTextWidget(t,this.source.substr(this.pos)),this.pos=this.sourceLength,t},r.prototype.pushTextWidget=function(s,e){this.configTrimWhiteSpace&&(e=$tw.utils.trim(e)),e&&s.push({type:'text',text:e})},r.prototype.parseClasses=function(){var s=/\\.([^\\s\\.]+)/gm,e=[];s.lastIndex=this.pos;for(var t=s.exec(this.source);t&&t.index===this.pos;)this.pos=t.index+t[0].length,e.push(t[1]),t=s.exec(this.source);return e},r.prototype.amendRules=function(s,t){var i;if(t=t||[],'only'===s)i=!0;else{if('except'!==s)return;i=!1}s=function(s){for(var e=s.length-1;0<=e;e--)-1===t.indexOf(s[e].rule.name)===i&&s.splice(e,1)};s(this.pragmaRules),s(this.blockRules),s(this.inlineRules)},exports['text/vnd.tiddlywiki']=r}();","type":"application/javascript","module-type":"parser"},"$:/core/modules/parsers/wikiparser/rules/wikirulebase.js":{"text":"!function(){'use strict';function t(){}t.prototype.init=function(t){this.parser=t},t.prototype.findNextMatch=function(t){return this.matchRegExp.lastIndex=t,this.match=this.matchRegExp.exec(this.parser.source),this.match?this.match.index:void 0},exports.WikiRuleBase=t}();","type":"application/javascript","module-type":"global"},"$:/core/modules/pluginswitcher.js":{"text":"!function(){'use strict';function i(i){this.wiki=i.wiki,this.pluginType=i.pluginType,this.controllerTitle=i.controllerTitle,this.defaultPlugins=i.defaultPlugins||[],this.onSwitch=i.onSwitch,this.switchPlugins();var t=this;this.wiki.addEventListener('change',function(i){$tw.utils.hop(i,t.controllerTitle)&&t.switchPlugins()})}i.prototype.switchPlugins=function(){for(var i=this.wiki.getTiddlerText(this.controllerTitle),t=0;!this.wiki.getTiddler(i)&&t<this.defaultPlugins.length;)i=this.defaultPlugins[t++];var e=[],n=this,s=function(i){var t=n.wiki.getTiddler(i);t&&t.isPlugin()&&-1===e.indexOf(i)&&(e.push(i),JSON.parse(n.wiki.getTiddlerText(i)),t=$tw.utils.parseStringArray(t.fields.dependents||''),$tw.utils.each(t,function(i){s(i)}))};s(i);$tw.wiki.readPluginInfo(e),$tw.wiki.unregisterPluginTiddlers(this.pluginType),$tw.wiki.registerPluginTiddlers(this.pluginType,e);$tw.wiki.unpackPluginTiddlers(),this.onSwitch&&this.onSwitch(e)},exports.PluginSwitcher=i}();","type":"application/javascript","module-type":"global"},"$:/core/modules/saver-handler.js":{"text":"!function(){'use strict';function t(t){var n=this;this.wiki=t.wiki,this.dirtyTracking=t.dirtyTracking,this.preloadDirty=t.preloadDirty||[],this.pendingAutoSave=!1,this.logger=new $tw.utils.Logger('saver-handler'),$tw.browser&&this.initSavers(),$tw.browser&&this.dirtyTracking&&(this.filterFn=this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter)),t=n.filterFn.call(n.wiki,function(e){$tw.utils.each(n.preloadDirty,function(t){var i=n.wiki.getTiddler(t);e(i,t)})}),this.numChanges=t.length,this.wiki.addEventListener('change',function(t){var i=n.filterFn.call(n.wiki,function(a){$tw.utils.each(t,function(t,i){var e=n.wiki.getTiddler(i);a(e,i)})});n.numChanges+=i.length,n.updateDirtyStatus(),n.pendingAutoSave&&0===n.wiki.getSizeOfTiddlerEventQueue()&&(0<n.numChanges&&n.saveWiki({method:'autosave',downloadType:'text/plain'}),n.pendingAutoSave=!1)}),$tw.rootWidget.addEventListener('tm-auto-save-wiki',function(t){0===n.wiki.getSizeOfTiddlerEventQueue()?0<n.numChanges&&n.saveWiki({method:'autosave',downloadType:'text/plain'}):n.pendingAutoSave=!0}),$tw.addUnloadTask(function(t){var i;return n.isDirty()&&(i=$tw.language.getString('UnsavedChangesWarning'),t.returnValue=i),i})),$tw.browser&&($tw.rootWidget.addEventListener('tm-save-wiki',function(t){n.saveWiki({template:t.param,downloadType:'text/plain',variables:t.paramObject})}),$tw.rootWidget.addEventListener('tm-download-file',function(t){n.saveWiki({method:'download',template:t.param,downloadType:'text/plain',variables:t.paramObject})}))}t.prototype.titleSyncFilter='$:/config/SaverFilter',t.prototype.titleAutoSave='$:/config/AutoSave',t.prototype.titleSavedNotification='$:/language/Notifications/Save/Done',t.prototype.initSavers=function(t){t=t||'saver',this.savers=[];var e=this;$tw.modules.forEachModuleOfType(t,function(t,i){i.canSave(e)&&e.savers.push(i.create(e.wiki))}),this.savers.sort(function(t,i){return t.info.priority<i.info.priority?-1:t.info.priority>i.info.priority?1:0})},t.prototype.saveWiki=function(i){var e=this,a=(i=i||{}).method||'save';if('autosave'===a&&($tw.config.disableAutoSave||'yes'!==this.wiki.getTiddlerText(this.titleAutoSave,'yes')))return!1;for(var t=i.variables||{},n=i.template||'$:/core/save/all',r=i.downloadType||'text/plain',o=this.wiki.renderTiddler(r,n,i),s=function(t){t?alert($tw.language.getString('Error/WhileSaving')+':\\n\\n'+t):('download'!==a&&(e.numChanges=0,e.updateDirtyStatus()),$tw.notifier.display(e.titleSavedNotification),i.callback&&i.callback())},l=this.savers.length-1;0<=l;l--){var d=this.savers[l];if(-1!==d.info.capabilities.indexOf(a)&&d.save(o,a,s,{variables:{filename:t.filename}}))return this.logger.log('Saving wiki with method',a,'through saver',d.info.name),!0}return!1},t.prototype.isDirty=function(){return 0<this.numChanges},t.prototype.updateDirtyStatus=function(){var i=this;$tw.browser&&($tw.utils.toggleClass(document.body,'tc-dirty',this.isDirty()),$tw.utils.each($tw.windows,function(t){$tw.utils.toggleClass(t.document.body,'tc-dirty',i.isDirty())}))},exports.SaverHandler=t}();","type":"application/javascript","module-type":"global"},"$:/core/modules/savers/andtidwiki.js":{"text":"!function(){'use strict';function t(e){}t.prototype.save=function(t,e,i,n){var o=n&&n.variables?n.variables.filename:null;if('download'===e)if(window.twi.saveDownload)try{window.twi.saveDownload(t,o)}catch(e){'Method not found'===e.message&&window.twi.saveDownload(t)}else{var a=document.createElement('a');a.setAttribute('href','data:text/plain,'+encodeURIComponent(t)),o&&a.setAttribute('download',o),document.body.appendChild(a),a.click(),document.body.removeChild(a)}else window.twi.saveWiki?window.twi.saveWiki(t):(0===(e=decodeURIComponent(document.location.toString().split('#')[0])).indexOf('file://')&&(e=e.substr(7)),-1!==(a=e.indexOf('?'))&&(e=e.substr(0,a)),-1!==(a=e.indexOf('#'))&&(e=e.substr(0,a)),window.twi.saveFile(e,t));return i(null),!0},t.prototype.info={name:'andtidwiki',priority:1600,capabilities:['save','autosave','download']},exports.canSave=function(e){return!!window.twi&&!!window.twi.saveFile},exports.create=function(e){return new t}}();","type":"application/javascript","module-type":"saver"},"$:/core/modules/savers/beaker.js":{"text":"!function(){'use strict';function e(t){this.wiki=t}e.prototype.save=function(e,t,n){var i=new DatArchive(''+window.location),o=(''+window.location.pathname).split('#')[0];return i.stat(o).then(function(t){t.isDirectory()&&(o+='/index.html'),i.writeFile(o,e,'utf8').then(function(t){n(null)},function(t){n('Beaker Saver Write Error: '+t)})},function(t){n('Beaker Saver Stat Error: '+t)}),!0},e.prototype.info={name:'beaker',priority:3e3,capabilities:['save','autosave']},exports.canSave=function(t){return!!window.DatArchive&&'dat:'===location.protocol},exports.create=function(t){return new e(t)}}();","type":"application/javascript","module-type":"saver"},"$:/core/modules/savers/custom.js":{"text":"!function(){'use strict';function t(t){try{return t&&t.$tw&&t.$tw.customSaver}catch(t){return console.log({msg:'custom saver is disabled',reason:t}),null}}function e(t){}var r=t(window)||t(window.parent)||{};e.prototype.save=function(t,e,n){return r.save(t,e,n)},e.prototype.info={name:'custom',priority:r.priority||4e3,capabilities:['save','autosave']},exports.canSave=function(t){return!!r.save},exports.create=function(t){return new e}}();","type":"application/javascript","module-type":"saver"},"$:/core/modules/savers/download.js":{"text":"!function(){'use strict';function t(e){}t.prototype.save=function(e,t,o,n){var a=(n=n||{}).variables.filename;a||-1!==(r=document.location.pathname.lastIndexOf('/'))&&(a=decodeURIComponent(document.location.pathname.substr(r+1))),a=a||'tiddlywiki.html';var r,n=document.createElement('a');return void 0!==Blob?(r=new Blob([e],{type:'text/html'}),n.setAttribute('href',URL.createObjectURL(r))):n.setAttribute('href','data:text/html,'+encodeURIComponent(e)),n.setAttribute('download',a),document.body.appendChild(n),n.click(),document.body.removeChild(n),o(null),!0},t.prototype.info={name:'download',priority:100},Object.defineProperty(t.prototype.info,'capabilities',{get:function(){var e=['save','download'];return'yes'===($tw.wiki.getTextReference('$:/config/DownloadSaver/AutoSave')||'').toLowerCase()&&e.push('autosave'),e}}),exports.canSave=function(e){return void 0!==document.createElement('a').download},exports.create=function(e){return new t}}();","type":"application/javascript","module-type":"saver"},"$:/core/modules/savers/fsosaver.js":{"text":"!function(){'use strict';function e(t){}e.prototype.save=function(t,e,n){var i=unescape(document.location.pathname);if(/^\\/[A-Z]\\:\\\\[^\\\\]+/i.test(i))i=i.substr(1);else{if(''===document.location.hostname||!/^\\/\\\\[^\\\\]+\\\\[^\\\\]+/i.test(i))return!1;i=i.substr(1),i='\\\\\\\\'+document.location.hostname+i}i=new ActiveXObject('Scripting.FileSystemObject').OpenTextFile(i,2,-1,-1);return i.Write(t),i.Close(),n(null),!0},e.prototype.info={name:'FSOSaver',priority:120,capabilities:['save','autosave']},exports.canSave=function(t){try{return'file:'===window.location.protocol&&!!new ActiveXObject('Scripting.FileSystemObject')}catch(t){return!1}},exports.create=function(t){return new e}}();","type":"application/javascript","module-type":"saver"},"$:/core/modules/savers/gitea.js":{"text":"!function(){'use strict';function e(t){this.wiki=t}e.prototype.save=function(r,t,o){var u=this,e=this.wiki.getTiddlerText('$:/Gitea/Username'),i=$tw.utils.getPassword('Gitea'),c=this.wiki.getTiddlerText('$:/Gitea/Repo'),a=this.wiki.getTiddlerText('$:/Gitea/Path',''),l=this.wiki.getTiddlerText('$:/Gitea/Filename'),p=this.wiki.getTiddlerText('$:/Gitea/Branch')||'master',h=this.wiki.getTiddlerText('$:/Gitea/ServerURL')||'https://gitea',d={Accept:'application/json','Content-Type':'application/json;charset=UTF-8',Authorization:'token '+i};if(!(e&&i&&c&&l))return!1;'/'!==a.substring(0,1)&&(a='/'+a),'/'!==a.substring(a.length-1)&&(a+='/');var g=h+'/repos/'+c+'/contents'+a;return $tw.utils.httpRequest({url:g,type:'GET',headers:d,data:{ref:p},callback:function(t,e,i){var a='';if(t&&404!==i.status)return o(t);var s=!0;404!==i.status&&(e=JSON.parse(e),$tw.utils.each(e,function(t){t.name===l&&(a=t.sha)}),''===a&&(s=!1));var n={message:$tw.language.getRawString('ControlPanel/Saving/GitService/CommitMessage'),content:$tw.utils.base64Encode(r),sha:a};$tw.utils.httpRequest({url:h+'/repos/'+c+'/branches/'+p,type:'GET',headers:d,callback:function(t,e,i){404===i.status?o('Please ensure the branch in the Gitea repo exists'):(n.branch=p,u.upload(g+l,s?'PUT':'POST',d,n,o))}})}}),!0},e.prototype.upload=function(t,e,i,a,s){$tw.utils.httpRequest({url:t,type:e,headers:i,data:JSON.stringify(a),callback:function(t,e,i){if(t)return s(t);JSON.parse(e);s(null)}})},e.prototype.info={name:'Gitea',priority:2e3,capabilities:['save','autosave']},exports.canSave=function(t){return!0},exports.create=function(t){return new e(t)}}();","type":"application/javascript","module-type":"saver"},"$:/core/modules/savers/github.js":{"text":"!function(){'use strict';function e(t){this.wiki=t}e.prototype.save=function(r,t,s){var e=this.wiki.getTiddlerText('$:/GitHub/Username'),i=$tw.utils.getPassword('github'),a=this.wiki.getTiddlerText('$:/GitHub/Repo'),n=this.wiki.getTiddlerText('$:/GitHub/Path',''),u=this.wiki.getTiddlerText('$:/GitHub/Filename'),o=this.wiki.getTiddlerText('$:/GitHub/Branch')||'main',c=this.wiki.getTiddlerText('$:/GitHub/ServerURL')||'https://api.github.com',l={Accept:'application/vnd.github.v3+json','Content-Type':'application/json;charset=UTF-8',Authorization:'Basic '+window.btoa(e+':'+i),'If-None-Match':''};if(!(e&&i&&a&&u))return!1;'/'!==n.substring(0,1)&&(n='/'+n),'/'!==n.substring(n.length-1)&&(n+='/');var h=c+'/repos/'+a+'/contents'+n;return $tw.utils.httpRequest({url:h,type:'GET',headers:l,data:{ref:o},callback:function(t,e,i){var a='';if(t&&404!==i.status)return s(t);404!==i.status&&(n=JSON.parse(e),$tw.utils.each(n,function(t){t.name===u&&(a=t.sha)}));var n={message:$tw.language.getRawString('ControlPanel/Saving/GitService/CommitMessage'),content:$tw.utils.base64Encode(r),branch:o,sha:a};$tw.utils.httpRequest({url:h+u,type:'PUT',headers:l,data:JSON.stringify(n),callback:function(t,e,i){if(t)return s(t);JSON.parse(e);s(null)}})}}),!0},e.prototype.info={name:'github',priority:2e3,capabilities:['save','autosave']},exports.canSave=function(t){return!0},exports.create=function(t){return new e(t)}}();","type":"application/javascript","module-type":"saver"},"$:/core/modules/savers/gitlab.js":{"text":"!function(){'use strict';function e(t){this.wiki=t}e.prototype.save=function(s,t,o){var e=this.wiki.getTiddlerText('$:/GitLab/Username'),i=$tw.utils.getPassword('gitlab'),a=this.wiki.getTiddlerText('$:/GitLab/Repo'),c=this.wiki.getTiddlerText('$:/GitLab/Path',''),l=this.wiki.getTiddlerText('$:/GitLab/Filename'),p=this.wiki.getTiddlerText('$:/GitLab/Branch')||'master',n=this.wiki.getTiddlerText('$:/GitLab/ServerURL')||'https://gitlab.com/api/v4',u={'Content-Type':'application/json;charset=UTF-8','Private-Token':i};if(!(e&&i&&a&&l))return!1;'/'!==c.substring(0,1)&&(c='/'+c),'/'!==c.substring(c.length-1)&&(c+='/');var g=n+'/projects/'+encodeURIComponent(a)+'/repository/';return $tw.utils.httpRequest({url:g+'tree/?path='+encodeURIComponent(c.replace(/^\\/+|\\/$/g,''))+'&branch='+encodeURIComponent(p.replace(/^\\/+|\\/$/g,'')),type:'GET',headers:u,callback:function(t,e,i){var a='';if(t&&404!==i.status)return o(t);var n='POST';404!==i.status&&(r=JSON.parse(e),$tw.utils.each(r,function(t){t.name===l&&(n='PUT',a=t.sha)}));var r={commit_message:$tw.language.getRawString('ControlPanel/Saving/GitService/CommitMessage'),content:s,branch:p,sha:a};$tw.utils.httpRequest({url:g+'files/'+encodeURIComponent(c.replace(/^\\/+/,'')+l),type:n,headers:u,data:JSON.stringify(r),callback:function(t,e,i){if(t)return o(t);JSON.parse(e);o(null)}})}}),!0},e.prototype.info={name:'gitlab',priority:2e3,capabilities:['save','autosave']},exports.canSave=function(t){return!0},exports.create=function(t){return new e(t)}}();","type":"application/javascript","module-type":"saver"},"$:/core/modules/savers/hyperdrive.js":{"text":"!function(){'use strict';function r(e){this.wiki=e}r.prototype.save=function(r,e,t){var i=beaker.hyperdrive.drive(''+window.location),n=(''+window.location.pathname).split('#')[0];return i.stat(n).then(function(e){e.isDirectory()&&(n+='/index.html'),i.writeFile(n,r,'utf8').then(function(e){t(null)},function(e){t('Hyperdrive Saver Write Error: '+e)})},function(e){t('Hyperdrive Saver Stat Error: '+e)}),!0},r.prototype.info={name:'beaker-1.x',priority:3e3,capabilities:['save','autosave']},exports.canSave=function(e){return!!window.beaker&&!!beaker.hyperdrive&&'hyper:'===location.protocol},exports.create=function(e){return new r(e)}}();","type":"application/javascript","module-type":"saver"},"$:/core/modules/savers/manualdownload.js":{"text":"!function(){'use strict';function o(n){}o.prototype.save=function(n,o,t){return $tw.modal.display('$:/language/Modals/Download',{downloadLink:'data:text/html,'+encodeURIComponent(n)}),t(null),!0},o.prototype.info={name:'manualdownload',priority:0,capabilities:['save','download']},exports.canSave=function(n){return!0},exports.create=function(n){return new o}}();","type":"application/javascript","module-type":"saver"},"$:/core/modules/savers/msdownload.js":{"text":"!function(){'use strict';function n(t){}n.prototype.save=function(t,n,o){var e='tiddlywiki.html',a=document.location.pathname.lastIndexOf('/');-1!==a&&(e=document.location.pathname.substr(a+1));t=new Blob([t],{type:'text/html'});return window.navigator.msSaveBlob(t,e),o(null),!0},n.prototype.info={name:'msdownload',priority:110,capabilities:['save','download']},exports.canSave=function(t){return!!window.navigator.msSaveBlob},exports.create=function(t){return new n}}();","type":"application/javascript","module-type":"saver"},"$:/core/modules/savers/put.js":{"text":"!function(){'use strict';function a(n){$tw.utils.httpRequest({url:n.uri(),type:'HEAD',headers:{Accept:'*/*;charset=UTF-8'},callback:function(t,e,r){t||(r=r.getResponseHeader('ETag'))&&(n.etag=r.replace(/^W\\//,''))}})}function e(t){this.wiki=t;var n=this,t=this.uri();$tw.utils.httpRequest({url:t,type:'OPTIONS',callback:function(t,e,r){t||(n.serverAcceptsPuts=200===r.status&&!!r.getResponseHeader('dav'))}}),a(this)}e.prototype.uri=function(){return document.location.toString().split('#')[0]},e.prototype.save=function(t,e,s){if(!this.serverAcceptsPuts)return!1;var i=this,r={'Content-Type':'text/html;charset=UTF-8'};return this.etag&&(r['If-Match']=this.etag),$tw.utils.httpRequest({url:this.uri(),type:'PUT',headers:r,data:t,callback:function(t,e,r){var n;t?412===Number(t.substring(t.indexOf(':')+2,t.length))?(n=$tw.language.getString('Error/EditConflict'),s(n)):s(t):(i.etag=r.getResponseHeader('ETag'),null==i.etag&&a(i),s(null))}}),!0},e.prototype.info={name:'put',priority:2e3,capabilities:['save','autosave']},exports.canSave=function(t){return/^https?:/.test(location.protocol)},exports.create=function(t){return new e(t)}}();","type":"application/javascript","module-type":"saver"},"$:/core/modules/savers/tiddlyfox.js":{"text":"!function(){'use strict';function t(e){}t.prototype.save=function(e,t,n){var i=document.getElementById('tiddlyfox-message-box');if(i){var a=document.location.toString().split('#')[0];0===a.indexOf('file://localhost/')&&(a='file://'+a.substr(16)),a=/^file\\:\\/\\/\\/[A-Z]\\:\\//i.test(a)?a.substr(8).replace(/\\//g,'\\\\'):0===a.indexOf('file://///')?'\\\\\\\\'+unescape(a.substr(10)).replace(/\\//g,'\\\\'):0===a.indexOf('file:///')?unescape(a.substr(7)):0===a.indexOf('file:/')?unescape(a.substr(5)):'\\\\\\\\'+unescape(a.substr(7)).replace(new RegExp('/','g'),'\\\\');var s=document.createElement('div');s.setAttribute('data-tiddlyfox-path',decodeURIComponent(a)),s.setAttribute('data-tiddlyfox-content',e),i.appendChild(s),s.addEventListener('tiddlyfox-have-saved-file',function(e){n(null)},!1);i=document.createEvent('Events');return i.initEvent('tiddlyfox-save-file',!0,!1),s.dispatchEvent(i),!0}return!1},t.prototype.info={name:'tiddlyfox',priority:1500,capabilities:['save','autosave']},exports.canSave=function(e){return!0},exports.create=function(e){return new t}}();","type":"application/javascript","module-type":"saver"},"$:/core/modules/savers/tiddlyie.js":{"text":"!function(){'use strict';function t(e){}t.prototype.save=function(e,t,n){if(void 0===window.TiddlyIE)return!1;var o=unescape(document.location.pathname);if(/^\\/[A-Z]\\:\\/[^\\/]+/i.test(o))o=(o=o.substr(1)).replace(/\\//g,'\\\\');else{if(''===document.hostname||!/^\\/[^\\/]+\\/[^\\/]+/i.test(o))return!1;o=o.replace(/\\//g,'\\\\'),o='\\\\\\\\'+document.location.hostname+o}return window.TiddlyIE.save(o,e),n(null),!0},t.prototype.info={name:'tiddlyiesaver',priority:1500,capabilities:['save']},exports.canSave=function(e){return'file:'===window.location.protocol},exports.create=function(e){return new t}}();","type":"application/javascript","module-type":"saver"},"$:/core/modules/savers/twedit.js":{"text":"!function(){'use strict';function e(t){}e.prototype.save=function(e,t,n){if('object'!=typeof DeviceInfo)return!1;var o=decodeURIComponent(document.location.pathname),i=o.indexOf('?');-1!==i&&(o=o.substr(0,i)),-1!==(i=o.indexOf('#'))&&(o=o.substr(0,i));i='/Documents';0===o.indexOf(i)&&(o=o.substr(i.length));function r(t){n($tw.language.getString('Error/SavingToTWEdit')+': '+t.target.error.code)}return window.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(t){t.root.getFile(o,{create:!0},function(t){t.createWriter(function(t){t.onerror=r,t.onwrite=function(){n(null)},t.position=0,t.write(e)},r)},r)},r),!0},e.prototype.info={name:'twedit',priority:1600,capabilities:['save','autosave']},exports.canSave=function(t){return!0},exports.create=function(t){return new e},$tw.browser&&(window.version={title:'TiddlyWiki'})}();","type":"application/javascript","module-type":"saver"},"$:/core/modules/savers/upload.js":{"text":"!function(){'use strict';function e(t){this.wiki=t}e.prototype.save=function(t,e,n){var i=this.wiki.getTextReference('$:/UploadBackupDir')||'.',r=this.wiki.getTextReference('$:/UploadName'),a=$tw.utils.getPassword('upload'),o=this.wiki.getTextReference('$:/UploadDir')||'.',s=this.wiki.getTextReference('$:/UploadFilename')||'index.html',p=this.wiki.getTextReference('$:/UploadWithUrlOnly')||'no',u=this.wiki.getTextReference('$:/UploadURL');if('yes'===p){if(!u||''===u.toString().trim())return!1}else if(!r||''===r.toString().trim()||!a||''===a.toString().trim())return!1;u=u||'http://'+r+'.tiddlyspot.com/store.cgi';var l='---------------------------AaB03x',p=[];p.push('--'+l+'\\r\\nContent-disposition: form-data; name=\"UploadPlugin\"\\r\\n'),p.push('backupDir='+i+';user='+r+';password='+a+';uploaddir='+o+';;'),p.push('\\r\\n--'+l),p.push('Content-disposition: form-data; name=\"userfile\"; filename=\"'+s+'\"'),p.push('Content-Type: text/html;charset=UTF-8'),p.push('Content-Length: '+t.length+'\\r\\n'),p.push('');var d=p.join('\\r\\n')+t+'\\r\\n-----------------------------AaB03x--\\r\\n',c=new XMLHttpRequest;c.open('POST',u,!0,r,a),c.setRequestHeader('Content-Type','multipart/form-data; charset=UTF-8; boundary='+l),c.onreadystatechange=function(){4==c.readyState&&200==c.status&&('0 - '===c.responseText.substr(0,4)?n(null):n(c.responseText))};try{c.send(d)}catch(t){return n($tw.language.getString('Error/Caption')+':'+t)}return $tw.notifier.display('$:/language/Notifications/Save/Starting'),!0},e.prototype.info={name:'upload',priority:2e3,capabilities:['save','autosave']},exports.canSave=function(t){return!0},exports.create=function(t){return new e(t)}}();","type":"application/javascript","module-type":"saver"},"$:/core/modules/server/authenticators/basic.js":{"text":"!function(){'use strict';var r,s;function e(e){this.server=e,this.credentialsData=[]}$tw.node&&(require('util'),r=require('fs'),require('url'),s=require('path')),e.prototype.init=function(){if(this.credentialsFilepath=this.server.get('credentials'),this.credentialsFilepath){var e=s.resolve(this.server.boot.wikiPath,this.credentialsFilepath);if(!r.existsSync(e)||r.statSync(e).isDirectory())return'Error: Unable to load user credentials from \\''+e+'\\'';var t=r.readFileSync(e,'utf8'),t=$tw.utils.parseCsvStringWithHeader(t);if('string'==typeof t)return'Error: '+t+' reading credentials from \\''+e+'\\'';this.credentialsData=t}return this.server.get('username')&&this.server.get('password')&&(this.credentialsData=this.credentialsData||[],this.credentialsData.push({username:this.server.get('username'),password:this.server.get('password')})),0<this.credentialsData.length},e.prototype.authenticateRequest=function(e,t,r){e=e.headers.authorization||'';if(!e&&r.allowAnon)return!0;var e=e.split(/\\s+/).pop()||'',e=$tw.utils.base64Decode(e).split(/:/),s=e[0],i=e[1];return this.credentialsData.find(function(e){return e.username===s&&e.password===i})?(r.authenticatedUsername=s,!0):(t.writeHead(401,'Authentication required',{'WWW-Authenticate':'Basic realm=\"Please provide your username and password to login to '+r.server.servername+'\"'}),t.end(),!1)},exports.AuthenticatorClass=e}();","type":"application/javascript","module-type":"authenticator"},"$:/core/modules/server/authenticators/header.js":{"text":"!function(){'use strict';function e(e){this.server=e,this.header=e.get('authenticated-user-header')?e.get('authenticated-user-header').toLowerCase():void 0}e.prototype.init=function(){return!!this.header},e.prototype.authenticateRequest=function(e,t,r){e=e.headers[this.header];return e||r.allowAnon?(r.authenticatedUsername=e,!0):(t.writeHead(401,'Authorization header required to login to \\''+r.server.servername+'\\''),t.end(),!1)},exports.AuthenticatorClass=e}();","type":"application/javascript","module-type":"authenticator"},"$:/core/modules/server/routes/delete-tiddler.js":{"text":"!function(){'use strict';exports.method='DELETE',exports.path=/^\\/bags\\/default\\/tiddlers\\/(.+)$/,exports.handler=function(e,t,d){var n=decodeURIComponent(d.params[0]);d.wiki.deleteTiddler(n),t.writeHead(204,'OK',{'Content-Type':'text/plain'}),t.end()}}();","type":"application/javascript","module-type":"route"},"$:/core/modules/server/routes/get-favicon.js":{"text":"!function(){'use strict';exports.method='GET',exports.path=/^\\/favicon.ico$/,exports.handler=function(e,t,i){t.writeHead(200,{'Content-Type':'image/x-icon'});i=i.wiki.getTiddlerText('$:/favicon.ico','');t.end(i,'base64')}}();","type":"application/javascript","module-type":"route"},"$:/core/modules/server/routes/get-file.js":{"text":"!function(){'use strict';exports.method='GET',exports.path=/^\\/files\\/(.+)$/,exports.handler=function(e,i,t){var o=require('path'),n=require('fs'),r=(require('util'),decodeURIComponent(t.params[0])),a=o.resolve(t.boot.wikiPath,'files',r),s=o.extname(a);n.readFile(a,function(e,t){var o,n='text/plain';e?(console.log('Error accessing file '+a+': '+e.toString()),o=404,t='File \\''+r+'\\' not found'):(o=200,n=$tw.config.fileExtensionInfo[s]?$tw.config.fileExtensionInfo[s].type:'application/octet-stream'),i.writeHead(o,{'Content-Type':n}),i.end(t)})}}();","type":"application/javascript","module-type":"route"},"$:/core/modules/server/routes/get-index.js":{"text":"!function(){'use strict';var d=require('zlib');exports.method='GET',exports.path=/^\\/$/,exports.handler=function(e,t,r){var n=(n=e.headers['accept-encoding'])||'',o=r.wiki.renderTiddler(r.server.get('root-render-type'),r.server.get('root-tiddler')),e={'Content-Type':r.server.get('root-serve-type')};r.server.enableGzip&&(/\\bdeflate\\b/.test(n)?(e['Content-Encoding']='deflate',o=d.deflateSync(o)):/\\bgzip\\b/.test(n)&&(e['Content-Encoding']='gzip',o=d.gzipSync(o))),t.writeHead(200,e),t.end(o)}}();","type":"application/javascript","module-type":"route"},"$:/core/modules/server/routes/get-login-basic.js":{"text":"!function(){'use strict';exports.method='GET',exports.path=/^\\/login-basic$/,exports.handler=function(e,t,a){var r;a.authenticatedUsername?(r=$tw.syncadaptor&&$tw.syncadaptor.host?$tw.syncadaptor.host:'/',t.writeHead(302,{Location:r})):t.writeHead(401,{'WWW-Authenticate':'Basic realm=\"Please provide your username and password to login to '+a.server.servername+'\"'}),t.end()}}();","type":"application/javascript","module-type":"route"},"$:/core/modules/server/routes/get-status.js":{"text":"!function(){'use strict';exports.method='GET',exports.path=/^\\/status$/,exports.handler=function(e,t,n){t.writeHead(200,{'Content-Type':'application/json'});n=JSON.stringify({username:n.authenticatedUsername||n.server.get('anon-username')||'',anonymous:!n.authenticatedUsername,read_only:!n.server.isAuthorized('writers',n.authenticatedUsername),sse_enabled:'yes'===n.server.get('sse-enabled'),space:{recipe:'default'},tiddlywiki_version:$tw.version});t.end(n,'utf8')}}();","type":"application/javascript","module-type":"route"},"$:/core/modules/server/routes/get-tiddler-html.js":{"text":"!function(){'use strict';exports.method='GET',exports.path=/^\\/([^\\/]+)$/,exports.handler=function(e,r,t){var d,i=decodeURIComponent(t.params[0]),n=t.wiki.getTiddler(i);n?(d=n.getFieldString('_render_type'),n=n.getFieldString('_render_template'),n=t.wiki.isSystemTiddler(i)?(d=d||t.server.get('system-tiddler-render-type'),n||t.server.get('system-tiddler-render-template')):(d=d||t.server.get('tiddler-render-type'),n||t.server.get('tiddler-render-template')),i=t.wiki.renderTiddler(d,n,{parseAsInline:!0,variables:{currentTiddler:i}}),r.writeHead(200),r.end(i,'utf8')):(r.writeHead(404),r.end())}}();","type":"application/javascript","module-type":"route"},"$:/core/modules/server/routes/get-tiddler.js":{"text":"!function(){'use strict';exports.method='GET',exports.path=/^\\/recipes\\/default\\/tiddlers\\/(.+)$/,exports.handler=function(e,i,t){var d=decodeURIComponent(t.params[0]),n=t.wiki.getTiddler(d),r={},s=['bag','created','creator','modified','modifier','permissions','recipe','revision','tags','text','title','type','uri'];n?($tw.utils.each(n.fields,function(e,i){var t=n.getFieldString(i);-1!==s.indexOf(i)?r[i]=t:(r.fields=r.fields||{},r.fields[i]=t)}),r.revision=t.wiki.getChangeCount(d),r.bag='default',r.type=r.type||'text/vnd.tiddlywiki',i.writeHead(200,{'Content-Type':'application/json'}),i.end(JSON.stringify(r),'utf8')):(i.writeHead(404),i.end())}}();","type":"application/javascript","module-type":"route"},"$:/core/modules/server/routes/get-tiddlers-json.js":{"text":"!function(){'use strict';exports.method='GET',exports.path=/^\\/recipes\\/default\\/tiddlers.json$/,exports.handler=function(e,t,i){var r=i.queryParameters.filter||'[all[tiddlers]!is[system]sort[title]]';if('yes'!==i.wiki.getTiddlerText('$:/config/Server/AllowAllExternalFilters')&&'yes'!==i.wiki.getTiddlerText('$:/config/Server/ExternalFilters/'+r))return console.log('Blocked attempt to GET /recipes/default/tiddlers.json with filter: '+r),t.writeHead(403),void t.end();'no'===i.wiki.getTiddlerText('$:/config/SyncSystemTiddlersFromServer')&&(r+='+[!is[system]]');var l=(i.queryParameters.exclude||'text').split(','),r=i.wiki.filterTiddlers(r);t.writeHead(200,{'Content-Type':'application/json'});var s=[];$tw.utils.each(r,function(e){var t=i.wiki.getTiddler(e);t&&((t=t.getFieldStrings({exclude:l})).revision=i.wiki.getChangeCount(e),t.type=t.type||'text/vnd.tiddlywiki',s.push(t))});r=JSON.stringify(s);t.end(r,'utf8')}}();","type":"application/javascript","module-type":"route"},"$:/core/modules/server/routes/put-tiddler.js":{"text":"!function(){'use strict';exports.method='PUT',exports.path=/^\\/recipes\\/default\\/tiddlers\\/(.+)$/,exports.handler=function(e,t,i){var d=decodeURIComponent(i.params[0]),n=JSON.parse(i.data);n.fields&&($tw.utils.each(n.fields,function(e,t){n[t]=e}),delete n.fields),n.revision&&delete n.revision,i.wiki.addTiddler(new $tw.Tiddler(i.wiki.getCreationFields(),n,{title:d},i.wiki.getModificationFields()));i=i.wiki.getChangeCount(d).toString();t.writeHead(204,'OK',{Etag:'\"default/'+encodeURIComponent(d)+'/'+i+':\"','Content-Type':'text/plain'}),t.end()}}();","type":"application/javascript","module-type":"route"},"$:/core/modules/server/server-sent-events.js":{"text":"!function(){'use strict';function i(e,t){this.handler=t,this.prefix=e}i.prototype.getExports=function(){return{bodyFormat:'stream',method:'GET',path:new RegExp('^/events/'+this.prefix+'$'),handler:this.handleEventRequest.bind(this)}},i.prototype.handleEventRequest=function(e,t,n){i.prototype.isEventStreamRequest(e)?(t.writeHead(200,{'Content-Type':'text/event-stream','Cache-Control':'no-cache',Connection:'keep-alive'}),this.handler(e,n,this.emit.bind(this,t),this.end.bind(this,t))):(t.writeHead(406,'Not Acceptable',{}),t.end())},i.prototype.isEventStreamRequest=function(e){return e.headers.accept&&e.headers.accept.match(/^text\\/event-stream/)},i.prototype.emit=function(e,t,n){if('string'!=typeof t||-1!==t.indexOf('\\n'))throw new Error('Type must be a single-line string');if('string'!=typeof n||-1!==n.indexOf('\\n'))throw new Error('Data must be a single-line string');e.write('event: '+t+'\\ndata: '+n+'\\n\\n','utf8')},i.prototype.end=function(e){e.end()},exports.ServerSentEvents=i}();","type":"application/javascript","module-type":"library"},"$:/core/modules/server/server.js":{"text":"!function(){'use strict';var o,n,a,d;function t(t){var i=this;if(this.routes=t.routes||[],this.authenticators=t.authenticators||[],this.wiki=t.wiki,this.boot=t.boot||$tw.boot,this.servername=$tw.utils.transliterateToSafeASCII(this.wiki.getTiddlerText('$:/SiteTitle')||'TiddlyWiki5'),this.variables=$tw.utils.extend({},this.defaultVariables),t.variables)for(var e in t.variables)t.variables[e]&&(this.variables[e]=t.variables[e]);$tw.utils.extend({},this.defaultVariables,t.variables),this.csrfDisable='yes'===this.get('csrf-disable'),this.enableGzip='yes'===this.get('gzip');var r=this.get('username')&&this.get('password')?this.get('username'):'(anon)';this.authorizationPrincipals={readers:(this.get('readers')||r).split(',').map($tw.utils.trim),writers:(this.get('writers')||r).split(',').map($tw.utils.trim)},$tw.modules.forEachModuleOfType('authenticator',function(t,e){i.addAuthenticator(e.AuthenticatorClass)}),$tw.modules.forEachModuleOfType('route',function(t,e){i.addRoute(e)}),this.listenOptions=null,this.protocol='http';var s=this.get('tls-key'),r=this.get('tls-cert');r&&s&&(this.listenOptions={key:o.readFileSync(a.resolve(this.boot.wikiPath,s),'utf8'),cert:o.readFileSync(a.resolve(this.boot.wikiPath,r),'utf8')},this.protocol='https'),this.transport=require(this.protocol)}$tw.node&&(require('util'),o=require('fs'),n=require('url'),a=require('path'),d=require('querystring')),t.prototype.defaultVariables={port:'8080',host:'127.0.0.1','root-tiddler':'$:/core/save/all','root-render-type':'text/plain','root-serve-type':'text/html','tiddler-render-type':'text/html','tiddler-render-template':'$:/core/templates/server/static.tiddler.html','system-tiddler-render-type':'text/plain','system-tiddler-render-template':'$:/core/templates/wikified-tiddler','debug-level':'none',gzip:'no'},t.prototype.get=function(t){return this.variables[t]},t.prototype.addRoute=function(t){this.routes.push(t)},t.prototype.addAuthenticator=function(t){var e=new t(this),t=e.init();'string'==typeof t?$tw.utils.error('Error: '+t):t&&this.authenticators.push(e)},t.prototype.findMatchingRoute=function(t,e){for(var i=0;i<this.routes.length;i++){var r=this.routes[i],s=(r.path,e.urlInfo.pathname),o=e.pathPrefix?s.substr(0,e.pathPrefix.length)===e.pathPrefix&&(s=s.substr(e.pathPrefix.length)||'/',r.path.exec(s)):r.path.exec(s);if(o&&t.method===r.method){e.params=[];for(var a=1;a<o.length;a++)e.params.push(o[a]);return r}}return null},t.prototype.methodMappings={GET:'readers',OPTIONS:'readers',HEAD:'readers',PUT:'writers',POST:'writers',DELETE:'writers'},t.prototype.isAuthorized=function(t,e){t=this.authorizationPrincipals[t]||[];return-1!==t.indexOf('(anon)')||e&&(-1!==t.indexOf('(authenticated)')||-1!==t.indexOf(e))},t.prototype.requestHandler=function(t,e,i){i=i||{};var r=this,s={};s.wiki=i.wiki||r.wiki,s.boot=i.boot||r.boot,s.server=r,s.urlInfo=n.parse(t.url),s.queryParameters=d.parse(s.urlInfo.query),s.pathPrefix=i.pathPrefix||this.get('path-prefix')||'';i=this.methodMappings[t.method]||'readers';if(!this.csrfDisable&&'writers'===i&&'TiddlyWiki'!==t.headers['x-requested-with'])return e.writeHead(403,'\\'X-Requested-With\\' header required to login to \\''+this.servername+'\\''),void e.end();if(s.allowAnon=this.isAuthorized(i,null),!(0<this.authenticators.length)||this.authenticators[0].authenticateRequest(t,e,s)){if(!this.isAuthorized(i,s.authenticatedUsername))return e.writeHead(401,'\\''+s.authenticatedUsername+'\\' is not authorized to access \\''+this.servername+'\\''),void e.end();var o,a=r.findMatchingRoute(t,s);if('none'!==r.get('debug-level')&&(console.log('Request path:',JSON.stringify(s.urlInfo)),console.log('Request headers:',JSON.stringify(t.headers)),console.log('authenticatedUsername:',s.authenticatedUsername)),!a)return e.writeHead(404),void e.end();'stream'===a.bodyFormat||'GET'===t.method||'HEAD'===t.method?a.handler(t,e,s):'string'!==a.bodyFormat&&a.bodyFormat?'buffer'===a.bodyFormat?(o=[],t.on('data',function(t){o.push(t)}),t.on('end',function(){s.data=Buffer.concat(o),a.handler(t,e,s)})):(e.writeHead(400,'Invalid bodyFormat '+a.bodyFormat+' in route '+a.method+' '+a.path.source),e.end()):(t.setEncoding('utf8'),o='',t.on('data',function(t){o+=t.toString()}),t.on('end',function(){s.data=o,a.handler(t,e,s)}))}},t.prototype.listen=function(t,e,i){var r,s=this;return t=t||this.get('port'),e=e||this.get('host'),i=i||this.get('path-prefix')||'',parseInt(t,10).toString()!==t&&(t=process.env[t]||8080),this.wiki.getTiddler('$:/plugins/tiddlywiki/tiddlyweb')&&this.wiki.getTiddler('$:/plugins/tiddlywiki/filesystem')||$tw.utils.warning('Warning: Plugins required for client-server operation (\"tiddlywiki/filesystem\" and \"tiddlywiki/tiddlyweb\") are missing from tiddlywiki.info file'),(r=this.listenOptions?this.transport.createServer(this.listenOptions,this.requestHandler.bind(this)):this.transport.createServer(this.requestHandler.bind(this))).on('listening',function(){var t=r.address();$tw.utils.log('Serving on '+s.protocol+'://'+t.address+':'+t.port+i,'brown/orange'),$tw.utils.log('(press ctrl-C to exit)','red')}),r.listen(t,e)},exports.Server=t}();","type":"application/javascript","module-type":"library"},"$:/core/modules/browser-messaging.js":{"text":"!function(){'use strict';function e(t,e){if(r=$tw.browserMessaging.iframeInfoMap[t])e(null,r);else{var i=document.createElement('iframe'),r={url:t,status:'loading',domNode:i};o($tw.browserMessaging.iframeInfoMap[t]=r),i.style.display='none',i.setAttribute('library','true'),document.body.appendChild(i),i.onload=function(){r.status='loaded',o(r),e(null,r)},i.onerror=function(){e('Cannot load iframe')};try{i.src=t}catch(t){e(t)}}}function o(t){$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),{title:'$:/temp/ServerConnection/'+t.url,text:t.status,tags:['$:/tags/ServerConnection'],url:t.url},$tw.wiki.getModificationFields()))}exports.name='browser-messaging',exports.platforms=['browser'],exports.after=['startup'],exports.synchronous=!0,exports.startup=function(){$tw.browserMessaging={iframeInfoMap:{}},$tw.rootWidget.addEventListener('tm-load-plugin-library',function(t){var i=t.paramObject||{},r=i.url;r&&e(r,function(t,e){t?alert($tw.language.getString('Error/LoadingPluginLibrary')+': '+r):e.domNode.contentWindow.postMessage({verb:'GET',url:'recipes/library/tiddlers.json',cookies:{type:'save-info',infoTitlePrefix:i.infoTitlePrefix||'$:/temp/RemoteAssetInfo/',url:r}},'*')})}),$tw.rootWidget.addEventListener('tm-unload-plugin-library',function(t){var e,t=(t.paramObject||{}).url;$tw.browserMessaging.iframeInfoMap[t]=void 0,t&&(e=t,$tw.utils.each(document.getElementsByTagName('iframe'),function(t){'true'===t.getAttribute('library')&&t.getAttribute('src')===e&&t.parentNode.removeChild(t)}),$tw.utils.each($tw.wiki.filterTiddlers('[[$:/temp/ServerConnection/'+t+']] [prefix[$:/temp/RemoteAssetInfo/'+t+'/]]'),function(t){$tw.wiki.deleteTiddler(t)}))}),$tw.rootWidget.addEventListener('tm-load-plugin-from-library',function(t){var t=t.paramObject||{},i=t.url,r=t.title;i&&r&&e(i,function(t,e){t?alert($tw.language.getString('Error/LoadingPluginLibrary')+': '+i):e.domNode.contentWindow.postMessage({verb:'GET',url:'recipes/library/tiddlers/'+encodeURIComponent(r)+'.json',cookies:{type:'save-tiddler',url:i}},'*')})}),window.addEventListener('message',function(e){var t;'GET-RESPONSE'===e.data.verb&&'2'===e.data.status.charAt(0)&&e.data.cookies&&('save-info'===e.data.cookies.type?(t=JSON.parse(e.data.body),$tw.utils.each(t,function(t){$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),t,{title:e.data.cookies.infoTitlePrefix+e.data.cookies.url+'/'+t.title,'original-title':t.title,text:'',type:'text/vnd.tiddlywiki','original-type':t.type,'plugin-type':void 0,'original-plugin-type':t['plugin-type'],'module-type':void 0,'original-module-type':t['module-type'],tags:['$:/tags/RemoteAssetInfo'],'original-tags':$tw.utils.stringifyList(t.tags||[]),'server-url':e.data.cookies.url},$tw.wiki.getModificationFields()))})):'save-tiddler'===e.data.cookies.type&&(t=JSON.parse(e.data.body),$tw.wiki.addTiddler(new $tw.Tiddler(t))))},!1)}}();","type":"application/javascript","module-type":"startup"},"$:/core/modules/startup/commands.js":{"text":"!function(){'use strict';exports.name='commands',exports.platforms=['node'],exports.after=['story'],exports.synchronous=!1,exports.startup=function(t){new $tw.Commander($tw.boot.argv,function(r){if(r)return $tw.utils.error('Error: '+r);t()},$tw.wiki,{output:process.stdout,error:process.stderr}).execute()}}();","type":"application/javascript","module-type":"startup"},"$:/core/modules/startup/favicon.js":{"text":"!function(){'use strict';exports.name='favicon',exports.platforms=['browser'],exports.after=['startup'],exports.synchronous=!0;var e='$:/favicon.ico';function i(){var t=$tw.wiki.getTiddler(e);t&&document.getElementById('faviconLink').setAttribute('href',$tw.utils.makeDataUri(t.fields.text,t.fields.type,t.fields._canonical_uri))}exports.startup=function(){i(),$tw.wiki.addEventListener('change',function(t){$tw.utils.hop(t,e)&&i()})}}();","type":"application/javascript","module-type":"startup"},"$:/core/modules/startup/info.js":{"text":"!function(){'use strict';exports.name='info',exports.before=['startup'],exports.after=['load-modules'],exports.synchronous=!0;var r='$:/temp/info-plugin';exports.startup=function(){function e(t){var i=$tw.wiki.getTiddlerData(r,{tiddlers:{}});$tw.utils.each(t,function(t){t&&t.title&&(i.tiddlers[t.title]=t)}),t={title:r,type:'application/json','plugin-type':'info',text:JSON.stringify(i,null,$tw.config.preferences.jsonSpaces)},$tw.wiki.addTiddler(new $tw.Tiddler(t))}var n=[];$tw.modules.forEachModuleOfType('info',function(t,i){i&&i.getInfoTiddlerFields&&Array.prototype.push.apply(n,i.getInfoTiddlerFields(e))}),e(n);$tw.wiki.readPluginInfo([r]);$tw.wiki.registerPluginTiddlers('info',[r]),$tw.wiki.unpackPluginTiddlers()}}();","type":"application/javascript","module-type":"startup"},"$:/core/modules/startup/load-modules.js":{"text":"!function(){'use strict';exports.name='load-modules',exports.synchronous=!0,exports.startup=function(){$tw.modules.applyMethods('utils',$tw.utils),$tw.node&&$tw.modules.applyMethods('utils-node',$tw.utils),$tw.browser&&$tw.modules.applyMethods('utils-browser',$tw.utils),$tw.modules.applyMethods('global',$tw),$tw.modules.applyMethods('config',$tw.config),$tw.Tiddler.fieldModules=$tw.modules.getModulesByTypeAsHashmap('tiddlerfield'),$tw.modules.applyMethods('tiddlermethod',$tw.Tiddler.prototype),$tw.modules.applyMethods('wikimethod',$tw.Wiki.prototype),$tw.wiki.addIndexersToWiki(),$tw.modules.applyMethods('tiddlerdeserializer',$tw.Wiki.tiddlerDeserializerModules),$tw.macros=$tw.modules.getModulesByTypeAsHashmap('macro'),$tw.wiki.initParsers(),$tw.Commander.initCommands()}}();","type":"application/javascript","module-type":"startup"},"$:/core/modules/startup/password.js":{"text":"!function(){'use strict';exports.name='password',exports.platforms=['browser'],exports.after=['startup'],exports.synchronous=!0,exports.startup=function(){$tw.rootWidget.addEventListener('tm-set-password',function(t){$tw.passwordPrompt.createPrompt({serviceName:$tw.language.getString('Encryption/PromptSetPassword'),noUserName:!0,submitText:$tw.language.getString('Encryption/SetPassword'),canCancel:!0,repeatPassword:!0,callback:function(t){return t&&$tw.crypto.setPassword(t.password),!0}})}),$tw.rootWidget.addEventListener('tm-clear-password',function(t){$tw.browser&&!confirm($tw.language.getString('Encryption/ConfirmClearPassword'))||$tw.crypto.setPassword(null)}),$tw.wiki.addEventListener('change',function(t){$tw.utils.hop(t,'$:/isEncrypted')&&$tw.crypto.updateCryptoStateTiddler()})}}();","type":"application/javascript","module-type":"startup"},"$:/core/modules/startup/plugins.js":{"text":"!function(){'use strict';exports.name='plugins',exports.after=['load-modules'],exports.synchronous=!0;var l='$:/status/RequireReloadDueToPluginChange';exports.startup=function(){$tw.wiki.addTiddler({title:l,text:'no'}),$tw.wiki.addEventListener('change',function(e){var i,t=[],n=!1;$tw.utils.each(Object.keys(e),function(e){var i=$tw.wiki.getTiddler(e);$tw.wiki.doesPluginRequireReload(e)?n=!0:i&&(i.fields['plugin-type'],'yes'===$tw.wiki.getTiddlerText('$:/config/RegisterPluginType/'+(i.fields['plugin-type']||''),'no')&&t.push(e))}),n&&$tw.wiki.addTiddler({title:l,text:'yes'}),0<t.length&&(0<(e=$tw.wiki.readPluginInfo(t)).modifiedPlugins.length||0<e.deletedPlugins.length)&&(i={},$tw.utils.each(e.deletedPlugins,function(e){e=$tw.wiki.getPluginInfo(e);e&&$tw.utils.each(Object.keys(e.tiddlers),function(e){i[e]=!0})}),$tw.utils.each(e.modifiedPlugins,function(e){e=$tw.wiki.getPluginInfo(e);e&&$tw.utils.each(Object.keys(e.tiddlers),function(e){i[e]=!1})}),$tw.wiki.registerPluginTiddlers(null,e.modifiedPlugins),$tw.wiki.unregisterPluginTiddlers(null,e.deletedPlugins),$tw.wiki.unpackPluginTiddlers(),$tw.utils.each(Object.keys(i),function(e){$tw.wiki.enqueueTiddlerEvent(e,i[e])}))})}}();","type":"application/javascript","module-type":"startup"},"$:/core/modules/startup/render.js":{"text":"!function(){'use strict';exports.name='render',exports.platforms=['browser'],exports.after=['story'],exports.synchronous=!0,exports.startup=function(){$tw.titleWidgetNode=$tw.wiki.makeTranscludeWidget('$:/core/wiki/title',{document:$tw.fakeDocument,parseAsInline:!0}),$tw.titleContainer=$tw.fakeDocument.createElement('div'),$tw.titleWidgetNode.render($tw.titleContainer,null),document.title=$tw.titleContainer.textContent,$tw.wiki.addEventListener('change',function(e){$tw.titleWidgetNode.refresh(e,$tw.titleContainer,null)&&(document.title=$tw.titleContainer.textContent)}),$tw.styleWidgetNode=$tw.wiki.makeTranscludeWidget('$:/core/ui/PageStylesheet',{document:$tw.fakeDocument}),$tw.styleContainer=$tw.fakeDocument.createElement('style'),$tw.styleWidgetNode.render($tw.styleContainer,null),$tw.styleElement=document.createElement('style'),$tw.styleElement.innerHTML=$tw.styleContainer.textContent,document.head.insertBefore($tw.styleElement,document.head.firstChild),$tw.wiki.addEventListener('change',$tw.perf.report('styleRefresh',function(e){$tw.styleWidgetNode.refresh(e,$tw.styleContainer,null)&&($tw.styleElement.innerHTML=$tw.styleContainer.textContent)})),$tw.perf.report('mainRender',function(){$tw.pageWidgetNode=$tw.wiki.makeTranscludeWidget('$:/core/ui/RootTemplate',{document:document,parentWidget:$tw.rootWidget,recursionMarker:'no'}),$tw.pageContainer=document.createElement('div'),$tw.utils.addClass($tw.pageContainer,'tc-page-container-wrapper'),document.body.insertBefore($tw.pageContainer,document.body.firstChild),$tw.pageWidgetNode.render($tw.pageContainer,null),$tw.hooks.invokeHook('th-page-refreshed')})();var e=document.querySelectorAll('.tc-remove-when-wiki-loaded');$tw.utils.each(e,function(e){e.parentNode&&e.parentNode.removeChild(e)});var i,a=Object.create(null);function d(){$tw.hooks.invokeHook('th-page-refreshing'),$tw.pageWidgetNode.refresh(a),a=Object.create(null),$tw.hooks.invokeHook('th-page-refreshed')}$tw.wiki.addEventListener('change',$tw.perf.report('mainRefresh',function(e){var t,n,o=!0;for(t in e){var r=$tw.wiki.getTiddler(t);r&&(r.hasField('draft.of')||r.hasField('throttle.refresh'))||(o=!1)}i&&clearTimeout(i),i=null,o?(n=parseInt($tw.wiki.getTiddlerText('$:/config/Drafts/TypingTimeout',''),10),isNaN(n)&&(n=400),i=setTimeout(d,n),$tw.utils.extend(a,e)):($tw.utils.extend(a,e),d())})),$tw.rootWidget.domNodes=[$tw.pageContainer],$tw.rootWidget.children=[$tw.pageWidgetNode],$tw.rootWidget.invokeActionsByTag('$:/tags/StartupAction/PostRender')}}();","type":"application/javascript","module-type":"startup"},"$:/core/modules/startup/rootwidget.js":{"text":"!function(){'use strict';exports.name='rootwidget',exports.platforms=['browser'],exports.after=['startup'],exports.before=['story'],exports.synchronous=!0,exports.startup=function(){$tw.modal=new $tw.utils.Modal($tw.wiki),$tw.rootWidget.addEventListener('tm-modal',function(t){$tw.modal.display(t.param,{variables:t.paramObject,event:t})}),$tw.rootWidget.addEventListener('tm-show-switcher',function(t){$tw.modal.display('$:/core/ui/SwitcherModal',{variables:t.paramObject,event:t})}),$tw.notifier=new $tw.utils.Notifier($tw.wiki),$tw.rootWidget.addEventListener('tm-notify',function(t){$tw.notifier.display(t.param,{variables:t.paramObject})}),$tw.rootWidget.addEventListener('tm-copy-to-clipboard',function(t){$tw.utils.copyToClipboard(t.param)}),$tw.rootWidget.addEventListener('tm-focus-selector',function(t){var e,o=t.param||'';try{e=document.querySelector(o)}catch(t){console.log('Error in selector: ',o)}e&&e.focus&&e.focus(t.paramObject)}),$tw.pageScroller=new $tw.utils.PageScroller,$tw.rootWidget.addEventListener('tm-scroll',function(t){$tw.pageScroller.handleEvent(t)});var o=$tw.utils.getFullScreenApis();o&&$tw.rootWidget.addEventListener('tm-full-screen',function(t){var e=t.event?t.event.target.ownerDocument:document;'enter'!==t.param&&('exit'===t.param||e[o._fullscreenElement])?e[o._exitFullscreen]():e.documentElement[o._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT)}),'data:'===document.location.protocol&&$tw.rootWidget.dispatchEvent({type:'tm-modal',param:'$:/language/Modals/SaveInstructions'})}}();","type":"application/javascript","module-type":"startup"},"$:/core/modules/startup.js":{"text":"!function(){'use strict';exports.name='startup',exports.after=['load-modules'],exports.synchronous=!0;var t=require('$:/core/modules/widgets/widget.js');exports.startup=function(){if($tw.browser&&($tw.browser.isIE=/msie|trident/i.test(navigator.userAgent),$tw.browser.isFirefox=!!document.mozFullScreenEnabled),$tw.platform={},$tw.browser)$tw.platform.isMac=/Mac/.test(navigator.platform),$tw.platform.isWindows=/win/i.test(navigator.platform),$tw.platform.isLinux=/Linux/i.test(navigator.platform);else switch(require('os').platform()){case'darwin':$tw.platform.isMac=!0;break;case'win32':$tw.platform.isWindows=!0;break;case'freebsd':case'linux':$tw.platform.isLinux=!0}$tw.version=$tw.utils.extractVersionInfo(),$tw.perf=new $tw.Performance('yes'===$tw.wiki.getTiddlerText('$:/config/Performance/Instrumentation','no')),$tw.rootWidget=new t.widget({type:'widget',children:[]},{wiki:$tw.wiki,document:$tw.browser?document:$tw.fakeDocument}),$tw.rootWidget.invokeActionsByTag('$:/tags/StartupAction'),$tw.browser&&$tw.rootWidget.invokeActionsByTag('$:/tags/StartupAction/Browser'),$tw.node&&$tw.rootWidget.invokeActionsByTag('$:/tags/StartupAction/Node'),$tw.language=new $tw.Language,$tw.languageSwitcher=new $tw.PluginSwitcher({wiki:$tw.wiki,pluginType:'language',controllerTitle:'$:/language',defaultPlugins:['$:/languages/en-GB'],onSwitch:function(t){$tw.browser&&((t=$tw.wiki.getTiddler(t[0]))?document.documentElement.setAttribute('dir',t.getFieldString('text-direction')||'auto'):document.documentElement.removeAttribute('dir'))}}),$tw.themeManager=new $tw.PluginSwitcher({wiki:$tw.wiki,pluginType:'theme',controllerTitle:'$:/theme',defaultPlugins:['$:/themes/tiddlywiki/snowwhite','$:/themes/tiddlywiki/vanilla']}),$tw.keyboardManager=new $tw.KeyboardManager,$tw.browser&&$tw.utils.addEventListeners(document,[{name:'keydown',handlerObject:$tw.keyboardManager,handlerMethod:'handleKeydownEvent'}]),$tw.wiki.clearTiddlerEventQueue(),$tw.syncadaptor=void 0,$tw.modules.forEachModuleOfType('syncadaptor',function(t,e){!$tw.syncadaptor&&e.adaptorClass&&($tw.syncadaptor=new e.adaptorClass({wiki:$tw.wiki}))}),$tw.syncadaptor&&($tw.syncer=new $tw.Syncer({wiki:$tw.wiki,syncadaptor:$tw.syncadaptor})),$tw.saverHandler=new $tw.SaverHandler({wiki:$tw.wiki,dirtyTracking:!$tw.syncadaptor,preloadDirty:$tw.boot.preloadDirty||[]}),$tw.browser&&($tw.popup=new $tw.utils.Popup,$tw.anim=new $tw.utils.Animator)}}();","type":"application/javascript","module-type":"startup"},"$:/core/modules/startup/story.js":{"text":"!function(){'use strict';exports.name='story',exports.after=['startup'],exports.synchronous=!0;var r='$:/StoryList',a='$:/HistoryList',s='$:/DefaultTiddlers',i='$:/config/Navigation/UpdateHistory',e='$:/config/Navigation/Permalinkview/CopyToClipboard',o='$:/config/Navigation/Permalinkview/UpdateAddressBar';function n(t){t=t||{};var i,e,o=null,n=null;1<$tw.locationHash.length&&(-1===(e=(i=$tw.locationHash.substr(1)).indexOf(':'))?o=decodeURIComponent(i.trim()):(o=decodeURIComponent(i.substr(0,e).trim()),n=decodeURIComponent(i.substr(e+1).trim()))),null===n&&(n=t.defaultToCurrentStory?(d=$tw.wiki.getTiddlerList(r),$tw.utils.stringifyList(d)):o&&''!==o?'':$tw.wiki.getTiddlerText(s));var d=$tw.wiki.filterTiddlers(n),d=$tw.hooks.invokeHook('th-opening-default-tiddlers-list',d);o&&-1===d.indexOf(o)&&d.unshift(o),$tw.wiki.addTiddler({title:r,text:'',list:d},$tw.wiki.getModificationFields());n=new $tw.Story({wiki:$tw.wiki,storyTitle:r,historyTitle:a});t.disableHistory||(o&&''!==o?(0===o.indexOf('[[')&&']]'===o.substr(-2)&&(o=o.substr(2,o.length-4)),n.addToHistory(o)):0<d.length&&n.addToHistory(d[0]))}function d(t){var i=$tw.wiki.getTiddlerList(r),e=$tw.wiki.getTiddlerData(a,[]),o='';switch(t.targetTiddler?o=t.targetTiddler:(0<e.length&&(o=e[e.length-1].title),-1===i.indexOf(o)&&(o='')),t.updateAddressBar){case'permalink':$tw.locationHash='#'+encodeURIComponent(o);break;case'permaview':$tw.locationHash='#'+encodeURIComponent(o)+':'+encodeURIComponent($tw.utils.stringifyList(i))}switch(t.copyToClipboard){case'permalink':$tw.utils.copyToClipboard($tw.utils.getLocationPath()+'#'+encodeURIComponent(o));break;case'permaview':$tw.utils.copyToClipboard($tw.utils.getLocationPath()+'#'+encodeURIComponent(o)+':'+encodeURIComponent($tw.utils.stringifyList(i)))}$tw.utils.getLocationHash()!==$tw.locationHash&&('yes'===t.updateHistory?window.location.hash=$tw.locationHash:window.location.replace(window.location.toString().split('#')[0]+$tw.locationHash))}exports.startup=function(){n({disableHistory:$tw.boot.disableStartupNavigation}),$tw.browser&&($tw.wiki.addEventListener('change',function(t){($tw.utils.hop(t,r)||$tw.utils.hop(t,a))&&d({updateAddressBar:$tw.wiki.getTiddlerText('$:/config/Navigation/UpdateAddressBar','permaview').trim(),updateHistory:$tw.wiki.getTiddlerText(i,'no').trim()})}),window.addEventListener('hashchange',function(){var t=$tw.utils.getLocationHash();t!==$tw.locationHash&&($tw.locationHash=t,n({defaultToCurrentStory:!0}))},!1),$tw.rootWidget.addEventListener('tm-browser-refresh',function(t){window.location.reload(!0)}),$tw.rootWidget.addEventListener('tm-open-external-window',function(t){var i=t.paramObject||{},e=t.param||'http://tiddlywiki.com/#WidgetMessage%3A%20tm-open-external-window',t=i.windowName,i=i.windowFeatures;window.open(e,t,i)}),$tw.rootWidget.addEventListener('tm-print',function(t){(t.event.view||window).print()}),$tw.rootWidget.addEventListener('tm-home',function(t){window.location.hash='';var i=$tw.wiki.getTiddlerText(s),i=$tw.wiki.filterTiddlers(i),i=$tw.hooks.invokeHook('th-opening-default-tiddlers-list',i);$tw.wiki.addTiddler({title:r,text:'',list:i},$tw.wiki.getModificationFields()),i[0]&&$tw.wiki.addToHistory(i[0])}),$tw.rootWidget.addEventListener('tm-permalink',function(t){d({updateAddressBar:'yes'===$tw.wiki.getTiddlerText(o,'yes').trim()?'permalink':'none',updateHistory:$tw.wiki.getTiddlerText(i,'no').trim(),targetTiddler:t.param||t.tiddlerTitle,copyToClipboard:'yes'===$tw.wiki.getTiddlerText(e,'yes').trim()?'permalink':'none'})}),$tw.rootWidget.addEventListener('tm-permaview',function(t){d({updateAddressBar:'yes'===$tw.wiki.getTiddlerText(o,'yes').trim()?'permaview':'none',updateHistory:$tw.wiki.getTiddlerText(i,'no').trim(),targetTiddler:t.param||t.tiddlerTitle,copyToClipboard:'yes'===$tw.wiki.getTiddlerText(e,'yes').trim()?'permaview':'none'})}))}}();","type":"application/javascript","module-type":"startup"},"$:/core/modules/startup/windows.js":{"text":"!function(){'use strict';exports.name='windows',exports.platforms=['browser'],exports.after=['startup'],exports.synchronous=!0,$tw.windows={},exports.startup=function(){$tw.rootWidget.addEventListener('tm-open-window',function(e){var t,n,i,d,r,o,a,s=e.param||e.tiddlerTitle,w=e.paramObject||{},l=w.windowTitle||s,e=w.template||'$:/core/templates/single.tiddler.window',c=w.width||'700',u=w.height||'600',w=$tw.utils.extend({},w,{currentTiddler:s});try{i=(n=window.open('','external-'+s,'scrollbars,width='+c+',height='+u)).document}catch(e){return}($tw.windows[s]=n).haveInitialisedWindow||(i.write('<html><head></head><body class=\\'tc-body tc-single-tiddler-window\\'></body></html>'),i.close(),i.title=l,n.addEventListener('beforeunload',function(e){delete $tw.windows[s],$tw.wiki.removeEventListener('change',t)},!1),d=$tw.wiki.makeTranscludeWidget('$:/core/ui/PageStylesheet',{document:$tw.fakeDocument,variables:w,importPageMacros:!0}),r=$tw.fakeDocument.createElement('style'),d.render(r,null),(o=i.createElement('style')).innerHTML=r.textContent,i.head.insertBefore(o,i.head.firstChild),e=$tw.wiki.parseTiddler(e),(a=$tw.wiki.makeWidget(e,{document:i,parentWidget:$tw.rootWidget,variables:w})).render(i.body,i.body.firstChild),t=function(e){d.refresh(e,r,null)&&(o.innerHTML=r.textContent),a.refresh(e)},$tw.wiki.addEventListener('change',t),$tw.utils.addEventListeners(i,[{name:'keydown',handlerObject:$tw.keyboardManager,handlerMethod:'handleKeydownEvent'}]),n.document.documentElement.addEventListener('click',$tw.popup,!0),n.haveInitialisedWindow=!0)}),$tw.addUnloadTask(function(){$tw.utils.each($tw.windows,function(e){e.close()})})}}();","type":"application/javascript","module-type":"startup"},"$:/core/modules/story.js":{"text":"!function(){'use strict';function t(t){t=t||{},this.wiki=t.wiki||$tw.wiki,this.storyTitle=t.storyTitle||'$:/StoryList',this.historyTitle=t.historyTitle||'$:/HistoryList'}t.prototype.navigateTiddler=function(t,i,e){this.addToStory(t,i),this.addToHistory(t,e)},t.prototype.getStoryList=function(){return this.wiki.getTiddlerList(this.storyTitle)||[]},t.prototype.addToStory=function(t,i,e){e=e||{};var o=this.getStoryList(),r=o.indexOf(t);if(!(0<=r)){var s=o.indexOf(i);if(0<=s)switch(e.openLinkFromInsideRiver){case'top':r=0;break;case'bottom':r=o.length;break;case'above':r=s;break;case'below':default:r=s+1}else r='bottom'===e.openLinkFromOutsideRiver?o.length:0;o.splice(r,0,t),this.saveStoryList(o)}},t.prototype.saveStoryList=function(t){var i=this.wiki.getTiddler(this.storyTitle);this.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),{title:this.storyTitle},i,{list:t},this.wiki.getModificationFields()))},t.prototype.addToHistory=function(t,i){var t=$tw.utils.isArray(t)?t:[t],e=this.wiki.getTiddlerData(this.historyTitle,[]);$tw.utils.each(t,function(t){e.push({title:t,fromPageRect:i})}),this.wiki.setTiddlerData(this.historyTitle,e,{'current-tiddler':t[t.length-1]})},t.prototype.storyCloseTiddler=function(t){},t.prototype.storyCloseAllTiddlers=function(){},t.prototype.storyCloseOtherTiddlers=function(t){},t.prototype.storyEditTiddler=function(t){},t.prototype.storyDeleteTiddler=function(t){},t.prototype.storySaveTiddler=function(t){},t.prototype.storyCancelTiddler=function(t){},t.prototype.storyNewTiddler=function(t){},exports.Story=t}();","type":"application/javascript","module-type":"global"},"$:/core/modules/storyviews/classic.js":{"text":"!function(){'use strict';function t(t){this.listWidget=t}var a='cubic-bezier(0.645, 0.045, 0.355, 1)';t.prototype.navigateTo=function(t){var i=$tw.utils.getAnimationDuration(),t=this.listWidget.findListItem(0,t.title);void 0===t||(t=this.listWidget.children[t].findFirstDomNode())instanceof Element&&(i?this.listWidget.dispatchEvent({type:'tm-scroll',target:t}):t.scrollIntoView())},t.prototype.insert=function(t){var i,o,e=$tw.utils.getAnimationDuration();!e||(i=t.findFirstDomNode())instanceof Element&&(o=window.getComputedStyle(i),t=parseInt(o.marginBottom,10),o=parseInt(o.marginTop,10),o=i.offsetHeight+o,setTimeout(function(){$tw.utils.setStyle(i,[{transition:'none'},{marginBottom:''}])},e),$tw.utils.setStyle(i,[{transition:'none'},{marginBottom:-o+'px'},{opacity:'0.0'}]),$tw.utils.forceLayout(i),$tw.utils.setStyle(i,[{transition:'opacity '+e+'ms '+a+', margin-bottom '+e+'ms '+a},{marginBottom:t+'px'},{opacity:'1.0'}]))},t.prototype.remove=function(t){var i,o,e,n,s,r=$tw.utils.getAnimationDuration();r?(o=function(){t.removeChildDomNodes()},(i=t.findFirstDomNode())instanceof Element?(e=i.offsetWidth,s=window.getComputedStyle(i),n=parseInt(s.marginBottom,10),s=parseInt(s.marginTop,10),s=i.offsetHeight+s,setTimeout(o,r),$tw.utils.setStyle(i,[{transition:'none'},{transform:'translateX(0px)'},{marginBottom:n+'px'},{opacity:'1.0'}]),$tw.utils.forceLayout(i),$tw.utils.setStyle(i,[{transition:$tw.utils.roundTripPropertyName('transform')+' '+r+'ms '+a+', opacity '+r+'ms '+a+', margin-bottom '+r+'ms '+a},{transform:'translateX(-'+e+'px)'},{marginBottom:-s+'px'},{opacity:'0.0'}])):o()):t.removeChildDomNodes()},exports.classic=t}();","type":"application/javascript","module-type":"storyview"},"$:/core/modules/storyviews/pop.js":{"text":"!function(){'use strict';function t(t){this.listWidget=t}t.prototype.navigateTo=function(t){t=this.listWidget.findListItem(0,t.title);void 0===t||(t=this.listWidget.children[t].findFirstDomNode())instanceof Element&&this.listWidget.dispatchEvent({type:'tm-scroll',target:t})},t.prototype.insert=function(t){var e=t.findFirstDomNode(),i=$tw.utils.getAnimationDuration();e instanceof Element&&(setTimeout(function(){$tw.utils.setStyle(e,[{transition:'none'},{transform:'none'}]),$tw.utils.setStyle(t.document.body,[{'overflow-x':''}])},i),$tw.utils.setStyle(t.document.body,[{'overflow-x':'hidden'}]),$tw.utils.setStyle(e,[{transition:'none'},{transform:'scale(2)'},{opacity:'0.0'}]),$tw.utils.forceLayout(e),$tw.utils.setStyle(e,[{transition:$tw.utils.roundTripPropertyName('transform')+' '+i+'ms ease-in-out, opacity '+i+'ms ease-in-out'},{transform:'scale(1)'},{opacity:'1.0'}]))},t.prototype.remove=function(t){function e(){i&&i.parentNode&&t.removeChildDomNodes()}var i=t.findFirstDomNode(),o=$tw.utils.getAnimationDuration();i instanceof Element?(setTimeout(e,o),$tw.utils.setStyle(i,[{transition:'none'},{transform:'scale(1)'},{opacity:'1.0'}]),$tw.utils.forceLayout(i),$tw.utils.setStyle(i,[{transition:$tw.utils.roundTripPropertyName('transform')+' '+o+'ms ease-in-out, opacity '+o+'ms ease-in-out'},{transform:'scale(0.1)'},{opacity:'0.0'}])):e()},exports.pop=t}();","type":"application/javascript","module-type":"storyview"},"$:/core/modules/storyviews/zoomin.js":{"text":"!function(){'use strict';function t(t){var n,s=this;this.listWidget=t,0<(t=this.listWidget.wiki.getTiddlerDataCached(this.listWidget.historyTitle,[])).length&&(n=t[t.length-1].title),$tw.utils.each(this.listWidget.children,function(t,i){var e=t.findFirstDomNode();e instanceof Element&&(n&&n!==t.parseTreeNode.itemTitle||!n&&i?e.style.display='none':s.currentTiddlerDomNode=e,$tw.utils.addClass(e,'tc-storyview-zoomin-tiddler'))})}var m='cubic-bezier(0.645, 0.045, 0.355, 1)';t.prototype.navigateTo=function(t){var i,e,n,s,r,o,l,a=$tw.utils.getAnimationDuration(),d=this.listWidget.findListItem(0,t.title);void 0===d||(i=(r=this.listWidget.children[d]).findFirstDomNode())instanceof Element&&($tw.utils.addClass(i,'tc-storyview-zoomin-tiddler'),$tw.utils.setStyle(i,[{display:'block'},{transformOrigin:'0 0'},{transform:'translateX(0px) translateY(0px) scale(1)'},{transition:'none'},{opacity:'0.0'}]),e=t.fromPageRect||{left:window.innerWidth/2-2,top:window.innerHeight/2-2,width:window.innerWidth/8,height:window.innerHeight/8},n=(function(t,i){i=i||'tc-title';t=t.findFirstDomNode();if(t&&t.querySelector)return t.querySelector('.'+i);return null}(r)||r.findFirstDomNode()).getBoundingClientRect(),s=i.getBoundingClientRect(),d=e.width/n.width,t=e.left-s.left-(n.left-s.left)*d,r=e.top-s.top-(n.top-s.top)*d,$tw.utils.setStyle(i,[{transform:'translateX('+t+'px) translateY('+r+'px) scale('+d+')'}]),$tw.utils.forceLayout(i),l=(o=this).currentTiddlerDomNode,this.currentTiddlerDomNode=i,$tw.utils.setStyle(i,[{transition:$tw.utils.roundTripPropertyName('transform')+' '+a+'ms '+m+', opacity '+a+'ms '+m},{opacity:'1.0'},{transform:'translateX(0px) translateY(0px) scale(1)'},{zIndex:'500'}]),l&&l!==i&&(d=n.width/e.width,t=n.left-s.left-(e.left-s.left)*d,r=n.top-s.top-(e.top-s.top)*d,$tw.utils.setStyle(l,[{transition:$tw.utils.roundTripPropertyName('transform')+' '+a+'ms '+m+', opacity '+a+'ms '+m},{opacity:'0.0'},{transformOrigin:'0 0'},{transform:'translateX('+t+'px) translateY('+r+'px) scale('+d+')'},{zIndex:'0'}]),setTimeout(function(){o.currentTiddlerDomNode!==l&&(l.style.display='none')},a)))},t.prototype.insert=function(t){t=t.findFirstDomNode();t instanceof Element&&($tw.utils.addClass(t,'tc-storyview-zoomin-tiddler'),$tw.utils.setStyle(t,[{display:'none'}]))},t.prototype.remove=function(t){function i(){t.removeChildDomNodes()}var e=t.findFirstDomNode(),n=$tw.utils.getAnimationDuration();if(e instanceof Element){if('block'==e.style.display){$tw.utils.addClass(e,'tc-storyview-zoomin-tiddler'),$tw.utils.setStyle(e,[{display:'block'},{transformOrigin:'50% 50%'},{transform:'translateX(0px) translateY(0px) scale(1)'},{transition:'none'},{zIndex:'0'}]);var s=t.previousSibling(),s=(s=s||t.nextSibling())&&s.findFirstDomNode();return s&&($tw.utils.addClass(s,'tc-storyview-zoomin-tiddler'),$tw.utils.setStyle(s,[{display:'block'},{transformOrigin:'50% 50%'},{transform:'translateX(0px) translateY(0px) scale(10)'},{transition:$tw.utils.roundTripPropertyName('transform')+' '+n+'ms '+m+', opacity '+n+'ms '+m},{opacity:'0'},{zIndex:'500'}]),this.currentTiddlerDomNode=s),$tw.utils.forceLayout(this.listWidget.parentDomNode),$tw.utils.setStyle(e,[{transformOrigin:'50% 50%'},{transform:'translateX(0px) translateY(0px) scale(0.1)'},{transition:$tw.utils.roundTripPropertyName('transform')+' '+n+'ms '+m+', opacity '+n+'ms '+m},{opacity:'0'},{zIndex:'0'}]),setTimeout(i,n),s&&$tw.utils.setStyle(s,[{transform:'translateX(0px) translateY(0px) scale(1)'},{opacity:'1'}]),!0}i()}else i()},exports.zoomin=t}();","type":"application/javascript","module-type":"storyview"},"$:/core/modules/syncer.js":{"text":"!function(){'use strict';function t(t){var n=this;this.wiki=t.wiki,this.syncadaptor=t.syncadaptor,this.disableUI=!!t.disableUI,this.titleIsLoggedIn=t.titleIsLoggedIn||this.titleIsLoggedIn,this.titleUserName=t.titleUserName||this.titleUserName,this.titleSyncFilter=t.titleSyncFilter||this.titleSyncFilter,this.titleSavedNotification=t.titleSavedNotification||this.titleSavedNotification,this.taskTimerInterval=t.taskTimerInterval||this.taskTimerInterval,this.throttleInterval=t.throttleInterval||parseInt(this.wiki.getTiddlerText(this.titleSyncThrottleInterval,''),10)||this.throttleInterval,this.errorRetryInterval=t.errorRetryInterval||this.errorRetryInterval,this.fallbackInterval=t.fallbackInterval||this.fallbackInterval,this.pollTimerInterval=t.pollTimerInterval||parseInt(this.wiki.getTiddlerText(this.titleSyncPollingInterval,''),10)||this.pollTimerInterval,this.logging=!('logging'in t)||t.logging,this.logger=new $tw.utils.Logger('syncer'+($tw.browser?'-browser':'')+($tw.node?'-server':'')+(this.syncadaptor.name?'-'+this.syncadaptor.name:''),{colour:'cyan',enable:this.logging,saveHistory:!0}),this.loggerConnection=new $tw.utils.Logger('syncer'+($tw.browser?'-browser':'')+($tw.node?'-server':'')+(this.syncadaptor.name?'-'+this.syncadaptor.name:'')+'-connection',{colour:'cyan',enable:this.logging}),this.syncadaptor.setLoggerSaveBuffer&&this.syncadaptor.setLoggerSaveBuffer(this.logger),this.filterFn=this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter)),this.readTiddlerInfo(),this.titlesToBeLoaded={},this.titlesHaveBeenLazyLoaded={},this.taskTimerId=null,this.pollTimerId=null,this.numTasksInProgress=0,this.wiki.addEventListener('change',function(t){var r;0<n.getSyncedTiddlers(function(r){$tw.utils.each(t,function(t,e){var i=n.wiki.tiddlerExists(e)&&n.wiki.getTiddler(e);r(i,e)})}).length?n.processTaskQueue():(r=!1,$tw.utils.each(t,function(t,e,i){t.deleted&&$tw.utils.hop(n.tiddlerInfo,e)&&(r=!0)}),r&&n.processTaskQueue())}),$tw.browser&&!this.disableUI&&($tw.addUnloadTask(function(t){var e;return n.isDirty()&&(e=$tw.language.getString('UnsavedChangesWarning'),t.returnValue=e),e}),$tw.rootWidget.addEventListener('tm-login',function(t){var e=t&&t.paramObject&&t.paramObject.username,t=t&&t.paramObject&&t.paramObject.password;e&&t?n.login(e,t,function(){}):n.handleLoginEvent()}),$tw.rootWidget.addEventListener('tm-logout',function(){n.handleLogoutEvent()}),$tw.rootWidget.addEventListener('tm-server-refresh',function(){n.handleRefreshEvent()}),$tw.rootWidget.addEventListener('tm-copy-syncer-logs-to-clipboard',function(){$tw.utils.copyToClipboard($tw.utils.getSystemInfo()+'\\n\\nLog:\\n'+n.logger.getBuffer())})),this.disableUI||'yes'===this.wiki.getTiddlerText(this.titleSyncDisableLazyLoading)||this.wiki.addEventListener('lazyLoad',function(t){n.handleLazyLoadEvent(t)}),this.getStatus(function(t,e){n.syncFromServer()})}function d(t,e){this.syncer=t,this.title=e,this.type='save'}function g(t,e){this.syncer=t,this.title=e,this.type='delete'}function c(t,e){this.syncer=t,this.title=e,this.type='load'}t.prototype.titleIsLoggedIn='$:/status/IsLoggedIn',t.prototype.titleIsAnonymous='$:/status/IsAnonymous',t.prototype.titleIsReadOnly='$:/status/IsReadOnly',t.prototype.titleUserName='$:/status/UserName',t.prototype.titleSyncFilter='$:/config/SyncFilter',t.prototype.titleSyncDisablePolling='$:/config/SyncDisablePolling',t.prototype.titleSyncPollingInterval='$:/config/SyncPollingInterval',t.prototype.titleSyncDisableLazyLoading='$:/config/SyncDisableLazyLoading',t.prototype.titleSavedNotification='$:/language/Notifications/Save/Done',t.prototype.titleSyncThrottleInterval='$:/config/SyncThrottleInterval',t.prototype.taskTimerInterval=1e3,t.prototype.throttleInterval=1e3,t.prototype.errorRetryInterval=5e3,t.prototype.fallbackInterval=1e4,t.prototype.pollTimerInterval=6e4,t.prototype.displayError=function(t,e){e===$tw.language.getString('Error/XMLHttpRequest')+': 0'?(this.loggerConnection.alert($tw.language.getString('Error/NetworkErrorAlert')),this.logger.log(t+':',e)):this.logger.alert(t+':',e)},t.prototype.getSyncedTiddlers=function(t){return this.filterFn.call(this.wiki,t)},t.prototype.getTiddlerRevision=function(t){return this.syncadaptor&&this.syncadaptor.getTiddlerRevision?this.syncadaptor.getTiddlerRevision(t):this.wiki.getTiddler(t).fields.revision},t.prototype.readTiddlerInfo=function(){this.tiddlerInfo={};var i=this,t=this.getSyncedTiddlers();$tw.utils.each(t,function(t){var e=i.wiki.getTiddler(t);e&&(i.tiddlerInfo[t]={revision:i.getTiddlerRevision(t),adaptorInfo:i.syncadaptor&&i.syncadaptor.getTiddlerInfo(e),changeCount:i.wiki.getChangeCount(t)})})},t.prototype.isDirty=function(){this.logger.log('Checking dirty status');for(var t=this.getSyncedTiddlers(),e=0;e<t.length;e++){var i=t[e],r=this.tiddlerInfo[i];if(this.wiki.tiddlerExists(i)){if(!r)return!0;if(this.wiki.getChangeCount(i)>r.changeCount)return!0}}for(t=Object.keys(this.tiddlerInfo),e=0;e<t.length;e++)if(!this.wiki.tiddlerExists(t[e]))return!0;return!1},t.prototype.updateDirtyStatus=function(){var t;$tw.browser&&!this.disableUI&&(t=this.isDirty(),$tw.utils.toggleClass(document.body,'tc-dirty',t),t||this.loggerConnection.clearAlerts())},t.prototype.storeTiddler=function(t){var e=new $tw.Tiddler(t);this.wiki.addTiddler(e),this.tiddlerInfo[t.title]={revision:this.getTiddlerRevision(t.title),adaptorInfo:this.syncadaptor.getTiddlerInfo(e),changeCount:this.wiki.getChangeCount(t.title)}},t.prototype.getStatus=function(o){var l=this;this.syncadaptor&&this.syncadaptor.getStatus?(this.wiki.addTiddler({title:this.titleIsLoggedIn,text:'no'}),this.syncadaptor.getStatus(function(t,e,i,r,n,s){t?l.logger.alert(t):(l.wiki.addTiddler({title:l.titleIsReadOnly,text:r?'yes':'no'}),l.wiki.addTiddler({title:l.titleIsAnonymous,text:n?'yes':'no'}),l.wiki.addTiddler({title:l.titleIsLoggedIn,text:e?'yes':'no'}),e&&l.wiki.addTiddler({title:l.titleUserName,text:i||''}),s&&l.wiki.addTiddler({title:l.titleSyncDisablePolling,text:'yes'})),o&&o(t,e,i)})):o(null,!0,'UNAUTHENTICATED')},t.prototype.syncFromServer=function(){function t(){g.pollTimerId&&(clearTimeout(g.pollTimerId),g.pollTimerId=null)}function d(){e&&(g.pollTimerId=setTimeout(function(){g.pollTimerId=null,g.syncFromServer.call(g)},g.pollTimerInterval))}var g=this,c='yes'===g.wiki.getTiddlerText('$:/config/SyncSystemTiddlersFromServer'),e='yes'!==g.wiki.getTiddlerText(g.titleSyncDisablePolling);this.syncadaptor&&this.syncadaptor.getUpdatedTiddlers?(this.logger.log('Retrieving updated tiddler list'),t(),this.syncadaptor.getUpdatedTiddlers(g,function(t,e){d(),t?g.displayError($tw.language.getString('Error/RetrievingSkinny'),t):e&&($tw.utils.each(e.modifications,function(t){g.titlesToBeLoaded[t]=!0}),$tw.utils.each(e.deletions,function(t){!c&&g.wiki.isSystemTiddler(t)||(delete g.tiddlerInfo[t],g.logger.log('Deleting tiddler missing from server:',t),g.wiki.deleteTiddler(t))}),(0<e.modifications.length||0<e.deletions.length)&&g.processTaskQueue())})):this.syncadaptor&&this.syncadaptor.getSkinnyTiddlers&&(this.logger.log('Retrieving skinny tiddler list'),t(),this.syncadaptor.getSkinnyTiddlers(function(t,e){if(d(),t)g.displayError($tw.language.getString('Error/RetrievingSkinny'),t);else{for(var i=Object.keys(g.tiddlerInfo),r=0;r<e.length;r++){var n=e[r],s=n.revision+'',o=g.wiki.tiddlerExists(n.title)&&g.wiki.getTiddler(n.title),l=g.tiddlerInfo[n.title],a=l?l.revision:null,l=i.indexOf(n.title);-1!==l&&i.splice(l,1),a!==s&&(o&&void 0!==o.fields.text||g.storeTiddler(n),g.titlesToBeLoaded[n.title]=!0)}$tw.utils.each(i,function(t){!c&&g.wiki.isSystemTiddler(t)||(delete g.tiddlerInfo[t],g.logger.log('Deleting tiddler missing from server:',t),g.wiki.deleteTiddler(t))}),g.processTaskQueue()}}))},t.prototype.enqueueLoadTiddler=function(t){this.titlesToBeLoaded[t]=!0,this.processTaskQueue()},t.prototype.handleLazyLoadEvent=function(t){this.syncadaptor.supportsLazyLoading&&(this.titlesHaveBeenLazyLoaded[t]||-1!==this.getSyncedTiddlers().indexOf(t)&&(this.titlesToBeLoaded[t]=!0,this.titlesHaveBeenLazyLoaded[t]=!0))},t.prototype.handleLoginEvent=function(){var r=this;this.getStatus(function(t,e,i){t||e||(r.syncadaptor&&r.syncadaptor.displayLoginPrompt?r.syncadaptor.displayLoginPrompt(r):r.displayLoginPrompt())})},t.prototype.displayLoginPrompt=function(){var i=this;$tw.passwordPrompt.createPrompt({serviceName:$tw.language.getString('LoginToTiddlySpace'),callback:function(t){return i.login(t.username,t.password,function(t,e){i.syncFromServer()}),!0}})},t.prototype.login=function(t,e,r){this.logger.log('Attempting to login as',t);var i=this;this.syncadaptor.login?this.syncadaptor.login(t,e,function(t){return t?r(t):void i.getStatus(function(t,e,i){r&&r(t,e)})}):r(null,!0)},t.prototype.handleLogoutEvent=function(){this.logger.log('Attempting to logout');var e=this;this.syncadaptor.logout&&this.syncadaptor.logout(function(t){t?e.logger.alert(t):e.getStatus()})},t.prototype.handleRefreshEvent=function(){this.syncFromServer()},t.prototype.processTaskQueue=function(){var e,i=this;this.syncadaptor.isReady&&!this.syncadaptor.isReady()||0!==this.numTasksInProgress?this.updateDirtyStatus():'object'==typeof(e=this.chooseNextTask())&&null!==e?(this.numTasksInProgress+=1,e.run(function(t){--i.numTasksInProgress,t?(i.displayError('Sync error while processing '+e.type+' of \\''+e.title+'\\'',t),i.updateDirtyStatus(),i.triggerTimeout(i.errorRetryInterval)):(i.updateDirtyStatus(),i.processTaskQueue.call(i))})):(this.updateDirtyStatus(),!0===e&&this.triggerTimeout())},t.prototype.triggerTimeout=function(t){var e=this;this.taskTimerId||(this.taskTimerId=setTimeout(function(){e.taskTimerId=null,e.processTaskQueue.call(e)},t||e.taskTimerInterval))},t.prototype.chooseNextTask=function(){for(var t=new Date-this.throttleInterval,e=null,i=this.getSyncedTiddlers(),r=0;r<i.length;r++){var n=i[r],s=this.wiki.tiddlerExists(n)&&this.wiki.getTiddler(n),o=this.tiddlerInfo[n];if(s){var l=!o||this.wiki.getChangeCount(n)>o.changeCount,a=!o||!o.timestampLastSaved||o.timestampLastSaved<t;if(l){if(a)return new d(this,n);e=!0}}}for(i=Object.keys(this.tiddlerInfo),r=0;r<i.length;r++)if(n=i[r],o=this.tiddlerInfo[n],!(s=this.wiki.tiddlerExists(n)&&this.wiki.getTiddler(n)))return new g(this,n);return(n=Object.keys(this.titlesToBeLoaded)[0])?(delete this.titlesToBeLoaded[n],new c(this,n)):e},d.prototype.run=function(r){var n=this,s=this.syncer.wiki.getChangeCount(this.title),t=this.syncer.wiki.tiddlerExists(this.title)&&this.syncer.wiki.getTiddler(this.title);this.syncer.logger.log('Dispatching \\'save\\' task:',this.title),t?this.syncer.syncadaptor.saveTiddler(t,function(t,e,i){return t?r(t):(n.syncer.tiddlerInfo[n.title]={changeCount:s,adaptorInfo:e,revision:i,timestampLastSaved:new Date},void r(null))},{tiddlerInfo:n.syncer.tiddlerInfo[n.title]}):(this.syncer.logger.log(' Not Dispatching \\'save\\' task:',this.title,'tiddler does not exist'),$tw.utils.nextTick(r(null)))},g.prototype.run=function(e){var i=this;this.syncer.logger.log('Dispatching \\'delete\\' task:',this.title),this.syncer.syncadaptor.deleteTiddler(this.title,function(t){return t?e(t):(delete i.syncer.tiddlerInfo[i.title],void e(null))},{tiddlerInfo:i.syncer.tiddlerInfo[this.title]})},c.prototype.run=function(i){var r=this;this.syncer.logger.log('Dispatching \\'load\\' task:',this.title),this.syncer.syncadaptor.loadTiddler(this.title,function(t,e){return t?i(t):(e&&r.syncer.storeTiddler(e),void i(null))})},exports.Syncer=t}();","type":"application/javascript","module-type":"global"},"$:/core/modules/tiddler.js":{"text":"!function(){'use strict';exports.hasTag=function(t){return this.fields.tags&&-1!==this.fields.tags.indexOf(t)},exports.isPlugin=function(){return'application/json'===this.fields.type&&this.hasField('plugin-type')},exports.isDraft=function(){return this.hasField('draft.of')},exports.getFieldString=function(t){var i=this.fields[t];if(null==i)return'';t=$tw.Tiddler.fieldModules[t];return t&&t.stringify?t.stringify.call(this,i):i.toString()},exports.getFieldList=function(t){t=this.fields[t];return null==t?[]:$tw.utils.parseStringArray(t)},exports.getFieldStrings=function(t){var i,e=(t=t||{}).exclude||[],s={};for(i in this.fields)$tw.utils.hop(this.fields,i)&&-1===e.indexOf(i)&&(s[i]=this.getFieldString(i));return s},exports.getFieldStringBlock=function(t){for(var i=(t=t||{}).exclude||[],e=Object.keys(this.fields).sort(),s=[],r=0;r<e.length;r++){var n=e[r];-1===i.indexOf(n)&&s.push(n+': '+this.getFieldString(n))}return s.join('\\n')},exports.getFieldDay=function(t){if(this.cache&&this.cache.day&&$tw.utils.hop(this.cache.day,t))return this.cache.day[t];var i='';return this.fields[t]&&(i=new Date($tw.utils.parseDate(this.fields[t])).setHours(0,0,0,0)),this.cache.day=this.cache.day||{},this.cache.day[t]=i}}();","type":"application/javascript","module-type":"tiddlermethod"},"$:/core/modules/upgraders/plugins.js":{"text":"!function(){'use strict';var a={'$:/themes/tiddlywiki/stickytitles':{versions:['*']},'$:/plugins/tiddlywiki/fullscreen':{versions:['*']}};exports.upgrade=function(s,e,t){var l,d={};return $tw.utils.each(e,function(e){var i=t[e];if(i&&i['plugin-type']){var r=s.doesPluginInfoRequireReload(JSON.parse(i.text))?s.getTiddlerText('$:/language/ControlPanel/Plugins/PluginWillRequireReload')+' ':'';if(d[e]=r,i.version){var n=(n=e,l||((l=s.getTiddlerData('$:/UpgradeLibrary',{})).tiddlers=l.tiddlers||{}),l.tiddlers[n]);if(n&&n['plugin-type']&&n.version)return t[e]=n,void(d[e]=r+$tw.language.getString('Import/Upgrader/Plugins/Upgraded',{variables:{incoming:i.version,upgraded:n.version}}));n=s.getTiddler(e);if(n&&n.hasField('plugin-type')&&n.hasField('version')&&$tw.utils.checkVersions(n.fields.version,i.version))return t[e]=Object.create(null),void(d[e]=$tw.language.getString('Import/Upgrader/Plugins/Suppressed/Version',{variables:{incoming:i.version,existing:n.fields.version}}))}n=a[e];n&&(-1!==n.versions.indexOf('*')||i.version&&-1!==n.versions.indexOf(i.version))&&(t[e]=Object.create(null),d[e]=$tw.language.getString('Import/Upgrader/Plugins/Suppressed/Incompatible'))}}),d}}();","type":"application/javascript","module-type":"upgrader"},"$:/core/modules/upgraders/system.js":{"text":"!function(){'use strict';var i=['$:/StoryList','$:/HistoryList'],l=['$:/temp/','$:/state/','$:/Import'],u=['$:/core/modules/'];exports.upgrade=function(g,t,a){var n={},s=!1;return $tw.utils.each(t,function(t){if(-1!==i.indexOf(t))a[t]=Object.create(null),n[t]=$tw.language.getString('Import/Upgrader/System/Suppressed');else{for(var e=0;e<l.length;e++){var r=l[e];t.substr(0,r.length)===r&&(a[t]=Object.create(null),n[t]=$tw.language.getString('Import/Upgrader/State/Suppressed'))}for(e=0;e<u.length;e++){r=u[e];t.substr(0,r.length)===r&&g.isShadowTiddler(t)&&(s=!0,n[t]=$tw.language.getString('Import/Upgrader/System/Warning'))}}}),s&&new $tw.utils.Logger('import').alert($tw.language.getString('Import/Upgrader/System/Alert')),n}}();","type":"application/javascript","module-type":"upgrader"},"$:/core/modules/upgraders/themetweaks.js":{"text":"!function(){'use strict';var h={'$:/themes/tiddlywiki/vanilla/metrics':{fontsize:'$:/themes/tiddlywiki/vanilla/metrics/fontsize',lineheight:'$:/themes/tiddlywiki/vanilla/metrics/lineheight',storyleft:'$:/themes/tiddlywiki/vanilla/metrics/storyleft',storytop:'$:/themes/tiddlywiki/vanilla/metrics/storytop',storyright:'$:/themes/tiddlywiki/vanilla/metrics/storyright',storywidth:'$:/themes/tiddlywiki/vanilla/metrics/storywidth',tiddlerwidth:'$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth'},'$:/themes/tiddlywiki/vanilla/settings':{fontfamily:'$:/themes/tiddlywiki/vanilla/settings/fontfamily'}};exports.upgrade=function(s,t,d){var n={};return $tw.utils.each(t,function(t){var i=h[t];if(i){var e,l=new $tw.Tiddler(d[t]),r=s.getTiddlerDataCached(l,{});for(e in i){var a=i[e];d[a]&&d[a].title===a||(d[a]={title:a,text:r[e]},n[a]=$tw.language.getString('Import/Upgrader/ThemeTweaks/Created',{variables:{from:t+'##'+e}}))}}}),n}}();","type":"application/javascript","module-type":"upgrader"},"$:/core/modules/utils/base64-utf8/base64-utf8.module.js":{"text":"(function(){var r,e;r=function(){return{encode:function(r){if('string'!=typeof r)return r;r=r.replace(/\\r\\n/g,'\\n');for(var e,o,t,n='',i=0;i<r.length;i++)(e=r.charCodeAt(i))<128?n+=String.fromCharCode(e):127<e&&e<2048?(n+=String.fromCharCode(e>>6|192),n+=String.fromCharCode(63&e|128)):55295<e&&e<57344&&r.length>i+1?(o=e,t=r.charCodeAt(i+1),i++,t=65536+(o-55296<<10|t-56320),n+=String.fromCharCode(t>>18|240),n+=String.fromCharCode(t>>12&63|128),n+=String.fromCharCode(t>>6&63|128),n+=String.fromCharCode(63&t|128)):(n+=String.fromCharCode(e>>12|224),n+=String.fromCharCode(e>>6&63|128),n+=String.fromCharCode(63&e|128));return n},decode:function(r){if('string'!=typeof r)return r;for(var e,o,t='',n=0;n<r.length;)(e=r.charCodeAt(n))<128?(t+=String.fromCharCode(e),n++):191<e&&e<224?(t+=String.fromCharCode((31&e)<<6|63&r.charCodeAt(n+1)),n+=2):223<e&&e<240?(t+=String.fromCharCode((15&e)<<12|(63&r.charCodeAt(n+1))<<6|63&r.charCodeAt(n+2)),n+=3):(o=(7&e)<<18|(63&r.charCodeAt(n+1))<<12|(63&r.charCodeAt(n+2))<<6|63&r.charCodeAt(n+3),t+=String.fromCharCode(55296+(o-65536>>10))+String.fromCharCode(56320+(o-65536&1023)),n+=4);return t}}},void 0!==(e=this).module&&e.module.exports?e.module.exports=r.apply(e):void 0!==e.define&&'function'===e.define&&e.define.amd?define('utf8',[],r):e.utf8=r.apply(e),function(r,e,o){if(void 0!==e.module&&e.module.exports){if(e.require)for(var t=0;t<o.length;t++)e[o[t]]=e.require(o[t]);e.module.exports=r.apply(e)}else void 0!==e.define&&'function'===e.define&&e.define.amd?define('base64',o,r):e.base64=r.apply(e)}(function(r){var h=r||this.utf8,C='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';return{encode:function(r){if(void 0===h)throw{error:'MissingMethod',message:'UTF8 Module is missing.'};if('string'!=typeof r)return r;r=h.encode(r);for(var e,o,t,n,i,d,a='',f=0;f<r.length;)t=(d=r.charCodeAt(f++))>>2,n=(3&d)<<4|(e=r.charCodeAt(f++))>>4,i=(15&e)<<2|(o=r.charCodeAt(f++))>>6,d=63&o,isNaN(e)?i=d=64:isNaN(o)&&(d=64),a+=C.charAt(t)+C.charAt(n)+C.charAt(i)+C.charAt(d);return a},decode:function(r){if(void 0===h)throw{error:'MissingMethod',message:'UTF8 Module is missing.'};if('string'!=typeof r)return r;r=r.replace(/[^A-Za-z0-9\\+\\/\\=]/g,'');for(var e,o,t,n,i,d='',a=0;a<r.length;)e=C.indexOf(r.charAt(a++))<<2|(t=C.indexOf(r.charAt(a++)))>>4,o=(15&t)<<4|(n=C.indexOf(r.charAt(a++)))>>2,t=(3&n)<<6|(i=C.indexOf(r.charAt(a++))),d+=String.fromCharCode(e),64!=n&&(d+=String.fromCharCode(o)),64!=i&&(d+=String.fromCharCode(t));return h.decode(d)}}},this,['utf8'])}).call(exports);","type":"application/javascript","module-type":"library"},"$:/core/modules/utils/crypto.js":{"text":"!function(){'use strict';exports.extractEncryptedStoreArea=function(t){var r='<pre id=\"encryptedStoreArea\" type=\"text/plain\" style=\"display:none;\">',e=t.indexOf(r);if(-1!==e){var n=t.indexOf('</pre>',e);if(-1!==n)return $tw.utils.htmlDecode(t.substring(e+r.length,n-1))}return null},exports.decryptStoreArea=function(t,r){r=$tw.crypto.decrypt(t,r);if(r){var e,n=JSON.parse(r),s=[];for(e in n)'$:/isEncrypted'!==e&&s.push(n[e]);return s}return null},exports.decryptStoreAreaInteractive=function(e,n,t){var r=$tw.utils.decryptStoreArea(e);r?n(r):$tw.passwordPrompt.createPrompt({serviceName:'Enter a password to decrypt the imported TiddlyWiki',noUserName:!0,canCancel:!0,submitText:'Decrypt',callback:function(t){if(!t)return!1;var r=$tw.utils.decryptStoreArea(e,t.password);return!!r&&($tw.config.usePasswordVault&&$tw.crypto.setPassword(t.password),n(r),!0)}})}}();","type":"application/javascript","module-type":"utils"},"$:/core/modules/utils/csv.js":{"text":"!function(){'use strict';exports.parseCsvStringWithHeader=function(r,t){var e=(t=t||{}).separator||',',n=r.split(/\\r?\\n/gm).map(function(r){return $tw.utils.trim(r)}).filter(function(r){return''!==r});if(n.length<1)return'Missing header row';for(var i=n[0].split(e),l=[],s=1;s<n.length;s++){var u=n[s].split(e),a=Object.create(null);if(u.length!==i.length)return'Malformed CSV row \\''+n[s]+'\\'';for(var o=0;o<u.length;o++)a[i[o]]=$tw.utils.trim(u[o]||'');l.push(a)}return l}}();","type":"application/javascript","module-type":"utils"},"$:/core/modules/utils/diff-match-patch/diff_match_patch.js":{"text":"(function(){function o(){this.Diff_Timeout=1,this.Diff_EditCost=4,this.Match_Threshold=.5,this.Match_Distance=1e3,this.Patch_DeleteThreshold=.5,this.Patch_Margin=4,this.Match_MaxBits=32}var x=-1;o.prototype.diff_main=function(t,e,n,i){if(void 0===i&&(i=this.Diff_Timeout<=0?Number.MAX_VALUE:(new Date).getTime()+1e3*this.Diff_Timeout),null==t||null==e)throw Error('Null input. (diff_main)');if(t==e)return t?[[0,t]]:[];void 0===n&&(n=!0);var r=n,h=this.diff_commonPrefix(t,e);n=t.substring(0,h),t=t.substring(h),e=e.substring(h),h=this.diff_commonSuffix(t,e);var s=t.substring(t.length-h);return t=t.substring(0,t.length-h),e=e.substring(0,e.length-h),t=this.diff_compute_(t,e,r,i),n&&t.unshift([0,n]),s&&t.push([0,s]),this.diff_cleanupMerge(t),t},o.prototype.diff_compute_=function(t,e,n,i){if(!t)return[[1,e]];if(!e)return[[x,t]];var r=t.length>e.length?t:e,h=t.length>e.length?e:t,s=r.indexOf(h);return-1!=s?(n=[[1,r.substring(0,s)],[0,h],[1,r.substring(s+h.length)]],t.length>e.length&&(n[0][0]=n[2][0]=x),n):1==h.length?[[x,t],[1,e]]:(r=this.diff_halfMatch_(t,e))?(e=r[1],h=r[3],t=r[4],r=this.diff_main(r[0],r[2],n,i),n=this.diff_main(e,h,n,i),r.concat([[0,t]],n)):n&&100<t.length&&100<e.length?this.diff_lineMode_(t,e,i):this.diff_bisect_(t,e,i)},o.prototype.diff_lineMode_=function(t,e,n){var i=this.diff_linesToChars_(t,e);t=i.chars1,e=i.chars2,i=i.lineArray,t=this.diff_main(t,e,!1,n),this.diff_charsToLines_(t,i),this.diff_cleanupSemantic(t),t.push([0,'']);for(var r=i=e=0,h='',s='';e<t.length;){switch(t[e][0]){case 1:r++,s+=t[e][1];break;case x:i++,h+=t[e][1];break;case 0:if(1<=i&&1<=r){for(t.splice(e-i-r,i+r),e=e-i-r,r=(i=this.diff_main(h,s,!1,n)).length-1;0<=r;r--)t.splice(e,0,i[r]);e+=i.length}i=r=0,s=h=''}e++}return t.pop(),t},o.prototype.diff_bisect_=function(t,e,n){for(var i=t.length,r=e.length,h=Math.ceil((i+r)/2),s=2*h,a=Array(s),f=Array(s),l=0;l<s;l++)a[l]=-1,f[l]=-1;a[h+1]=0;for(var g=(f[h+1]=0)!=(l=i-r)%2,o=0,c=0,u=0,p=0,d=0;d<h&&!((new Date).getTime()>n);d++){for(var _=-d+o;_<=d-c;_+=2){for(var b=h+_,m=_==-d||_!=d&&a[b-1]<a[b+1]?a[b+1]:a[b-1]+1,v=m-_;m<i&&v<r&&t.charAt(m)==e.charAt(v);)m++,v++;if(i<(a[b]=m))c+=2;else if(r<v)o+=2;else if(g&&(0<=(b=h+l-_)&&b<s&&-1!=f[b])){var M=i-f[b];if(M<=m)return this.diff_bisectSplit_(t,e,m,v,n)}}for(_=-d+u;_<=d-p;_+=2){for(b=h+_,m=(M=_==-d||_!=d&&f[b-1]<f[b+1]?f[b+1]:f[b-1]+1)-_;M<i&&m<r&&t.charAt(i-M-1)==e.charAt(r-m-1);)M++,m++;if(i<(f[b]=M))p+=2;else if(r<m)u+=2;else if(!g&&(0<=(b=h+l-_)&&b<s&&-1!=a[b]&&(v=h+(m=a[b])-b,(M=i-M)<=m)))return this.diff_bisectSplit_(t,e,m,v,n)}}return[[x,t],[1,e]]},o.prototype.diff_bisectSplit_=function(t,e,n,i,r){var h=t.substring(0,n),s=e.substring(0,i);return t=t.substring(n),e=e.substring(i),h=this.diff_main(h,s,!1,r),r=this.diff_main(t,e,!1,r),h.concat(r)},o.prototype.diff_linesToChars_=function(t,e){function n(t){for(var e='',n=0,i=-1,r=s.length;i<t.length-1;){-1==(i=t.indexOf('\\n',n))&&(i=t.length-1);var h=t.substring(n,i+1),n=i+1;(a.hasOwnProperty?a.hasOwnProperty(h):void 0!==a[h])?e+=String.fromCharCode(a[h]):(e+=String.fromCharCode(r),a[h]=r,s[r++]=h)}return e}var s=[],a={};return s[0]='',{chars1:n(t),chars2:n(e),lineArray:s}},o.prototype.diff_charsToLines_=function(t,e){for(var n=0;n<t.length;n++){for(var i=t[n][1],r=[],h=0;h<i.length;h++)r[h]=e[i.charCodeAt(h)];t[n][1]=r.join('')}},o.prototype.diff_commonPrefix=function(t,e){if(!t||!e||t.charAt(0)!=e.charAt(0))return 0;for(var n=0,i=Math.min(t.length,e.length),r=i,h=0;n<r;)t.substring(h,r)==e.substring(h,r)?h=n=r:i=r,r=Math.floor((i-n)/2+n);return r},o.prototype.diff_commonSuffix=function(t,e){if(!t||!e||t.charAt(t.length-1)!=e.charAt(e.length-1))return 0;for(var n=0,i=Math.min(t.length,e.length),r=i,h=0;n<r;)t.substring(t.length-r,t.length-h)==e.substring(e.length-r,e.length-h)?h=n=r:i=r,r=Math.floor((i-n)/2+n);return r},o.prototype.diff_commonOverlap_=function(t,e){var n=t.length,i=e.length;if(0==n||0==i)return 0;if(i<n?t=t.substring(n-i):n<i&&(e=e.substring(0,n)),n=Math.min(n,i),t==e)return n;i=0;for(var r=1;;){var h=t.substring(n-r);if(-1==(h=e.indexOf(h)))return i;r+=h,0!=h&&t.substring(n-r)!=e.substring(0,r)||(i=r,r++)}},o.prototype.diff_halfMatch_=function(t,e){function n(t,e,n){for(var i,r,h,s,a=t.substring(n,n+Math.floor(t.length/4)),f=-1,l='';-1!=(f=e.indexOf(a,f+1));){var g=c.diff_commonPrefix(t.substring(n),e.substring(f)),o=c.diff_commonSuffix(t.substring(0,n),e.substring(0,f));l.length<o+g&&(l=e.substring(f-o,f)+e.substring(f,f+g),i=t.substring(0,n-o),r=t.substring(n+g),h=e.substring(0,f-o),s=e.substring(f+g))}return 2*l.length>=t.length?[i,r,h,s,l]:null}if(this.Diff_Timeout<=0)return null;var i=t.length>e.length?t:e,r=t.length>e.length?e:t;if(i.length<4||2*r.length<i.length)return null;var h,s,c=this,a=n(i,r,Math.ceil(i.length/4)),i=n(i,r,Math.ceil(i.length/2));return a||i?(a=!i||a&&a[4].length>i[4].length?a:i,t.length>e.length?(i=a[0],r=a[1],h=a[2],s=a[3]):(h=a[0],s=a[1],i=a[2],r=a[3]),[i,r,h,s,a[4]]):null},o.prototype.diff_cleanupSemantic=function(t){for(var e=!1,n=[],i=0,r=null,h=0,s=0,a=0,f=0,l=0;h<t.length;)0==t[h][0]?(s=f,a=l,l=f=0,r=t[n[i++]=h][1]):(1==t[h][0]?f+=t[h][1].length:l+=t[h][1].length,r&&r.length<=Math.max(s,a)&&r.length<=Math.max(f,l)&&(t.splice(n[i-1],0,[x,r]),t[n[i-1]+1][0]=1,i--,h=0<--i?n[i-1]:-1,l=f=a=s=0,e=!(r=null))),h++;for(e&&this.diff_cleanupMerge(t),this.diff_cleanupSemanticLossless(t),h=1;h<t.length;)t[h-1][0]==x&&1==t[h][0]&&(e=t[h-1][1],n=t[h][1],i=this.diff_commonOverlap_(e,n),(r=this.diff_commonOverlap_(n,e))<=i?(i>=e.length/2||i>=n.length/2)&&(t.splice(h,0,[0,n.substring(0,i)]),t[h-1][1]=e.substring(0,e.length-i),t[h+1][1]=n.substring(i),h++):(r>=e.length/2||r>=n.length/2)&&(t.splice(h,0,[0,e.substring(0,r)]),t[h-1][0]=1,t[h-1][1]=n.substring(0,n.length-r),t[h+1][0]=x,t[h+1][1]=e.substring(r),h++),h++),h++},o.prototype.diff_cleanupSemanticLossless=function(t){function e(t,e){if(!t||!e)return 6;var n=t.charAt(t.length-1),i=e.charAt(0),r=n.match(o.nonAlphaNumericRegex_),h=i.match(o.nonAlphaNumericRegex_),s=r&&n.match(o.whitespaceRegex_),a=h&&i.match(o.whitespaceRegex_),n=s&&n.match(o.linebreakRegex_),i=a&&i.match(o.linebreakRegex_),t=n&&t.match(o.blanklineEndRegex_),e=i&&e.match(o.blanklineStartRegex_);return t||e?5:n||i?4:r&&!s&&a?3:s||a?2:r||h?1:0}for(var n=1;n<t.length-1;){if(0==t[n-1][0]&&0==t[n+1][0]){var i,r=t[n-1][1],h=t[n][1],s=t[n+1][1],a=this.diff_commonSuffix(r,h);a&&(i=h.substring(h.length-a),r=r.substring(0,r.length-a),h=i+h.substring(0,h.length-a),s=i+s);for(var f=s,l=e(a=r,i=h)+e(h,s);h.charAt(0)===s.charAt(0);){r+=h.charAt(0),h=h.substring(1)+s.charAt(0),s=s.substring(1);var g=e(r,h)+e(h,s);l<=g&&(l=g,a=r,i=h,f=s)}t[n-1][1]!=a&&(a?t[n-1][1]=a:(t.splice(n-1,1),n--),t[n][1]=i,f?t[n+1][1]=f:(t.splice(n+1,1),n--))}n++}},o.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/,o.whitespaceRegex_=/\\s/,o.linebreakRegex_=/[\\r\\n]/,o.blanklineEndRegex_=/\\n\\r?\\n$/,o.blanklineStartRegex_=/^\\r?\\n\\r?\\n/,o.prototype.diff_cleanupEfficiency=function(t){for(var e=!1,n=[],i=0,r=null,h=0,s=!1,a=!1,f=!1,l=!1;h<t.length;)0==t[h][0]?(r=t[h][1].length<this.Diff_EditCost&&(f||l)?(s=f,a=l,t[n[i++]=h][1]):(i=0,null),f=l=!1):(t[h][0]==x?l=!0:f=!0,r&&(s&&a&&f&&l||r.length<this.Diff_EditCost/2&&3==s+a+f+l)&&(t.splice(n[i-1],0,[x,r]),t[n[i-1]+1][0]=1,i--,r=null,s&&a?(f=l=!0,i=0):(h=0<--i?n[i-1]:-1,f=l=!1),e=!0)),h++;e&&this.diff_cleanupMerge(t)},o.prototype.diff_cleanupMerge=function(t){t.push([0,'']);for(var e,n=0,i=0,r=0,h='',s='';n<t.length;)switch(t[n][0]){case 1:r++,s+=t[n][1],n++;break;case x:i++,h+=t[n][1],n++;break;case 0:1<i+r?(0!==i&&0!==r&&(0!==(e=this.diff_commonPrefix(s,h))&&(0<n-i-r&&0==t[n-i-r-1][0]?t[n-i-r-1][1]+=s.substring(0,e):(t.splice(0,0,[0,s.substring(0,e)]),n++),s=s.substring(e),h=h.substring(e)),0!==(e=this.diff_commonSuffix(s,h))&&(t[n][1]=s.substring(s.length-e)+t[n][1],s=s.substring(0,s.length-e),h=h.substring(0,h.length-e))),0===i?t.splice(n-r,i+r,[1,s]):0===r?t.splice(n-i,i+r,[x,h]):t.splice(n-i-r,i+r,[x,h],[1,s]),n=n-i-r+(i?1:0)+(r?1:0)+1):0!==n&&0==t[n-1][0]?(t[n-1][1]+=t[n][1],t.splice(n,1)):n++,i=r=0,s=h=''}for(''===t[t.length-1][1]&&t.pop(),i=!1,n=1;n<t.length-1;)0==t[n-1][0]&&0==t[n+1][0]&&(t[n][1].substring(t[n][1].length-t[n-1][1].length)==t[n-1][1]?(t[n][1]=t[n-1][1]+t[n][1].substring(0,t[n][1].length-t[n-1][1].length),t[n+1][1]=t[n-1][1]+t[n+1][1],t.splice(n-1,1),i=!0):t[n][1].substring(0,t[n+1][1].length)==t[n+1][1]&&(t[n-1][1]+=t[n+1][1],t[n][1]=t[n][1].substring(t[n+1][1].length)+t[n+1][1],t.splice(n+1,1),i=!0)),n++;i&&this.diff_cleanupMerge(t)},o.prototype.diff_xIndex=function(t,e){for(var n=0,i=0,r=0,h=0,s=0;s<t.length&&(1!==t[s][0]&&(n+=t[s][1].length),t[s][0]!==x&&(i+=t[s][1].length),!(e<n));s++)r=n,h=i;return t.length!=s&&t[s][0]===x?h:h+(e-r)},o.prototype.diff_prettyHtml=function(t){for(var e=[],n=/&/g,i=/</g,r=/>/g,h=/\\n/g,s=0;s<t.length;s++){var a=t[s][0],f=t[s][1].replace(n,'&').replace(i,'<').replace(r,'>').replace(h,'¶<br>');switch(a){case 1:e[s]='<ins style=\"background:#e6ffe6;\">'+f+'</ins>';break;case x:e[s]='<del style=\"background:#ffe6e6;\">'+f+'</del>';break;case 0:e[s]='<span>'+f+'</span>'}}return e.join('')},o.prototype.diff_text1=function(t){for(var e=[],n=0;n<t.length;n++)1!==t[n][0]&&(e[n]=t[n][1]);return e.join('')},o.prototype.diff_text2=function(t){for(var e=[],n=0;n<t.length;n++)t[n][0]!==x&&(e[n]=t[n][1]);return e.join('')},o.prototype.diff_levenshtein=function(t){for(var e=0,n=0,i=0,r=0;r<t.length;r++){var h=t[r][1];switch(t[r][0]){case 1:n+=h.length;break;case x:i+=h.length;break;case 0:e+=Math.max(n,i),i=n=0}}return e+Math.max(n,i)},o.prototype.diff_toDelta=function(t){for(var e=[],n=0;n<t.length;n++)switch(t[n][0]){case 1:e[n]='+'+encodeURI(t[n][1]);break;case x:e[n]='-'+t[n][1].length;break;case 0:e[n]='='+t[n][1].length}return e.join('\\t').replace(/%20/g,' ')},o.prototype.diff_fromDelta=function(t,e){for(var n=[],i=0,r=0,h=e.split(/\\t/g),s=0;s<h.length;s++){var a=h[s].substring(1);switch(h[s].charAt(0)){case'+':try{n[i++]=[1,decodeURI(a)]}catch(t){throw Error('Illegal escape in diff_fromDelta: '+a)}break;case'-':case'=':var f=parseInt(a,10);if(isNaN(f)||f<0)throw Error('Invalid number in diff_fromDelta: '+a);a=t.substring(r,r+=f),'='==h[s].charAt(0)?n[i++]=[0,a]:n[i++]=[x,a];break;default:if(h[s])throw Error('Invalid diff operation in diff_fromDelta: '+h[s])}}if(r!=t.length)throw Error('Delta length ('+r+') does not equal source text length ('+t.length+').');return n},o.prototype.match_main=function(t,e,n){if(null==t||null==e||null==n)throw Error('Null input. (match_main)');return n=Math.max(0,Math.min(n,t.length)),t==e?0:t.length?t.substring(n,n+e.length)==e?n:this.match_bitap_(t,e,n):-1},o.prototype.match_bitap_=function(t,n,i){function e(t,e){t/=n.length,e=Math.abs(i-e);return h.Match_Distance?t+e/h.Match_Distance:e?1:t}if(n.length>this.Match_MaxBits)throw Error('Pattern too long for this browser.');var r=this.match_alphabet_(n),h=this,s=this.Match_Threshold;-1!=(g=t.indexOf(n,i))&&(s=Math.min(e(0,g),s),-1!=(g=t.lastIndexOf(n,i+n.length))&&(s=Math.min(e(0,g),s)));for(var a,f,l=1<<n.length-1,g=-1,o=n.length+t.length,c=0;c<n.length;c++){for(a=0,u=o;a<u;)e(c,i+u)<=s?a=u:o=u,u=Math.floor((o-a)/2+a);o=u,a=Math.max(1,i-u+1);var u,p=Math.min(i+u,t.length)+n.length;for((u=Array(p+2))[p+1]=(1<<c)-1;a<=p;p--){var d=r[t.charAt(p-1)];if(u[p]=0===c?(u[p+1]<<1|1)&d:(u[p+1]<<1|1)&d|(f[p+1]|f[p])<<1|1|f[p+1],u[p]&l&&(d=e(c,p-1))<=s){if(s=d,!(i<(g=p-1)))break;a=Math.max(1,2*i-g)}}if(e(c+1,i)>s)break;f=u}return g},o.prototype.match_alphabet_=function(t){for(var e={},n=0;n<t.length;n++)e[t.charAt(n)]=0;for(n=0;n<t.length;n++)e[t.charAt(n)]|=1<<t.length-n-1;return e},o.prototype.patch_addContext_=function(t,e){if(0!=e.length){for(var n=e.substring(t.start2,t.start2+t.length1),i=0;e.indexOf(n)!=e.lastIndexOf(n)&&n.length<this.Match_MaxBits-this.Patch_Margin-this.Patch_Margin;)i+=this.Patch_Margin,n=e.substring(t.start2-i,t.start2+t.length1+i);i+=this.Patch_Margin,(n=e.substring(t.start2-i,t.start2))&&t.diffs.unshift([0,n]),(i=e.substring(t.start2+t.length1,t.start2+t.length1+i))&&t.diffs.push([0,i]),t.start1-=n.length,t.start2-=n.length,t.length1+=n.length+i.length,t.length2+=n.length+i.length}},o.prototype.patch_make=function(t,e,n){if('string'==typeof t&&'string'==typeof e&&void 0===n){var i=t;2<(e=this.diff_main(i,e,!0)).length&&(this.diff_cleanupSemantic(e),this.diff_cleanupEfficiency(e))}else if(t&&'object'==typeof t&&void 0===e&&void 0===n)e=t,i=this.diff_text1(e);else if('string'==typeof t&&e&&'object'==typeof e&&void 0===n)i=t;else{if('string'!=typeof t||'string'!=typeof e||!n||'object'!=typeof n)throw Error('Unknown call format to patch_make.');i=t,e=n}if(0===e.length)return[];n=[],t=new o.patch_obj;for(var r=0,h=0,s=0,a=i,f=0;f<e.length;f++){var l=e[f][0],g=e[f][1];switch(r||0===l||(t.start1=h,t.start2=s),l){case 1:t.diffs[r++]=e[f],t.length2+=g.length,i=i.substring(0,s)+g+i.substring(s);break;case x:t.length1+=g.length,t.diffs[r++]=e[f],i=i.substring(0,s)+i.substring(s+g.length);break;case 0:g.length<=2*this.Patch_Margin&&r&&e.length!=f+1?(t.diffs[r++]=e[f],t.length1+=g.length,t.length2+=g.length):g.length>=2*this.Patch_Margin&&r&&(this.patch_addContext_(t,a),n.push(t),t=new o.patch_obj,r=0,a=i,h=s)}1!==l&&(h+=g.length),l!==x&&(s+=g.length)}return r&&(this.patch_addContext_(t,a),n.push(t)),n},o.prototype.patch_deepCopy=function(t){for(var e=[],n=0;n<t.length;n++){var i=t[n],r=new o.patch_obj;r.diffs=[];for(var h=0;h<i.diffs.length;h++)r.diffs[h]=i.diffs[h].slice();r.start1=i.start1,r.start2=i.start2,r.length1=i.length1,r.length2=i.length2,e[n]=r}return e},o.prototype.patch_apply=function(t,e){if(0==t.length)return[e,[]];t=this.patch_deepCopy(t);var n=this.patch_addPadding(t);e=n+e+n,this.patch_splitMax(t);for(var i=0,r=[],h=0;h<t.length;h++){var s,a,f=t[h].start2+i,l=this.diff_text1(t[h].diffs),g=-1;if(l.length>this.Match_MaxBits?-1!=(s=this.match_main(e,l.substring(0,this.Match_MaxBits),f))&&(-1==(g=this.match_main(e,l.substring(l.length-this.Match_MaxBits),f+l.length-this.Match_MaxBits))||g<=s)&&(s=-1):s=this.match_main(e,l,f),-1==s)r[h]=!1,i-=t[h].length2-t[h].length1;else if(r[h]=!0,i=s-f,l==(f=-1==g?e.substring(s,s+l.length):e.substring(s,g+this.Match_MaxBits)))e=e.substring(0,s)+this.diff_text2(t[h].diffs)+e.substring(s+l.length);else if(f=this.diff_main(l,f,!1),l.length>this.Match_MaxBits&&this.diff_levenshtein(f)/l.length>this.Patch_DeleteThreshold)r[h]=!1;else for(this.diff_cleanupSemanticLossless(f),g=l=0;g<t[h].diffs.length;g++){var o=t[h].diffs[g];0!==o[0]&&(a=this.diff_xIndex(f,l)),1===o[0]?e=e.substring(0,s+a)+o[1]+e.substring(s+a):o[0]===x&&(e=e.substring(0,s+a)+e.substring(s+this.diff_xIndex(f,l+o[1].length))),o[0]!==x&&(l+=o[1].length)}}return[e=e.substring(n.length,e.length-n.length),r]},o.prototype.patch_addPadding=function(t){for(var e=this.Patch_Margin,n='',i=1;i<=e;i++)n+=String.fromCharCode(i);for(i=0;i<t.length;i++)t[i].start1+=e,t[i].start2+=e;var r,h=(i=t[0]).diffs;return 0==h.length||0!=h[0][0]?(h.unshift([0,n]),i.start1-=e,i.start2-=e,i.length1+=e,i.length2+=e):e>h[0][1].length&&(r=e-h[0][1].length,h[0][1]=n.substring(h[0][1].length)+h[0][1],i.start1-=r,i.start2-=r,i.length1+=r,i.length2+=r),0==(h=(i=t[t.length-1]).diffs).length||0!=h[h.length-1][0]?(h.push([0,n]),i.length1+=e,i.length2+=e):e>h[h.length-1][1].length&&(r=e-h[h.length-1][1].length,h[h.length-1][1]+=n.substring(0,r),i.length1+=r,i.length2+=r),n},o.prototype.patch_splitMax=function(t){for(var e=this.Match_MaxBits,n=0;n<t.length;n++)if(!(t[n].length1<=e)){var i=t[n];t.splice(n--,1);for(var r=i.start1,h=i.start2,s='';0!==i.diffs.length;){var a=new o.patch_obj,f=!0;for(a.start1=r-s.length,a.start2=h-s.length,''!==s&&(a.length1=a.length2=s.length,a.diffs.push([0,s]));0!==i.diffs.length&&a.length1<e-this.Patch_Margin;){s=i.diffs[0][0];var l=i.diffs[0][1];1===s?(a.length2+=l.length,h+=l.length,a.diffs.push(i.diffs.shift()),f=!1):s===x&&1==a.diffs.length&&0==a.diffs[0][0]&&l.length>2*e?(a.length1+=l.length,r+=l.length,f=!1,a.diffs.push([s,l]),i.diffs.shift()):(l=l.substring(0,e-a.length1-this.Patch_Margin),a.length1+=l.length,r+=l.length,0===s?(a.length2+=l.length,h+=l.length):f=!1,a.diffs.push([s,l]),l==i.diffs[0][1]?i.diffs.shift():i.diffs[0][1]=i.diffs[0][1].substring(l.length))}s=(s=this.diff_text2(a.diffs)).substring(s.length-this.Patch_Margin),''!==(l=this.diff_text1(i.diffs).substring(0,this.Patch_Margin))&&(a.length1+=l.length,a.length2+=l.length,0!==a.diffs.length&&0===a.diffs[a.diffs.length-1][0]?a.diffs[a.diffs.length-1][1]+=l:a.diffs.push([0,l])),f||t.splice(++n,0,a)}}},o.prototype.patch_toText=function(t){for(var e=[],n=0;n<t.length;n++)e[n]=t[n];return e.join('')},o.prototype.patch_fromText=function(t){var e=[];if(!t)return e;t=t.split('\\n');for(var n=0,i=/^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$/;n<t.length;){var r=t[n].match(i);if(!r)throw Error('Invalid patch string: '+t[n]);var h=new o.patch_obj;for(e.push(h),h.start1=parseInt(r[1],10),''===r[2]?(h.start1--,h.length1=1):'0'==r[2]?h.length1=0:(h.start1--,h.length1=parseInt(r[2],10)),h.start2=parseInt(r[3],10),''===r[4]?(h.start2--,h.length2=1):'0'==r[4]?h.length2=0:(h.start2--,h.length2=parseInt(r[4],10)),n++;n<t.length;){r=t[n].charAt(0);try{var s=decodeURI(t[n].substring(1))}catch(t){throw Error('Illegal escape in patch_fromText: '+s)}if('-'==r)h.diffs.push([x,s]);else if('+'==r)h.diffs.push([1,s]);else if(' '==r)h.diffs.push([0,s]);else{if('@'==r)break;if(''!==r)throw Error('Invalid patch mode \"'+r+'\" in: '+s)}n++}}return e},(o.patch_obj=function(){this.diffs=[],this.start2=this.start1=null,this.length2=this.length1=0}).prototype.toString=function(){for(var t,e=['@@ -'+(0===this.length1?this.start1+',0':1==this.length1?this.start1+1:this.start1+1+','+this.length1)+' +'+(0===this.length2?this.start2+',0':1==this.length2?this.start2+1:this.start2+1+','+this.length2)+' @@\\n'],n=0;n<this.diffs.length;n++){switch(this.diffs[n][0]){case 1:t='+';break;case x:t='-';break;case 0:t=' '}e[n+1]=t+encodeURI(this.diffs[n][1])+'\\n'}return e.join('').replace(/%20/g,' ')},this.diff_match_patch=o,this.DIFF_DELETE=x,this.DIFF_INSERT=1,this.DIFF_EQUAL=0}).call(exports);","type":"application/javascript","module-type":"library"},"$:/core/modules/utils/dom/animations/slide.js":{"text":"!function(){'use strict';exports.slide={open:function(t,o){var i=(o=o||{}).duration||$tw.utils.getAnimationDuration(),n=window.getComputedStyle(t),a=parseInt(n.marginBottom,10),e=parseInt(n.marginTop,10),p=parseInt(n.paddingBottom,10),s=parseInt(n.paddingTop,10),n=t.offsetHeight;setTimeout(function(){$tw.utils.setStyle(t,[{transition:'none'},{marginBottom:''},{marginTop:''},{paddingBottom:''},{paddingTop:''},{height:'auto'},{opacity:''}]),o.callback&&o.callback()},i),$tw.utils.setStyle(t,[{transition:'none'},{marginTop:'0px'},{marginBottom:'0px'},{paddingTop:'0px'},{paddingBottom:'0px'},{height:'0px'},{opacity:'0'}]),$tw.utils.forceLayout(t),$tw.utils.setStyle(t,[{transition:'margin-top '+i+'ms ease-in-out, margin-bottom '+i+'ms ease-in-out, padding-top '+i+'ms ease-in-out, padding-bottom '+i+'ms ease-in-out, height '+i+'ms ease-in-out, opacity '+i+'ms ease-in-out'},{marginBottom:a+'px'},{marginTop:e+'px'},{paddingBottom:p+'px'},{paddingTop:s+'px'},{height:n+'px'},{opacity:'1'}])},close:function(t,o){var i=(o=o||{}).duration||$tw.utils.getAnimationDuration(),n=t.offsetHeight;setTimeout(function(){$tw.utils.setStyle(t,[{transition:'none'},{marginBottom:''},{marginTop:''},{paddingBottom:''},{paddingTop:''},{height:'auto'},{opacity:''}]),o.callback&&o.callback()},i),$tw.utils.setStyle(t,[{height:n+'px'},{opacity:'1'}]),$tw.utils.forceLayout(t),$tw.utils.setStyle(t,[{transition:'margin-top '+i+'ms ease-in-out, margin-bottom '+i+'ms ease-in-out, padding-top '+i+'ms ease-in-out, padding-bottom '+i+'ms ease-in-out, height '+i+'ms ease-in-out, opacity '+i+'ms ease-in-out'},{marginTop:'0px'},{marginBottom:'0px'},{paddingTop:'0px'},{paddingBottom:'0px'},{height:'0px'},{opacity:'0'}])}}}();","type":"application/javascript","module-type":"animation"},"$:/core/modules/utils/dom/animator.js":{"text":"!function(){'use strict';function t(){this.animations={},$tw.modules.applyMethods('animation',this.animations)}t.prototype.perform=function(n,t,i){var o;i=i||{},$tw.utils.each(this.animations,function(t,i){$tw.utils.hop(t,n)&&(o=t[n])}),(o=o||function(t,i){i.callback&&i.callback()})(t,i)},exports.Animator=t}();","type":"application/javascript","module-type":"utils"},"$:/core/modules/utils/dom/browser.js":{"text":"!function(){'use strict';exports.setStyle=function(e,n){if(1===e.nodeType)for(var t=0;t<n.length;t++)for(var r in n[t])e.style[$tw.utils.convertStyleNameToPropertyName(r)]=n[t][r]};var l={};exports.convertStyleNameToPropertyName=function(e){if(l[e])return l[e];var n=$tw.utils.unHyphenateCss(e);if($tw.browser&&void 0===document.body.style[n])for(var t=['O','MS','Moz','webkit'],r=0;r<t.length;r++){var i=t[r]+n.substr(0,1).toUpperCase()+n.substr(1);if(void 0!==document.body.style[i]){n=i;break}}return l[e]=n},exports.convertPropertyNameToStyleName=function(e){e=$tw.utils.hyphenateCss(e);return 0===e.indexOf('webkit')?e='-'+e:0===e.indexOf('-m-s')&&(e='-ms'+e.substr(4)),e},exports.roundTripPropertyName=function(e){return $tw.utils.convertPropertyNameToStyleName($tw.utils.convertStyleNameToPropertyName(e))};var i={},o={transitionEnd:{correspondingCssProperty:'transition',mappings:{transition:'transitionend',OTransition:'oTransitionEnd',MSTransition:'msTransitionEnd',MozTransition:'transitionend',webkitTransition:'webkitTransitionEnd'}},animationEnd:{correspondingCssProperty:'animation',mappings:{animation:'animationend',OAnimation:'oAnimationEnd',MSAnimation:'msAnimationEnd',MozAnimation:'animationend',webkitAnimation:'webkitAnimationEnd'}}};exports.convertEventName=function(e){if(i[e])return i[e];var n,t=e,r=o[e];return r&&(n=$tw.utils.convertStyleNameToPropertyName(r.correspondingCssProperty),r.mappings[n]&&(t=r.mappings[n])),i[e]=t},exports.getFullScreenApis=function(){var e=document,n=e.body,e={_requestFullscreen:void 0!==n.webkitRequestFullscreen?'webkitRequestFullscreen':void 0!==n.mozRequestFullScreen?'mozRequestFullScreen':void 0!==n.msRequestFullscreen?'msRequestFullscreen':void 0!==n.requestFullscreen?'requestFullscreen':'',_exitFullscreen:void 0!==e.webkitExitFullscreen?'webkitExitFullscreen':void 0!==e.mozCancelFullScreen?'mozCancelFullScreen':void 0!==e.msExitFullscreen?'msExitFullscreen':void 0!==e.exitFullscreen?'exitFullscreen':'',_fullscreenElement:void 0!==e.webkitFullscreenElement?'webkitFullscreenElement':void 0!==e.mozFullScreenElement?'mozFullScreenElement':void 0!==e.msFullscreenElement?'msFullscreenElement':void 0!==e.fullscreenElement?'fullscreenElement':'',_fullscreenChange:void 0!==e.webkitFullscreenElement?'webkitfullscreenchange':void 0!==e.mozFullScreenElement?'mozfullscreenchange':void 0!==e.msFullscreenElement?'MSFullscreenChange':void 0!==e.fullscreenElement?'fullscreenchange':''};return e._requestFullscreen&&e._exitFullscreen&&e._fullscreenElement&&e._fullscreenChange?e:null}}();","type":"application/javascript","module-type":"utils"},"$:/core/modules/utils/dom/csscolorparser.js":{"text":"var s={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function g(e){return(e=Math.round(e))<0?0:255<e?255:e}function r(e){return e<0?0:1<e?1:e}function d(e){return'%'===e[e.length-1]?g(parseFloat(e)/100*255):g(parseInt(e))}function h(e){return'%'===e[e.length-1]?r(parseFloat(e)/100):r(parseFloat(e))}function c(e,r,l){return l<0?l+=1:1<l&&--l,6*l<1?e+(r-e)*l*6:2*l<1?r:3*l<2?e+(r-e)*(2/3-l)*6:e}try{exports.parseCSSColor=function(e){var r=e.replace(/ /g,'').toLowerCase();if(r in s)return s[r].slice();if('#'===r[0])return 4===r.length?0<=(a=parseInt(r.substr(1),16))&&a<=4095?[(3840&a)>>4|(3840&a)>>8,240&a|(240&a)>>4,15&a|(15&a)<<4,1]:null:7===r.length&&0<=(a=parseInt(r.substr(1),16))&&a<=16777215?[(16711680&a)>>16,(65280&a)>>8,255&a,1]:null;var l=r.indexOf('('),e=r.indexOf(')');if(-1!==l&&e+1===r.length){var a=r.substr(0,l),n=r.substr(l+1,e-(l+1)).split(','),t=1;switch(a){case'rgba':if(4!==n.length)return null;t=h(n.pop());case'rgb':return 3!==n.length?null:[d(n[0]),d(n[1]),d(n[2]),t];case'hsla':if(4!==n.length)return null;t=h(n.pop());case'hsl':if(3!==n.length)return null;var i=(parseFloat(n[0])%360+360)%360/360,o=h(n[1]),u=h(n[2]),o=u<=.5?u*(o+1):u+o-u*o,u=2*u-o;return[g(255*c(u,o,i+1/3)),g(255*c(u,o,i)),g(255*c(u,o,i-1/3)),t];default:return null}}return null}}catch(e){}","type":"application/javascript","module-type":"utils"},"$:/core/modules/utils/dom.js":{"text":"!function(){'use strict';exports.domContains=function(t,e){return t.contains?t!==e&&t.contains(e):!!(16&t.compareDocumentPosition(e))},exports.removeChildren=function(t){for(;t.hasChildNodes();)t.removeChild(t.firstChild)},exports.hasClass=function(t,e){return t&&t.hasAttribute&&t.hasAttribute('class')&&-1!==t.getAttribute('class').split(' ').indexOf(e)},exports.addClass=function(t,e){var o=(t.getAttribute('class')||'').split(' ');-1===o.indexOf(e)&&(o.push(e),t.setAttribute('class',o.join(' ')))},exports.removeClass=function(t,e){var o=(t.getAttribute('class')||'').split(' '),e=o.indexOf(e);-1!==e&&(o.splice(e,1),t.setAttribute('class',o.join(' ')))},exports.toggleClass=function(t,e,o){void 0===o&&(o=!exports.hasClass(t,e)),o?exports.addClass(t,e):exports.removeClass(t,e)},exports.getScrollContainer=function(t){for(var e=t.ownerDocument;t.parentNode;)if((t=t.parentNode).scrollTop)return t;return e.body},exports.getScrollPosition=function(t){t=t||window;return'scrollX'in t?{x:t.scrollX,y:t.scrollY}:{x:t.document.documentElement.scrollLeft,y:t.document.documentElement.scrollTop}},exports.resizeTextAreaToFit=function(t,e){var o=$tw.utils.getScrollContainer(t),s=o.scrollTop;t.style.height=e;e=t.offsetHeight||parseInt(e,10);t.style.height='auto';e=Math.max(t.scrollHeight+t.offsetHeight-t.clientHeight,e);return e!==t.offsetHeight&&(t.style.height=e+'px',$tw.utils.forceLayout(t),o.scrollTop=s),e},exports.getBoundingPageRect=function(t){var e=$tw.utils.getScrollPosition(t.ownerDocument.defaultView),t=t.getBoundingClientRect();return{left:t.left+e.x,width:t.width,right:t.right+e.x,top:t.top+e.y,height:t.height,bottom:t.bottom+e.y}},exports.savePassword=function(t,e){var o=!1;try{window.localStorage.setItem('tw5-password-'+t,e),o=!0}catch(t){}o||($tw.savedPasswords=$tw.savedPasswords||Object.create(null),$tw.savedPasswords[t]=e)},exports.getPassword=function(t){var e;try{e=window.localStorage.getItem('tw5-password-'+t)}catch(t){}return void 0!==e?e:($tw.savedPasswords||Object.create(null))[t]||''},exports.forceLayout=function(t){t.offsetWidth},exports.pulseElement=function(o){o.addEventListener($tw.browser.animationEnd,function t(e){o.removeEventListener($tw.browser.animationEnd,t,!1),$tw.utils.removeClass(o,'pulse')},!1),$tw.utils.removeClass(o,'pulse'),$tw.utils.forceLayout(o),$tw.utils.addClass(o,'pulse')},exports.addEventListeners=function(o,t){$tw.utils.each(t,function(e){var t;e.handlerFunction?t=e.handlerFunction:e.handlerObject&&(t=e.handlerMethod?function(t){e.handlerObject[e.handlerMethod].call(e.handlerObject,t)}:e.handlerObject),o.addEventListener(e.name,t,!1)})},exports.getComputedStyles=function(t){for(var e,o=window.getComputedStyle(t,null),s=[],n=0;n<o.length;n++)e=o[n],s.push(e+': '+o.getPropertyValue(e)+';');return s},exports.setStyles=function(t,e){t.style.cssText=e.join('')},exports.copyStyles=function(t,e){$tw.utils.setStyles(e,$tw.utils.getComputedStyles(t))},exports.copyToClipboard=function(t,e){e=e||{};var o=document.createElement('textarea');o.style.position='fixed',o.style.top=0,o.style.left=0,o.style.fontSize='12pt',o.style.width='2em',o.style.height='2em',o.style.padding=0,o.style.border='none',o.style.outline='none',o.style.boxShadow='none',o.style.background='transparent',o.value=t,document.body.appendChild(o),o.select(),o.setSelectionRange(0,t.length);var s=!1;try{s=document.execCommand('copy')}catch(t){}e.doNotNotify||$tw.notifier.display(s?'$:/language/Notifications/CopiedToClipboard/Succeeded':'$:/language/Notifications/CopiedToClipboard/Failed'),document.body.removeChild(o)},exports.getLocationPath=function(){return window.location.toString().split('#')[0]}}();","type":"application/javascript","module-type":"utils"},"$:/core/modules/utils/dom/dragndrop.js":{"text":"!function(){'use strict';exports.makeDraggable=function(n){var l,o=n.dragImageType||'dom',s=n.domNode;'a'!==(s.tagName||'').toLowerCase()&&s.setAttribute('draggable','true'),$tw.utils.addEventListeners(s,[{name:'dragstart',handlerFunction:function(t){if(void 0===t.dataTransfer)return!1;var e=n.dragTiddlerFn&&n.dragTiddlerFn(),r=n.dragFilterFn&&n.dragFilterFn(),i=e?[e]:[],d=n.startActions;r&&i.push.apply(i,n.widget.wiki.filterTiddlers(r,n.widget));var a,e=$tw.utils.stringifyList(i);return 0<i.length&&t.target===s&&($tw.dragInProgress=s,$tw.utils.addClass(t.target,'tc-dragging'),void 0!==d&&n.widget.invokeActionString(d,n.widget,t,{actionTiddler:e}),(l=n.widget.document.createElement('div')).className='tc-tiddler-dragger',(r=n.widget.document.createElement('div')).className='tc-tiddler-dragger-inner',r.appendChild(n.widget.document.createTextNode(1===i.length?i[0]:i.length+' tiddlers')),l.appendChild(r),n.widget.document.body.appendChild(l),(d=t.dataTransfer).effectAllowed='all',d.setDragImage&&('pill'===o?d.setDragImage(l.firstChild,-16,-16):(r=s.getBoundingClientRect(),d.setDragImage(s,t.clientX-r.left,t.clientY-r.top))),d.clearData&&d.clearData(),a=[],a=1<i.length?(i.forEach(function(t){a.push(n.widget.wiki.getTiddlerAsJson(t))}),'['+a.join(',')+']'):n.widget.wiki.getTiddlerAsJson(i[0]),$tw.browser.isIE||(d.setData('text/vnd.tiddler',a),d.setData('text/plain',e),d.setData('text/x-moz-url','data:text/vnd.tiddler,'+encodeURIComponent(a))),d.setData('URL','data:text/vnd.tiddler,'+encodeURIComponent(a)),d.setData('Text',e),t.stopPropagation()),!1}},{name:'dragend',handlerFunction:function(t){var e,r,i;return t.target===s&&(r=n.dragTiddlerFn&&n.dragTiddlerFn(),e=n.dragFilterFn&&n.dragFilterFn(),i=r?[r]:[],r=n.endActions,e&&i.push.apply(i,n.widget.wiki.filterTiddlers(e,n.widget)),i=$tw.utils.stringifyList(i),$tw.dragInProgress=null,void 0!==r&&n.widget.invokeActionString(r,n.widget,t,{actionTiddler:i}),$tw.utils.removeClass(t.target,'tc-dragging'),l&&(l.parentNode.removeChild(l),l=null)),!1}}])};var l=[{type:'text/vnd.tiddler',IECompatible:!(exports.importDataTransfer=function(t,e,r){if($tw.log.IMPORT){console.log('Available data types:');for(var i=0;i<t.types.length;i++)console.log('type',t.types[i],t.getData(t.types[i]))}for(var d=0;d<l.length;d++)if(!$tw.browser.isIE||l[d].IECompatible){var a=l[d],n=t.getData(a.type);if(''!==n&&null!==n)return $tw.log.IMPORT&&console.log('Importing data type \\''+a.type+'\\', data: \\''+n+'\\''),void r(a.toTiddlerFieldsArray(n,e))}}),toTiddlerFieldsArray:i},{type:'URL',IECompatible:!0,toTiddlerFieldsArray:function(t,e){var r=decodeURIComponent(t).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);return r?i(r[1],e):[{title:e,text:t}]}},{type:'text/x-moz-url',IECompatible:!1,toTiddlerFieldsArray:function(t,e){var r=decodeURIComponent(t).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);return r?i(r[1],e):[{title:e,text:t}]}},{type:'text/html',IECompatible:!1,toTiddlerFieldsArray:function(t,e){return[{title:e,text:t}]}},{type:'text/plain',IECompatible:!1,toTiddlerFieldsArray:function(t,e){return[{title:e,text:t}]}},{type:'Text',IECompatible:!0,toTiddlerFieldsArray:function(t,e){return[{title:e,text:t}]}},{type:'text/uri-list',IECompatible:!1,toTiddlerFieldsArray:function(t,e){return[{title:e,text:t}]}}];function i(t,e){t=JSON.parse(t);return $tw.utils.isArray(t)||(t=[t]),t.forEach(function(t){t.title=t.title||e}),t}}();","type":"application/javascript","module-type":"utils"},"$:/core/modules/utils/dom/http.js":{"text":"!function(){'use strict';exports.httpRequest=function(e){function t(a){a=a.toLowerCase();var n=!1;return $tw.utils.each(i,function(t,e,s){e.toLowerCase()===a&&(n=!0)}),n}var s,a=e.type||'GET',n=e.url,i=e.headers||{accept:'application/json'},u=e.returnProp||'responseText',o=new XMLHttpRequest,r='';e.data&&('string'==typeof e.data?r=e.data:(s=[],$tw.utils.each(e.data,function(t,e){s.push(e+'='+encodeURIComponent(t))}),'GET'===a||'HEAD'===a?n+='?'+s.join('&'):r=s.join('&'))),o.onreadystatechange=function(){4===this.readyState&&(200!==this.status&&201!==this.status&&204!==this.status?e.callback($tw.language.getString('Error/XMLHttpRequest')+': '+this.status,null,this):e.callback(null,this[u],this))},o.open(a,n,!0),i&&$tw.utils.each(i,function(t,e,s){o.setRequestHeader(e,t)}),r&&!t('Content-Type')&&o.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8'),t('X-Requested-With')||o.setRequestHeader('X-Requested-With','TiddlyWiki');try{o.send(r)}catch(t){e.callback(t,null,this)}return o}}();","type":"application/javascript","module-type":"utils"},"$:/core/modules/utils/dom/keyboard.js":{"text":"!function(){'use strict';['parseKeyDescriptor','checkKeyDescriptor'].forEach(function(r){exports[r]=function(){return $tw.keyboardManager?$tw.keyboardManager[r].apply($tw.keyboardManager,Array.prototype.slice.call(arguments,0)):null}})}();","type":"application/javascript","module-type":"utils"},"$:/core/modules/utils/dom/modal.js":{"text":"!function(){'use strict';function t(t){this.wiki=t,this.modalCount=0}require('$:/core/modules/widgets/widget.js');var C=require('$:/core/modules/widgets/navigator.js');t.prototype.display=function(t,e){e=e||{},this.srcDocument=(!e.variables||'true'!==e.variables.rootwindow&&'yes'!==e.variables.rootwindow)&&e.event&&e.event.event&&e.event.event.target?e.event.event.target.ownerDocument:document,this.srcWindow=this.srcDocument.defaultView;var i,s,r,n,a,l,o,d,c,u,m,h,p,w,g,v=this,y=$tw.utils.getAnimationDuration(),f=this.wiki.getTiddler(t);f&&(g=$tw.utils.extend({currentTiddler:t,'tv-story-list':e.event&&e.event.widget?e.event.widget.getVariable('tv-story-list'):'','tv-history-list':e.event&&e.event.widget?e.event.widget.getVariable('tv-history-list'):''},e.variables),s=this.srcDocument.createElement('div'),r=this.srcDocument.createElement('div'),n=this.srcDocument.createElement('div'),a=this.srcDocument.createElement('div'),l=this.srcDocument.createElement('h3'),o=this.srcDocument.createElement('div'),p=this.srcDocument.createElement('a'),u=this.srcDocument.createElement('div'),d=this.srcDocument.createElement('span'),c=this.srcDocument.createElement('span'),this.modalCount++,this.adjustPageClass(),$tw.utils.addClass(s,'tc-modal-wrapper'),f.fields&&f.fields.class&&$tw.utils.addClass(s,f.fields.class),$tw.utils.addClass(r,'tc-modal-backdrop'),$tw.utils.addClass(n,'tc-modal'),$tw.utils.addClass(a,'tc-modal-header'),$tw.utils.addClass(o,'tc-modal-body'),$tw.utils.addClass(u,'tc-modal-footer'),s.appendChild(r),s.appendChild(n),a.appendChild(l),n.appendChild(a),n.appendChild(o),u.appendChild(d),u.appendChild(c),n.appendChild(u),u={type:'navigator',attributes:{story:{name:'story',type:'string',value:g['tv-story-list']},history:{name:'history',type:'string',value:g['tv-history-list']}},tag:'$navigator',isBlock:!0,children:[]},(u=new C.navigator(u,{wiki:this.wiki,document:this.srcDocument,parentWidget:$tw.rootWidget})).render(o,null),(m=this.wiki.makeTranscludeWidget(t,{field:'subtitle',mode:'inline',children:[{type:'text',attributes:{text:{type:'string',value:t}}}],parentWidget:u,document:this.srcDocument,variables:g,importPageMacros:!0})).render(l,null),(h=this.wiki.makeTranscludeWidget(t,{parentWidget:u,document:this.srcDocument,variables:g,importPageMacros:!0})).render(o,null),e.downloadLink&&(p.href=e.downloadLink,p.appendChild(this.srcDocument.createTextNode('Right-click to save changes')),o.appendChild(p)),f.fields&&f.fields.help&&((p=this.srcDocument.createElement('a')).setAttribute('href',f.fields.help),p.setAttribute('target','_blank'),p.setAttribute('rel','noopener noreferrer'),p.appendChild(this.srcDocument.createTextNode('Help')),d.appendChild(p),d.style.float='left'),(w=this.wiki.makeTranscludeWidget(t,{field:'footer',mode:'inline',children:[{type:'button',attributes:{message:{type:'string',value:'tm-close-tiddler'}},children:[{type:'text',attributes:{text:{type:'string',value:$tw.language.getString('Buttons/Close/Caption')}}}]}],parentWidget:u,document:this.srcDocument,variables:g,importPageMacros:!0})).render(c,null),i=function(t){m.refresh(t,a,null),h.refresh(t,o,null),w.refresh(t,c,null)},this.wiki.addEventListener('change',i),g=function(t){return v.wiki.removeEventListener('change',i),v.modalCount--,v.adjustPageClass(),$tw.utils.forceLayout(r),$tw.utils.forceLayout(n),$tw.utils.setStyle(r,[{opacity:'0'}]),$tw.utils.setStyle(n,[{transform:'translateY('+v.srcWindow.innerHeight+'px)'}]),v.srcWindow.setTimeout(function(){s.parentNode&&v.srcDocument.body.removeChild(s)},y),!1},m.addEventListener('tm-close-tiddler',g,!1),h.addEventListener('tm-close-tiddler',g,!1),w.addEventListener('tm-close-tiddler',g,!1),$tw.utils.setStyle(r,[{opacity:'0'}]),$tw.utils.setStyle(n,[{transformOrigin:'0% 0%'},{transform:'translateY('+-this.srcWindow.innerHeight+'px)'}]),this.srcDocument.body.appendChild(s),$tw.utils.setStyle(r,[{transition:'opacity '+y+'ms ease-out'}]),$tw.utils.setStyle(n,[{transition:$tw.utils.roundTripPropertyName('transform')+' '+y+'ms ease-in-out'}]),$tw.utils.forceLayout(r),$tw.utils.forceLayout(n),$tw.utils.setStyle(r,[{opacity:'0.7'}]),$tw.utils.setStyle(n,[{transform:'translateY(0px)'}]))},t.prototype.adjustPageClass=function(){var t=$tw.pageContainer?$tw.pageContainer===this.srcDocument.body.firstChild?$tw.pageContainer:this.srcDocument.body.firstChild:null;t&&$tw.utils.toggleClass(t,'tc-modal-displayed',0<this.modalCount)},exports.Modal=t}();","type":"application/javascript","module-type":"utils"},"$:/core/modules/utils/dom/notifier.js":{"text":"!function(){'use strict';function t(t){this.wiki=t}require('$:/core/modules/widgets/widget.js'),t.prototype.display=function(t,e){e=e||{};var i,n,o=this,r=document.createElement('div'),s=this.wiki.getTiddler(t),a=$tw.utils.getAnimationDuration();s&&($tw.utils.addClass(r,'tc-notification'),e=$tw.utils.extend({currentTiddler:t},e.variables),(n=this.wiki.makeTranscludeWidget(t,{parentWidget:$tw.rootWidget,document:document,variables:e,importPageMacros:!0})).render(r,null),i=function(t){n.refresh(t,r,null)},this.wiki.addEventListener('change',i),$tw.utils.setStyle(r,[{opacity:'0'},{transformOrigin:'0% 0%'},{transform:'translateY('+-window.innerHeight+'px)'},{transition:'opacity '+a+'ms ease-out, '+$tw.utils.roundTripPropertyName('transform')+' '+a+'ms ease-in-out'}]),document.body.appendChild(r),$tw.utils.forceLayout(r),$tw.utils.setStyle(r,[{opacity:'1.0'},{transform:'translateY(0px)'}]),window.setTimeout(function(){o.wiki.removeEventListener('change',i),$tw.utils.forceLayout(r),$tw.utils.setStyle(r,[{opacity:'0.0'},{transform:'translateX('+r.offsetWidth+'px)'}]),setTimeout(function(){r.parentNode&&document.body.removeChild(r)},a)},$tw.config.preferences.notificationDuration))},exports.Notifier=t}();","type":"application/javascript","module-type":"utils"},"$:/core/modules/utils/dom/popup.js":{"text":"!function(){'use strict';function t(t){t=t||{},this.rootElement=t.rootElement||document.documentElement,this.popups=[]}t.prototype.triggerPopup=function(t){var e=this.findPopup(t.title),o=-1===e;void 0!==t.force&&(o=t.force),o?this.show(t):this.cancel(e)},t.prototype.findPopup=function(t){for(var e=-1,o=0;o<this.popups.length;o++)this.popups[o].title===t&&(e=o);return e},t.prototype.handleEvent=function(t){var e;'click'===t.type&&(t=(e=this.popupInfo(t.target)).popupLevel-1,e.isHandle&&t++,this.cancel(t))},t.prototype.popupInfo=function(t){for(var e=!1,o=0,p=t;p;)$tw.utils.hasClass(p,'tc-popup-handle')&&(e=!0,o++),$tw.utils.hasClass(p,'tc-popup-keep')&&(e=!0),p=p.parentNode;for(p=t;p;)$tw.utils.hasClass(p,'tc-popup')&&o++,p=p.parentNode;return{popupLevel:o,isHandle:e}},t.prototype.show=function(t){var e=this.popupInfo(t.domNode);this.cancel(e.popupLevel),t.floating||-1!==this.findPopup(t.title)||this.popups.push({title:t.title,wiki:t.wiki,domNode:t.domNode,noStateReference:t.noStateReference});e='('+(e=t.domNodeRect||{left:t.domNode.offsetLeft,top:t.domNode.offsetTop,width:t.domNode.offsetWidth,height:t.domNode.offsetHeight}).left+','+e.top+','+e.width+','+e.height+')';t.noStateReference?t.wiki.setText(t.title,'text',void 0,e):t.wiki.setTextReference(t.title,e),0<this.popups.length&&this.rootElement.addEventListener('click',this,!0)},t.prototype.cancel=function(t){for(var e=this.popups.length,o=t=Math.max(0,Math.min(t,e));o<e;o++){var p=this.popups.pop();p.title&&(p.noStateReference?p.wiki.deleteTiddler(p.title):p.wiki.deleteTiddler($tw.utils.parseTextReference(p.title).title))}0===this.popups.length&&this.rootElement.removeEventListener('click',this,!1)},t.prototype.readPopupState=function(t){return/^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/.test(t)},exports.Popup=t}();","type":"application/javascript","module-type":"utils"},"$:/core/modules/utils/dom/scroller.js":{"text":"!function(){'use strict';function t(){this.idRequestFrame=null,this.requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},this.cancelAnimationFrame=window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.webkitCancelRequestAnimationFrame||window.mozCancelAnimationFrame||window.mozCancelRequestAnimationFrame||function(t){window.clearTimeout(t)}}t.prototype.isScrolling=function(){return null!==this.idRequestFrame},t.prototype.cancelScroll=function(t){this.idRequestFrame&&(this.cancelAnimationFrame.call(t,this.idRequestFrame),this.idRequestFrame=null)},t.prototype.handleEvent=function(t){return'tm-scroll'!==t.type||(t.paramObject&&t.paramObject.selector?this.scrollSelectorIntoView(null,t.paramObject.selector):this.scrollIntoView(t.target),!1)},t.prototype.scrollIntoView=function(r,l){var a=this,c=$tw.utils.getAnimationDuration(),s=r?r.ownerDocument.defaultView:window;this.cancelScroll(s),this.startTime=Date.now();var t=s.document.querySelector('.tc-adjust-top-of-scroll'),u=0;t&&(u=t.offsetHeight);function m(t,e,i,n){return t<50&&(t=0),t}(function t(){var e=c<=0?1:(Date.now()-a.startTime)/c;1<=e&&(a.cancelScroll(s),e=1),e=$tw.utils.slowInSlowOut(e);var i,n,o=$tw.utils.getScrollPosition(s),n=(i='function'==typeof l?l():r.getBoundingClientRect(),n=$tw.utils.getScrollPosition(s),{left:i.left+n.x,top:i.top+n.y-u,width:i.width,height:i.height}),i=m(n.left,0,o.x,s.innerWidth),n=m(n.top,0,o.y,s.innerHeight);s.scrollTo(o.x+(i-o.x)*e,o.y+(n-o.y)*e),e<1&&(a.idRequestFrame=a.requestAnimationFrame.call(s,t))})()},t.prototype.scrollSelectorIntoView=function(t,e,i){e=(t=t||document.body).querySelector(e);e&&this.scrollIntoView(e,i)},exports.PageScroller=t}();","type":"application/javascript","module-type":"utils"},"$:/core/modules/utils/edition-info.js":{"text":"!function(){'use strict';var f,s=require('fs'),c=require('path');exports.getEditionInfo=function(){if(!f){var r=$tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar);f={};for(var t=0;t<r.length;t++)for(var i=r[t],e=s.readdirSync(i),n=0;n<e.length;n++){var a,o=e[n];if(!f[o]&&$tw.utils.isDirectory(c.resolve(i,o))){try{a=JSON.parse(s.readFileSync(c.resolve(i,o,'tiddlywiki.info'),'utf8'))}catch(r){}a&&(f[o]=a)}}}return f}}();","type":"application/javascript","module-type":"utils-node"},"$:/core/modules/utils/escapecss.js":{"text":"!function(){'use strict';exports.escapeCSS=$tw.browser&&window.CSS&&window.CSS.escape?window.CSS.escape:function(e){if(0==arguments.length)throw new TypeError('`CSS.escape` requires an argument.');for(var r,t=String(e),n=t.length,o=-1,S='',a=t.charCodeAt(0);++o<n;)0!=(r=t.charCodeAt(o))?S+=1<=r&&r<=31||127==r||0==o&&48<=r&&r<=57||1==o&&48<=r&&r<=57&&45==a?'\\\\'+r.toString(16)+' ':(0!=o||1!=n||45!=r)&&(128<=r||45==r||95==r||48<=r&&r<=57||65<=r&&r<=90||97<=r&&r<=122)?t.charAt(o):'\\\\'+t.charAt(o):S+='�';return S}}();","type":"application/javascript","module-type":"utils"},"$:/core/modules/utils/fakedom.js":{"text":"!function(){'use strict';function n(t){null!==e&&(t.sequenceNumber=e++)}var e=null,t=function(){throw TypeError('Illegal constructor')};function i(t){n(this),this.textContent=t+''}function r(t,e){n(this),this.isTiddlyWikiFakeDom=!0,this.tag=t,this.attributes={},this.isRaw=!1,this.children=[],this._style={},this.namespaceURI=e||'http://www.w3.org/1999/xhtml'}Object.defineProperty(t.prototype,'ELEMENT_NODE',{get:function(){return 1}}),Object.defineProperty(t.prototype,'TEXT_NODE',{get:function(){return 3}}),i.prototype=Object.create(t.prototype),Object.defineProperty(i.prototype,'nodeType',{get:function(){return this.TEXT_NODE}}),Object.defineProperty(i.prototype,'formattedTextContent',{get:function(){return this.textContent.replace(/(\\r?\\n)/g,'')}}),r.prototype=Object.create(t.prototype),Object.defineProperty(r.prototype,'style',{get:function(){return this._style},set:function(t){var n=this;t=t||'',$tw.utils.each(t.split(';'),function(t){var e=t.split(':'),t=$tw.utils.trim(e[0]),e=$tw.utils.trim(e[1]);t&&e&&(n._style[$tw.utils.convertStyleNameToPropertyName(t)]=e)})}}),Object.defineProperty(r.prototype,'nodeType',{get:function(){return this.ELEMENT_NODE}}),r.prototype.getAttribute=function(t){if(this.isRaw)throw'Cannot getAttribute on a raw TW_Element';return this.attributes[t]},r.prototype.setAttribute=function(t,e){if(this.isRaw)throw'Cannot setAttribute on a raw TW_Element';this.attributes[t]=e+''},r.prototype.setAttributeNS=function(t,e,n){this.setAttribute(e,n)},r.prototype.removeAttribute=function(t){if(this.isRaw)throw'Cannot removeAttribute on a raw TW_Element';$tw.utils.hop(this.attributes,t)&&delete this.attributes[t]},r.prototype.appendChild=function(t){this.children.push(t),t.parentNode=this},r.prototype.insertBefore=function(t,e){var n;e&&-1!==(n=this.children.indexOf(e))?(this.children.splice(n,0,t),t.parentNode=this):this.appendChild(t)},r.prototype.removeChild=function(t){t=this.children.indexOf(t);-1!==t&&this.children.splice(t,1)},r.prototype.hasChildNodes=function(){return!!this.children.length},Object.defineProperty(r.prototype,'childNodes',{get:function(){return this.children}}),Object.defineProperty(r.prototype,'firstChild',{get:function(){return this.children[0]}}),r.prototype.addEventListener=function(t,e,n){},Object.defineProperty(r.prototype,'tagName',{get:function(){return this.tag||''}}),Object.defineProperty(r.prototype,'className',{get:function(){return this.attributes.class||''},set:function(t){this.attributes.class=t+''}}),Object.defineProperty(r.prototype,'value',{get:function(){return this.attributes.value||''},set:function(t){this.attributes.value=t+''}}),Object.defineProperty(r.prototype,'outerHTML',{get:function(){var t,e,n,i=[];if(i.push('<',this.tag),this.attributes){for(e in t=[],this.attributes)t.push(e);for(t.sort(),e=0;e<t.length;e++)void 0!==(n=this.attributes[t[e]])&&i.push(' ',t[e],'=\"',$tw.utils.htmlEncode(n),'\"')}if(this._style){var r,o=[];for(r in this._style)o.push($tw.utils.convertPropertyNameToStyleName(r)+':'+this._style[r]+';');0<o.length&&i.push(' style=\"',o.join(''),'\"')}return i.push('>'),-1===$tw.config.htmlVoidElements.indexOf(this.tag)&&(i.push(this.innerHTML),i.push('</',this.tag,'>')),i.join('')}}),Object.defineProperty(r.prototype,'innerHTML',{get:function(){if(this.isRaw)return this.rawHTML;var e=[];return $tw.utils.each(this.children,function(t){t instanceof r?e.push(t.outerHTML):t instanceof i&&e.push($tw.utils.htmlEncode(t.textContent))}),e.join('')},set:function(t){this.isRaw=!0,this.rawHTML=t,this.rawTextContent=null}}),Object.defineProperty(r.prototype,'textInnerHTML',{set:function(t){if(!this.isRaw)throw'Cannot set textInnerHTML of a non-raw TW_Element';this.rawTextContent=t}}),Object.defineProperty(r.prototype,'textContent',{get:function(){if(this.isRaw)return null===this.rawTextContent?'':this.rawTextContent;var e=[];return $tw.utils.each(this.children,function(t){e.push(t.textContent)}),e.join('')},set:function(t){this.children=[new i(t)]}}),Object.defineProperty(r.prototype,'formattedTextContent',{get:function(){if(this.isRaw)return'';var e=[],t=-1!==$tw.config.htmlBlockElements.indexOf(this.tag);return t&&e.push('\\n'),'li'===this.tag&&e.push('* '),$tw.utils.each(this.children,function(t){e.push(t.formattedTextContent)}),t&&e.push('\\n'),e.join('')}}),t={setSequenceNumber:function(t){e=t},createElementNS:function(t,e){return new r(e,t)},createElement:function(t){return new r(t)},createTextNode:function(t){return new i(t)},compatMode:'CSS1Compat',isTiddlyWikiFakeDom:!0},exports.fakeDocument=t}();","type":"application/javascript","module-type":"global"},"$:/core/modules/utils/filesystem.js":{"text":"!function(){'use strict';var o,u=require('fs'),f=require('path');exports.getSubdirectories=function(t){if(!$tw.utils.isDirectory(t))return null;var i=[];return $tw.utils.each(u.readdirSync(t),function(e){$tw.utils.isDirectory(f.resolve(t,e))&&i.push(e)}),i},exports.copyDirectory=function(e,t){if(e=f.resolve($tw.utils.removeTrailingSeparator(e)),t=f.resolve($tw.utils.removeTrailingSeparator(t)),e.substring(0,t.length)===t||t.substring(0,e.length)===e)return'Cannot copy nested directories';var i=$tw.utils.createDirectory(t);if(i)return i;var o=function(e,t){var i=u.lstatSync(e);u.existsSync(t);if(i.isFile())$tw.utils.copyFile(e,t);else if(i.isDirectory())for(var r=u.readdirSync(e),n=0;n<r.length;n++){var l=r[n],l=o(e+f.sep+l,t+f.sep+l);if(l)return l}};return o(e,t),null},exports.copyFile=function(e,t){o=o||Buffer.alloc(65536),$tw.utils.createDirectory(f.dirname(t));for(var i=u.openSync(e,'r'),r=u.openSync(t,'w'),n=1,l=0;0<n;)n=u.readSync(i,o,0,65536,l),u.writeSync(r,o,0,n),l+=n;return u.closeSync(i),u.closeSync(r),null},exports.removeTrailingSeparator=function(e){var t=e.length;return e.charAt(t-1)===f.sep&&(e=e.substr(0,t-1)),e},exports.createDirectory=function(e){e.substr(e.length-1,1)!==f.sep&&(e+=f.sep);for(var t=1,t=e.indexOf(f.sep,t);-1!==t;){var i=e.substr(0,t);if(!$tw.utils.isDirectory(i))try{u.mkdirSync(i)}catch(e){return'Error creating directory \\''+i+'\\''}t=e.indexOf(f.sep,t+1)}return null},exports.createFileDirectories=function(e){return $tw.utils.createDirectory(f.dirname(e))},exports.deleteDirectory=function(e){if(u.existsSync(e)){for(var t=u.readdirSync(e),i=0;i<t.length;i++){var r=e+f.sep+t[i];u.lstatSync(r).isDirectory()?$tw.utils.deleteDirectory(r):u.unlinkSync(r)}u.rmdirSync(e)}return null},exports.isDirectory=function(e){return u.existsSync(e)&&u.statSync(e).isDirectory()},exports.isDirectoryEmpty=function(e){if(!$tw.utils.isDirectory(e))return!1;var e=u.readdirSync(e),i=!0;return $tw.utils.each(e,function(e,t){'.'!==e.charAt(0)&&(i=!1)}),i},exports.deleteEmptyDirs=function(i,r){var n=this;u.readdir(i,function(e,t){return e?r(e):0<t.length?r(null):void u.rmdir(i,function(e){return e?r(e):void n.deleteEmptyDirs(f.dirname(i),r)})})},exports.generateTiddlerFileInfo=function(e,t){var i={};t.fileInfo&&t.fileInfo.isEditableFile&&(i.isEditableFile=!0,i.originalpath=t.fileInfo.originalpath);var r,n,l=!1;$tw.utils.each(e.getFieldStrings(),function(e,t){'text'!==t&&(l=(l=l||/[\\x00-\\x1F]/gm.test(e))||$tw.utils.trim(e)!==e)}),l?(i.type='application/json',i.hasMetaFile=!1):('text/vnd.tiddlywiki'===(r=e.fields.type||'text/vnd.tiddlywiki')?(i.type='application/x-tiddler',i.hasMetaFile=!1):(i.type=r,i.hasMetaFile=!0),t.extFilters&&(n=$tw.utils.generateTiddlerExtension(e.fields.title,{extFilters:t.extFilters,wiki:t.wiki}))&&('.tid'===n?(i.type='application/x-tiddler',i.hasMetaFile=!1):'.json'===n?(i.type='application/json',i.hasMetaFile=!1):(o=$tw.utils.getFileExtensionInfo(n),i.type=o?o.type:null,i.encoding=$tw.utils.getTypeEncoding(n),i.hasMetaFile=!0)));var o=$tw.config.contentTypeInfo[i.type]||{extension:''};return i.filepath=$tw.utils.generateTiddlerFilepath(e.fields.title,{extension:n||o.extension,directory:t.directory,pathFilters:t.pathFilters,wiki:t.wiki,fileInfo:t.fileInfo}),i},exports.generateTiddlerExtension=function(i,r){var n;return r.extFilters&&r.wiki&&$tw.utils.each(r.extFilters,function(e){var t;n||(t=r.wiki.makeTiddlerIterator([i]),0<(t=r.wiki.filterTiddlers(e,null,t)).length&&(n=t[0]))}),n},exports.generateTiddlerFilepath=function(i,r){var n,e=r.directory||'',t=r.extension||'',l=r.fileInfo&&r.fileInfo.originalpath?r.fileInfo.originalpath:'';r.pathFilters&&r.wiki&&$tw.utils.each(r.pathFilters,function(e){var t;n||(t=r.wiki.makeTiddlerIterator([i]),0<(t=r.wiki.filterTiddlers(e,null,t)).length&&(n=t[0]))}),n=(n=(n=!n&&l?(c=f.extname(l),l.substring(0,l.length-c.length)):n||(n=i).replace(/\\/|\\\\/g,'_')).replace(/^(con|prn|aux|nul|com[0-9]|lpt[0-9])$/i,'_$1_')).replace(/^ +/,function(e){return e.replace(/ /g,'_')}),/^\\.{1,2}[/\\\\]/g.test(n)||(n=n.replace(/^\\.+/g,function(e){return e.replace(/\\./g,'_')})),n=n.replace(/[\\x00-\\x1f\\x80-\\x9f]/g,'_'),n=$tw.utils.transliterate(n.replace(/<|>|~|\\:|\\\"|\\||\\?|\\*|\\^/g,'_')),32<(t=t.replace(/[\\. ]+$/,function(e){return e.replace(/[\\. ]/g,'_')})).length&&(t=t.substr(0,32)),n.substring(n.length-t.length)===t&&(n=n.substring(0,n.length-t.length)),200<n.length&&(n=n.substr(0,200)),n&&!/^_+$/g.test(n)||(n='',$tw.utils.each(i.split(''),function(e){n&&(n+='-'),n+=e.charCodeAt(0).toString()}));for(var o,a=r.fileInfo?r.fileInfo.filepath:void 0,s=0;o=f.resolve(e,n+(s?'_'+s:'')+t),(!a||a!=o)&&(s++,u.existsSync(o)););var c=$tw.hooks.invokeHook('th-make-tiddler-path',o,o);return(1==(r.fileInfo||{writeError:!1}).writeError||!(0==c.indexOf($tw.boot.wikiTiddlersPath)||0==c.indexOf(f.resolve(e))||0==c.indexOf(f.resolve($tw.boot.wikiPath))||0==c.indexOf(f.resolve($tw.boot.wikiTiddlersPath,l))))&&(c=f.resolve(e,encodeURIComponent(o))),c},exports.saveTiddlerToFile=function(t,i,r){var e;$tw.utils.createDirectory(f.dirname(i.filepath)),i.hasMetaFile?(e=$tw.config.contentTypeInfo[t.fields.type||'text/plain']||{encoding:'utf8'},u.writeFile(i.filepath,t.fields.text||'',e.encoding,function(e){return e?r(e):void u.writeFile(i.filepath+'.meta',t.getFieldStringBlock({exclude:['text','bag']}),'utf8',function(e){return e?r(e):r(null,i)})})):'application/x-tiddler'===i.type?u.writeFile(i.filepath,t.getFieldStringBlock({exclude:['text','bag']})+(t.fields.text?'\\n\\n'+t.fields.text:''),'utf8',function(e){return e?r(e):r(null,i)}):u.writeFile(i.filepath,JSON.stringify([t.getFieldStrings({exclude:['bag']})],null,$tw.config.preferences.jsonSpaces),'utf8',function(e){return e?r(e):r(null,i)})},exports.saveTiddlerToFileSync=function(e,t){var i;return $tw.utils.createDirectory(f.dirname(t.filepath)),t.hasMetaFile?(i=$tw.config.contentTypeInfo[e.fields.type||'text/plain']||{encoding:'utf8'},u.writeFileSync(t.filepath,e.fields.text||'',i.encoding),u.writeFileSync(t.filepath+'.meta',e.getFieldStringBlock({exclude:['text','bag']}),'utf8')):'application/x-tiddler'===t.type?u.writeFileSync(t.filepath,e.getFieldStringBlock({exclude:['text','bag']})+(e.fields.text?'\\n\\n'+e.fields.text:''),'utf8'):u.writeFileSync(t.filepath,JSON.stringify([e.getFieldStrings({exclude:['bag']})],null,$tw.config.preferences.jsonSpaces),'utf8'),t},exports.deleteTiddlerFile=function(t,i){if(!t.filepath||!u.existsSync(t.filepath))return $tw.syncer.displayError('Server deleteTiddlerFile task failed for filepath: '+t.filepath),i(null,t);u.unlink(t.filepath,function(e){return e?i(e):t.hasMetaFile&&u.existsSync(t.filepath+'.meta')?void u.unlink(t.filepath+'.meta',function(e){return e?i(e):$tw.utils.deleteEmptyDirs(f.dirname(t.filepath),function(e){return e?i(e):i(null,t)})}):$tw.utils.deleteEmptyDirs(f.dirname(t.filepath),function(e){return e?i(e):i(null,t)})})},exports.cleanupTiddlerFiles=function(e,t){var i=e.adaptorInfo||{},r=e.bootInfo||{},n=e.title||'undefined';if(!i.filepath||!r.filepath||i.filepath===r.filepath)return t(null,r);$tw.utils.deleteTiddlerFile(i,function(e){return e?'EPERM'!=e.code&&'EACCES'!=e.code||'unlink'!=e.syscall?t(e):($tw.syncer.displayError('Server desynchronized. Error cleaning up previous file for tiddler: \"'+n+'\"',e),t(null,r)):t(null,r)})}}();","type":"application/javascript","module-type":"utils-node"},"$:/core/modules/utils/linkedlist.js":{"text":"function t(){this.clear()}function i(t,e){var i,r=t.prev[e],n=t.next[e],o=r,s=n;if('object'==typeof n&&(s=n[0],o=r[0]),t.first===e)t.first=s;else{if(void 0===o)return;'object'==typeof t.next[o]?void 0===s?t.next[o].pop():(i=t.next[o].indexOf(e),t.next[o][i]=s):t.next[o]=s}void 0!==s?'object'==typeof t.prev[s]?void 0===o?t.prev[s].shift():(i=t.prev[s].indexOf(e),t.prev[s][i]=o):t.prev[s]=o:t.last=o,'object'==typeof n?(n.shift(),r.shift()):(t.next[e]=void 0,t.prev[e]=void 0),--t.length}function r(t,e){void 0===t.first?t.first=e:(t.first===e||void 0!==t.prev[e]?('string'==typeof t.next[e]?(t.next[e]=[t.next[e]],t.prev[e]=[t.prev[e]]):void 0===t.next[e]&&(t.next[e]=[],t.prev[e]=[t.prev[e]]),t.prev[e].push(t.last)):t.prev[e]=t.last,'object'==typeof t.next[t.last]?t.next[t.last].push(e):t.next[t.last]=e),t.last=e,t.length+=1}function n(t){if('string'!=typeof t)throw'Linked List only accepts string values, not '+t}t.prototype.clear=function(){this.next=Object.create(null),this.prev=Object.create(null),this.first=void 0,this.last=void 0,this.length=0},t.prototype.remove=function(t){if($tw.utils.isArray(t)){for(var e=0;e<t.length;e++)n(t[e]);for(e=0;e<t.length;e++)i(this,t[e])}else n(t),i(this,t)},t.prototype.push=function(){var t=arguments;$tw.utils.isArray(t[0])&&(t=t[0]);for(var e=0;e<t.length;e++)n(t[e]);for(e=0;e<t.length;e++)r(this,t[e]);return this.length},t.prototype.pushTop=function(t){if($tw.utils.isArray(t)){for(var e=0;e<t.length;e++)n(t[e]);for(e=0;e<t.length;e++)i(this,t[e]);for(e=0;e<t.length;e++)r(this,t[e])}else n(t),i(this,t),r(this,t)},t.prototype.each=function(t){for(var e=Object.create(null),i=this.first;void 0!==i;){t(i);var r,n=this.next[i],i='object'==typeof n?(r=e[i]||0,e[i]=r+1,n[r]):n}},t.prototype.toArray=function(){var e=new Array(this.length),i=0;return this.each(function(t){e[i++]=t}),e},exports.LinkedList=t;","module-type":"utils","type":"application/javascript"},"$:/core/modules/utils/logger.js":{"text":"!function(){'use strict';var s='$:/tags/Alert';function e(e,t){t=t||{},this.componentName=e||'',this.colour=t.colour||'white',this.enable=!('enable'in t)||t.enable,this.save=!('save'in t)||t.save,this.saveLimit=t.saveLimit||102400,(this.saveBufferLogger=this).buffer='',this.alertCount=0}e.prototype.setSaveBuffer=function(e){this.saveBufferLogger=e},e.prototype.log=function(){var i=this;if(this.enable&&(this.saveBufferLogger.save&&(this.saveBufferLogger.buffer+=$tw.utils.formatDateString(new Date,'YYYY MM DD 0hh:0mm:0ss.0XXX')+':',$tw.utils.each(Array.prototype.slice.call(arguments,0),function(e,t){i.saveBufferLogger.buffer+=' '+e}),this.saveBufferLogger.buffer+='\\n',this.saveBufferLogger.buffer=this.saveBufferLogger.buffer.slice(-this.saveBufferLogger.saveLimit)),void 0!==console&&void 0!==console.log))return Function.apply.call(console.log,console,[$tw.utils.terminalColour(this.colour),this.componentName+':'].concat(Array.prototype.slice.call(arguments,0)).concat($tw.utils.terminalColour()))},e.prototype.getBuffer=function(){return this.saveBufferLogger.buffer},e.prototype.table=function(e){(console.table||console.log)(e)},e.prototype.alert=function(){var t,e,i,o,r;this.enable&&(t=Array.prototype.join.call(arguments,' '),$tw.browser?(e=$tw.wiki.getTiddlersWithTag(s),r=this,$tw.utils.each(e,function(e){e=$tw.wiki.getTiddler(e);e.fields.text===t&&e.fields.component===r.componentName&&e.fields.modified&&(!i||e.fields.modified<i.modified)&&(i=$tw.utils.extend({},e.fields))}),i?o=i.count||1:(i={title:$tw.wiki.generateNewTitle('$:/temp/alerts/alert',{prefix:''}),text:t,tags:[s],component:this.componentName},o=0,this.alertCount+=1),i.modified=new Date,1<++o?i.count=o:i.count=void 0,$tw.wiki.addTiddler(new $tw.Tiddler(i)),this.log.apply(this,Array.prototype.slice.call(arguments,0))):console.error('\u001b[1;33m'+t+'\u001b[0m'))},e.prototype.clearAlerts=function(){var t=this;$tw.browser&&0<this.alertCount&&($tw.utils.each($tw.wiki.getTiddlersWithTag(s),function(e){$tw.wiki.getTiddler(e).fields.component===t.componentName&&$tw.wiki.deleteTiddler(e)}),this.alertCount=0)},exports.Logger=e}();","type":"application/javascript","module-type":"utils"},"$:/core/modules/utils/parsetree.js":{"text":"!function(){'use strict';exports.addAttributeToParseTreeNode=function(t,e,s){t.attributes=t.attributes||{},t.attributes[e]={type:'string',value:s}},exports.getAttributeValueFromParseTreeNode=function(t,e,s){return t.attributes&&t.attributes[e]&&void 0!==t.attributes[e].value?t.attributes[e].value:s},exports.addClassToParseTreeNode=function(t,e){var s=[];t.attributes=t.attributes||{},t.attributes.class=t.attributes.class||{type:'string',value:''},'string'===t.attributes.class.type&&(''!==t.attributes.class.value&&(s=t.attributes.class.value.split(' ')),''!==e&&$tw.utils.pushTop(s,e.split(' ')),t.attributes.class.value=s.join(' '))},exports.addStyleToParseTreeNode=function(t,e,s){t.attributes=t.attributes||{},t.attributes.style=t.attributes.style||{type:'string',value:''},'string'===t.attributes.style.type&&(t.attributes.style.value+=e+':'+s+';')},exports.findParseTreeNode=function(t,e){for(var s=0;s<t.length;s++)if(t[s].type===e.type&&t[s].tag===e.tag)return t[s]},exports.getParseTreeText=function e(t){var s=[];if($tw.utils.isArray(t))$tw.utils.each(t,function(t){s.push(e(t))});else if('text'===t.type&&s.push(t.text),t.children)return e(t.children);return s.join('')}}();","type":"application/javascript","module-type":"utils"},"$:/core/modules/utils/performance.js":{"text":"!function(){'use strict';function e(e){this.enabled=!!e,this.measures={},this.logger=new $tw.utils.Logger('performance'),this.showGreeting()}e.prototype.showGreeting=function(){$tw.browser&&this.logger.log('Execute $tw.perf.log(); to see filter execution timings')},e.prototype.report=function(i,s){var r=this;return this.enabled?function(){var e=$tw.utils.timer(),t=s.apply(this,arguments);return r.logger.log(i+': '+$tw.utils.timer(e).toFixed(2)+'ms'),t}:s},e.prototype.log=function(){var i=this,s=0,e=Object.keys(this.measures).sort(function(e,t){return i.measures[e].time>i.measures[t].time?-1:i.measures[e].time<i.measures[t].time?1:0});$tw.utils.each(e,function(e){s+=i.measures[e].time});var r=[];$tw.utils.each(e,function(e){var t=i.measures[e];r.push({name:e,invocations:t.invocations,avgTime:t.time/t.invocations,totalTime:t.time,percentTime:t.time/s*100})}),i.logger.table(r)},e.prototype.measure=function(i,s){var r=this;return this.enabled?function(){var e=$tw.utils.timer(),t=s.apply(this,arguments);return i in r.measures||(r.measures[i]={time:0,invocations:0}),r.measures[i].time+=$tw.utils.timer(e),r.measures[i].invocations++,t}:s},exports.Performance=e}();","type":"application/javascript","module-type":"global"},"$:/core/modules/utils/pluginmaker.js":{"text":"!function(){'use strict';exports.repackPlugin=function(i,t,e){t=t||[],e=e||[];var r,l=$tw.wiki.getTiddler(i);if(!l)throw'No such tiddler as '+i;try{r=JSON.parse(l.fields.text)}catch(t){throw'Cannot parse plugin tiddler '+i+'\\n'+$tw.language.getString('Error/Caption')+': '+t}var s=Object.keys(r.tiddlers);$tw.utils.pushTop(s,t);for(var d=s.length-1;0<=d;d--)-1!==e.indexOf(s[d])&&s.splice(d,1);var n={};$tw.utils.each(s,function(t){var e=$tw.wiki.getTiddler(t),r={};$tw.utils.each(e.fields,function(t,i){r[i]=e.getFieldString(i)}),n[t]=r});var a=$tw.utils.parseVersion(l.getFieldString('version')||'0.0.0')||{major:'0',minor:'0',patch:'0'};a.patch++;t=a.major+'.'+a.minor+'.'+a.patch;return a.prerelease&&(t+='-'+a.prerelease),a.build&&(t+='+'+a.build),$tw.wiki.addTiddler(new $tw.Tiddler(l,{text:JSON.stringify({tiddlers:n},null,4),version:t})),$tw.utils.each(s,function(t){$tw.wiki.tiddlerExists(t)&&$tw.wiki.deleteTiddler(t)}),$tw.rootWidget.dispatchEvent({type:'tm-auto-save-wiki'}),'Plugin '+i+' successfully saved'}}();","type":"application/javascript","module-type":"utils"},"$:/core/modules/utils/transliterate.js":{"text":"!function(){'use strict';exports.transliterationPairs={'Á':'A','Ă':'A','Ắ':'A','Ặ':'A','Ằ':'A','Ẳ':'A','Ẵ':'A','Ǎ':'A','Â':'A','Ấ':'A','Ậ':'A','Ầ':'A','Ẩ':'A','Ẫ':'A','Ä':'A','Ǟ':'A','Ȧ':'A','Ǡ':'A','Ạ':'A','Ȁ':'A','À':'A','Ả':'A','Ȃ':'A','Ā':'A','Ą':'A','Å':'A','Ǻ':'A','Ḁ':'A','Ⱥ':'A','Ã':'A','Ꜳ':'AA','Æ':'AE','Ǽ':'AE','Ǣ':'AE','Ꜵ':'AO','Ꜷ':'AU','Ꜹ':'AV','Ꜻ':'AV','Ꜽ':'AY','Ḃ':'B','Ḅ':'B','Ɓ':'B','Ḇ':'B','Ƀ':'B','Ƃ':'B','Ć':'C','Č':'C','Ç':'C','Ḉ':'C','Ĉ':'C','Ċ':'C','Ƈ':'C','Ȼ':'C','Ď':'D','Ḑ':'D','Ḓ':'D','Ḋ':'D','Ḍ':'D','Ɗ':'D','Ḏ':'D','Dz':'D','Dž':'D','Đ':'D','Ƌ':'D','DZ':'DZ','DŽ':'DZ','É':'E','Ĕ':'E','Ě':'E','Ȩ':'E','Ḝ':'E','Ê':'E','Ế':'E','Ệ':'E','Ề':'E','Ể':'E','Ễ':'E','Ḙ':'E','Ë':'E','Ė':'E','Ẹ':'E','Ȅ':'E','È':'E','Ẻ':'E','Ȇ':'E','Ē':'E','Ḗ':'E','Ḕ':'E','Ę':'E','Ɇ':'E','Ẽ':'E','Ḛ':'E','Ꝫ':'ET','Ḟ':'F','Ƒ':'F','Ǵ':'G','Ğ':'G','Ǧ':'G','Ģ':'G','Ĝ':'G','Ġ':'G','Ɠ':'G','Ḡ':'G','Ǥ':'G','Ḫ':'H','Ȟ':'H','Ḩ':'H','Ĥ':'H','Ⱨ':'H','Ḧ':'H','Ḣ':'H','Ḥ':'H','Ħ':'H','Í':'I','Ĭ':'I','Ǐ':'I','Î':'I','Ï':'I','Ḯ':'I','İ':'I','Ị':'I','Ȉ':'I','Ì':'I','Ỉ':'I','Ȋ':'I','Ī':'I','Į':'I','Ɨ':'I','Ĩ':'I','Ḭ':'I','Ꝺ':'D','Ꝼ':'F','Ᵹ':'G','Ꞃ':'R','Ꞅ':'S','Ꞇ':'T','Ꝭ':'IS','Ĵ':'J','Ɉ':'J','Ḱ':'K','Ǩ':'K','Ķ':'K','Ⱪ':'K','Ꝃ':'K','Ḳ':'K','Ƙ':'K','Ḵ':'K','Ꝁ':'K','Ꝅ':'K','Ĺ':'L','Ƚ':'L','Ľ':'L','Ļ':'L','Ḽ':'L','Ḷ':'L','Ḹ':'L','Ⱡ':'L','Ꝉ':'L','Ḻ':'L','Ŀ':'L','Ɫ':'L','Lj':'L','Ł':'L','LJ':'LJ','Ḿ':'M','Ṁ':'M','Ṃ':'M','Ɱ':'M','Ń':'N','Ň':'N','Ņ':'N','Ṋ':'N','Ṅ':'N','Ṇ':'N','Ǹ':'N','Ɲ':'N','Ṉ':'N','Ƞ':'N','Nj':'N','Ñ':'N','NJ':'NJ','Ó':'O','Ŏ':'O','Ǒ':'O','Ô':'O','Ố':'O','Ộ':'O','Ồ':'O','Ổ':'O','Ỗ':'O','Ö':'O','Ȫ':'O','Ȯ':'O','Ȱ':'O','Ọ':'O','Ő':'O','Ȍ':'O','Ò':'O','Ỏ':'O','Ơ':'O','Ớ':'O','Ợ':'O','Ờ':'O','Ở':'O','Ỡ':'O','Ȏ':'O','Ꝋ':'O','Ꝍ':'O','Ō':'O','Ṓ':'O','Ṑ':'O','Ɵ':'O','Ǫ':'O','Ǭ':'O','Ø':'O','Ǿ':'O','Õ':'O','Ṍ':'O','Ṏ':'O','Ȭ':'O','Ƣ':'OI','Ꝏ':'OO','Ɛ':'E','Ɔ':'O','Ȣ':'OU','Ṕ':'P','Ṗ':'P','Ꝓ':'P','Ƥ':'P','Ꝕ':'P','Ᵽ':'P','Ꝑ':'P','Ꝙ':'Q','Ꝗ':'Q','Ŕ':'R','Ř':'R','Ŗ':'R','Ṙ':'R','Ṛ':'R','Ṝ':'R','Ȑ':'R','Ȓ':'R','Ṟ':'R','Ɍ':'R','Ɽ':'R','Ꜿ':'C','Ǝ':'E','Ś':'S','Ṥ':'S','Š':'S','Ṧ':'S','Ş':'S','Ŝ':'S','Ș':'S','Ṡ':'S','Ṣ':'S','Ṩ':'S','Ť':'T','Ţ':'T','Ṱ':'T','Ț':'T','Ⱦ':'T','Ṫ':'T','Ṭ':'T','Ƭ':'T','Ṯ':'T','Ʈ':'T','Ŧ':'T','Ɐ':'A','Ꞁ':'L','Ɯ':'M','Ʌ':'V','Ꜩ':'TZ','Ú':'U','Ŭ':'U','Ǔ':'U','Û':'U','Ṷ':'U','Ü':'U','Ǘ':'U','Ǚ':'U','Ǜ':'U','Ǖ':'U','Ṳ':'U','Ụ':'U','Ű':'U','Ȕ':'U','Ù':'U','Ủ':'U','Ư':'U','Ứ':'U','Ự':'U','Ừ':'U','Ử':'U','Ữ':'U','Ȗ':'U','Ū':'U','Ṻ':'U','Ų':'U','Ů':'U','Ũ':'U','Ṹ':'U','Ṵ':'U','Ꝟ':'V','Ṿ':'V','Ʋ':'V','Ṽ':'V','Ꝡ':'VY','Ẃ':'W','Ŵ':'W','Ẅ':'W','Ẇ':'W','Ẉ':'W','Ẁ':'W','Ⱳ':'W','Ẍ':'X','Ẋ':'X','Ý':'Y','Ŷ':'Y','Ÿ':'Y','Ẏ':'Y','Ỵ':'Y','Ỳ':'Y','Ƴ':'Y','Ỷ':'Y','Ỿ':'Y','Ȳ':'Y','Ɏ':'Y','Ỹ':'Y','Ź':'Z','Ž':'Z','Ẑ':'Z','Ⱬ':'Z','Ż':'Z','Ẓ':'Z','Ȥ':'Z','Ẕ':'Z','Ƶ':'Z','IJ':'IJ','Œ':'OE','ᴀ':'A','ᴁ':'AE','ʙ':'B','ᴃ':'B','ᴄ':'C','ᴅ':'D','ᴇ':'E','ꜰ':'F','ɢ':'G','ʛ':'G','ʜ':'H','ɪ':'I','ʁ':'R','ᴊ':'J','ᴋ':'K','ʟ':'L','ᴌ':'L','ᴍ':'M','ɴ':'N','ᴏ':'O','ɶ':'OE','ᴐ':'O','ᴕ':'OU','ᴘ':'P','ʀ':'R','ᴎ':'N','ᴙ':'R','ꜱ':'S','ᴛ':'T','ⱻ':'E','ᴚ':'R','ᴜ':'U','ᴠ':'V','ᴡ':'W','ʏ':'Y','ᴢ':'Z','á':'a','ă':'a','ắ':'a','ặ':'a','ằ':'a','ẳ':'a','ẵ':'a','ǎ':'a','â':'a','ấ':'a','ậ':'a','ầ':'a','ẩ':'a','ẫ':'a','ä':'a','ǟ':'a','ȧ':'a','ǡ':'a','ạ':'a','ȁ':'a','à':'a','ả':'a','ȃ':'a','ā':'a','ą':'a','ᶏ':'a','ẚ':'a','å':'a','ǻ':'a','ḁ':'a','ⱥ':'a','ã':'a','ꜳ':'aa','æ':'ae','ǽ':'ae','ǣ':'ae','ꜵ':'ao','ꜷ':'au','ꜹ':'av','ꜻ':'av','ꜽ':'ay','ḃ':'b','ḅ':'b','ɓ':'b','ḇ':'b','ᵬ':'b','ᶀ':'b','ƀ':'b','ƃ':'b','ɵ':'o','ć':'c','č':'c','ç':'c','ḉ':'c','ĉ':'c','ɕ':'c','ċ':'c','ƈ':'c','ȼ':'c','ď':'d','ḑ':'d','ḓ':'d','ȡ':'d','ḋ':'d','ḍ':'d','ɗ':'d','ᶑ':'d','ḏ':'d','ᵭ':'d','ᶁ':'d','đ':'d','ɖ':'d','ƌ':'d','ı':'i','ȷ':'j','ɟ':'j','ʄ':'j','dz':'dz','dž':'dz','é':'e','ĕ':'e','ě':'e','ȩ':'e','ḝ':'e','ê':'e','ế':'e','ệ':'e','ề':'e','ể':'e','ễ':'e','ḙ':'e','ë':'e','ė':'e','ẹ':'e','ȅ':'e','è':'e','ẻ':'e','ȇ':'e','ē':'e','ḗ':'e','ḕ':'e','ⱸ':'e','ę':'e','ᶒ':'e','ɇ':'e','ẽ':'e','ḛ':'e','ꝫ':'et','ḟ':'f','ƒ':'f','ᵮ':'f','ᶂ':'f','ǵ':'g','ğ':'g','ǧ':'g','ģ':'g','ĝ':'g','ġ':'g','ɠ':'g','ḡ':'g','ᶃ':'g','ǥ':'g','ḫ':'h','ȟ':'h','ḩ':'h','ĥ':'h','ⱨ':'h','ḧ':'h','ḣ':'h','ḥ':'h','ɦ':'h','ẖ':'h','ħ':'h','ƕ':'hv','í':'i','ĭ':'i','ǐ':'i','î':'i','ï':'i','ḯ':'i','ị':'i','ȉ':'i','ì':'i','ỉ':'i','ȋ':'i','ī':'i','į':'i','ᶖ':'i','ɨ':'i','ĩ':'i','ḭ':'i','ꝺ':'d','ꝼ':'f','ᵹ':'g','ꞃ':'r','ꞅ':'s','ꞇ':'t','ꝭ':'is','ǰ':'j','ĵ':'j','ʝ':'j','ɉ':'j','ḱ':'k','ǩ':'k','ķ':'k','ⱪ':'k','ꝃ':'k','ḳ':'k','ƙ':'k','ḵ':'k','ᶄ':'k','ꝁ':'k','ꝅ':'k','ĺ':'l','ƚ':'l','ɬ':'l','ľ':'l','ļ':'l','ḽ':'l','ȴ':'l','ḷ':'l','ḹ':'l','ⱡ':'l','ꝉ':'l','ḻ':'l','ŀ':'l','ɫ':'l','ᶅ':'l','ɭ':'l','ł':'l','lj':'lj','ſ':'s','ẜ':'s','ẛ':'s','ẝ':'s','ḿ':'m','ṁ':'m','ṃ':'m','ɱ':'m','ᵯ':'m','ᶆ':'m','ń':'n','ň':'n','ņ':'n','ṋ':'n','ȵ':'n','ṅ':'n','ṇ':'n','ǹ':'n','ɲ':'n','ṉ':'n','ƞ':'n','ᵰ':'n','ᶇ':'n','ɳ':'n','ñ':'n','nj':'nj','ó':'o','ŏ':'o','ǒ':'o','ô':'o','ố':'o','ộ':'o','ồ':'o','ổ':'o','ỗ':'o','ö':'o','ȫ':'o','ȯ':'o','ȱ':'o','ọ':'o','ő':'o','ȍ':'o','ò':'o','ỏ':'o','ơ':'o','ớ':'o','ợ':'o','ờ':'o','ở':'o','ỡ':'o','ȏ':'o','ꝋ':'o','ꝍ':'o','ⱺ':'o','ō':'o','ṓ':'o','ṑ':'o','ǫ':'o','ǭ':'o','ø':'o','ǿ':'o','õ':'o','ṍ':'o','ṏ':'o','ȭ':'o','ƣ':'oi','ꝏ':'oo','ɛ':'e','ᶓ':'e','ɔ':'o','ᶗ':'o','ȣ':'ou','ṕ':'p','ṗ':'p','ꝓ':'p','ƥ':'p','ᵱ':'p','ᶈ':'p','ꝕ':'p','ᵽ':'p','ꝑ':'p','ꝙ':'q','ʠ':'q','ɋ':'q','ꝗ':'q','ŕ':'r','ř':'r','ŗ':'r','ṙ':'r','ṛ':'r','ṝ':'r','ȑ':'r','ɾ':'r','ᵳ':'r','ȓ':'r','ṟ':'r','ɼ':'r','ᵲ':'r','ᶉ':'r','ɍ':'r','ɽ':'r','ↄ':'c','ꜿ':'c','ɘ':'e','ɿ':'r','ś':'s','ṥ':'s','š':'s','ṧ':'s','ş':'s','ŝ':'s','ș':'s','ṡ':'s','ṣ':'s','ṩ':'s','ʂ':'s','ᵴ':'s','ᶊ':'s','ȿ':'s','ɡ':'g','ᴑ':'o','ᴓ':'o','ᴝ':'u','ť':'t','ţ':'t','ṱ':'t','ț':'t','ȶ':'t','ẗ':'t','ⱦ':'t','ṫ':'t','ṭ':'t','ƭ':'t','ṯ':'t','ᵵ':'t','ƫ':'t','ʈ':'t','ŧ':'t','ᵺ':'th','ɐ':'a','ᴂ':'ae','ǝ':'e','ᵷ':'g','ɥ':'h','ʮ':'h','ʯ':'h','ᴉ':'i','ʞ':'k','ꞁ':'l','ɯ':'m','ɰ':'m','ᴔ':'oe','ɹ':'r','ɻ':'r','ɺ':'r','ⱹ':'r','ʇ':'t','ʌ':'v','ʍ':'w','ʎ':'y','ꜩ':'tz','ú':'u','ŭ':'u','ǔ':'u','û':'u','ṷ':'u','ü':'u','ǘ':'u','ǚ':'u','ǜ':'u','ǖ':'u','ṳ':'u','ụ':'u','ű':'u','ȕ':'u','ù':'u','ủ':'u','ư':'u','ứ':'u','ự':'u','ừ':'u','ử':'u','ữ':'u','ȗ':'u','ū':'u','ṻ':'u','ų':'u','ᶙ':'u','ů':'u','ũ':'u','ṹ':'u','ṵ':'u','ᵫ':'ue','ꝸ':'um','ⱴ':'v','ꝟ':'v','ṿ':'v','ʋ':'v','ᶌ':'v','ⱱ':'v','ṽ':'v','ꝡ':'vy','ẃ':'w','ŵ':'w','ẅ':'w','ẇ':'w','ẉ':'w','ẁ':'w','ⱳ':'w','ẘ':'w','ẍ':'x','ẋ':'x','ᶍ':'x','ý':'y','ŷ':'y','ÿ':'y','ẏ':'y','ỵ':'y','ỳ':'y','ƴ':'y','ỷ':'y','ỿ':'y','ȳ':'y','ẙ':'y','ɏ':'y','ỹ':'y','ź':'z','ž':'z','ẑ':'z','ʑ':'z','ⱬ':'z','ż':'z','ẓ':'z','ȥ':'z','ẕ':'z','ᵶ':'z','ᶎ':'z','ʐ':'z','ƶ':'z','ɀ':'z','ff':'ff','ffi':'ffi','ffl':'ffl','fi':'fi','fl':'fl','ij':'ij','œ':'oe','st':'st','ₐ':'a','ₑ':'e','ᵢ':'i','ⱼ':'j','ₒ':'o','ᵣ':'r','ᵤ':'u','ᵥ':'v','ₓ':'x','Ё':'YO','Й':'I','Ц':'TS','У':'U','К':'K','Е':'E','Н':'N','Г':'G','Ш':'SH','Щ':'SCH','З':'Z','Х':'H','Ъ':'\\'','ё':'yo','й':'i','ц':'ts','у':'u','к':'k','е':'e','н':'n','г':'g','ш':'sh','щ':'sch','з':'z','х':'h','ъ':'\\'','Ф':'F','Ы':'I','В':'V','А':'a','П':'P','Р':'R','О':'O','Л':'L','Д':'D','Ж':'ZH','Э':'E','ф':'f','ы':'i','в':'v','а':'a','п':'p','р':'r','о':'o','л':'l','д':'d','ж':'zh','э':'e','Я':'Ya','Ч':'CH','С':'S','М':'M','И':'I','Т':'T','Ь':'\\'','Б':'B','Ю':'YU','я':'ya','ч':'ch','с':'s','м':'m','и':'i','т':'t','ь':'\\'','б':'b','ю':'yu'},exports.transliterate=function(o){return o.replace(/[^A-Za-z0-9\\[\\] ]/g,function(o){return exports.transliterationPairs[o]||o})},exports.transliterateToSafeASCII=function(o){return o.replace(/[^\\x00-\\x7F]/g,function(o){return exports.transliterationPairs[o]||''})}}();","type":"application/javascript","module-type":"utils"},"$:/core/modules/utils/utils.js":{"text":"!function(){'use strict';var t=require('$:/core/modules/utils/base64-utf8/base64-utf8.module.js');exports.log=function(e,t){console.log($tw.node?exports.terminalColour(t)+e+exports.terminalColour():e)},exports.terminalColour=function(e){if(!$tw.browser&&$tw.node&&process.stdout.isTTY){if(!e)return'\u001b[0m';e=exports.terminalColourLookup[e];if(e)return'\u001b['+e+'m'}return''},exports.terminalColourLookup={black:'0;30',red:'0;31',green:'0;32','brown/orange':'0;33',blue:'0;34',purple:'0;35',cyan:'0;36','light gray':'0;37'},exports.warning=function(e){exports.log(e,'brown/orange')},exports.logTable=function(e){console.table?console.table(e):$tw.utils.each(e,function(e,t){console.log(t+': '+e)})},exports.getInt=function(e,t){e=parseInt(e,10);return isNaN(e)?t:e},exports.replaceString=function(e,t,r){return e.replace(t,function(){return r})},exports.repeat=function(e,t){for(var r='',n=0;n<t;n++)r+=e;return r},exports.trim=function(e){return'string'==typeof e?e.replace(/^\\s\\s*/,'').replace(/\\s\\s*$/,''):e},exports.trimPrefix=function(e,t){if('string'!=typeof e||'string'!=typeof t)return e;if(''===t)return e.replace(/^\\s\\s*/,'');t=t.replace(/[\\\\^$*+?.()|[\\]{}]/g,'\\\\$&');t=new RegExp('^('+t+')+');return e.replace(t,'')},exports.trimSuffix=function(e,t){if('string'!=typeof e||'string'!=typeof t)return e;if(''===t)return e.replace(/\\s\\s*$/,'');t=t.replace(/[\\\\^$*+?.()|[\\]{}]/g,'\\\\$&');t=new RegExp('('+t+')+$');return e.replace(t,'')},exports.toSentenceCase=function(e){return(e||'').replace(/^\\S/,function(e){return e.toUpperCase()})},exports.toTitleCase=function(e){return(e||'').replace(/(^|\\s)\\S/g,function(e){return e.toUpperCase()})},exports.findPrecedingLineBreak=function(e,t){t=e.lastIndexOf('\\n',t-1);return-1===t?t=0:(t++,'\\r'===e.charAt(t)&&t++),t},exports.findFollowingLineBreak=function(e,t){t=e.indexOf('\\n',t);return-1===t?t=e.length:'\\r'===e.charAt(t)&&t++,t},exports.count=function(e){return Object.keys(e||{}).length},exports.hopArray=function(e,t){for(var r=0;r<t.length;r++)if($tw.utils.hop(e,t[r]))return!0;return!1},exports.removeArrayEntries=function(e,t){var r,n;if($tw.utils.isArray(t))for(r=0;r<t.length;r++)-1!==(n=e.indexOf(t[r]))&&e.splice(n,1);else-1!==(n=e.indexOf(t))&&e.splice(n,1)},exports.checkDependencies=function(r,e){var n=!1;return $tw.utils.each(e,function(e,t){$tw.utils.hop(r,t)&&(n=!0)}),n},exports.extend=function(r){return $tw.utils.each(Array.prototype.slice.call(arguments,1),function(e){if(e)for(var t in e)r[t]=e[t]}),r},exports.deepCopy=function(e){var t,r;if($tw.utils.isArray(e))t=e.slice(0);else if('object'==typeof e)for(r in t={},e)void 0!==e[r]&&(t[r]=$tw.utils.deepCopy(e[r]));else t=e;return t},exports.extendDeepCopy=function(e,t){var r,n=$tw.utils.deepCopy(e);for(r in t)void 0!==t[r]&&(n[r]=$tw.utils.deepCopy(t[r]));return n},exports.deepFreeze=function e(t){var r,n;if(t)for(n in Object.freeze(t),t)r=t[n],$tw.utils.hop(t,n)&&'object'==typeof r&&!Object.isFrozen(r)&&e(r)},exports.slowInSlowOut=function(e){return 1-(Math.cos(e*Math.PI)+1)/2},exports.formatDateString=function(r,e){var t='',n=e,o=[[/^0hh12/,function(){return $tw.utils.pad($tw.utils.getHours12(r))}],[/^wYYYY/,function(){return $tw.utils.pad($tw.utils.getYearForWeekNo(r),4)}],[/^hh12/,function(){return $tw.utils.getHours12(r)}],[/^DDth/,function(){return r.getDate()+$tw.utils.getDaySuffix(r)}],[/^YYYY/,function(){return $tw.utils.pad(r.getFullYear(),4)}],[/^aYYYY/,function(){return $tw.utils.pad(Math.abs(r.getFullYear()),4)}],[/^\\{era:([^,\\|}]*)\\|([^}\\|]*)\\|([^}]*)\\}/,function(e){var t=r.getFullYear();return 0===t?e[2]:t<0?e[1]:e[3]}],[/^0hh/,function(){return $tw.utils.pad(r.getHours())}],[/^0mm/,function(){return $tw.utils.pad(r.getMinutes())}],[/^0ss/,function(){return $tw.utils.pad(r.getSeconds())}],[/^0XXX/,function(){return $tw.utils.pad(r.getMilliseconds(),3)}],[/^0DD/,function(){return $tw.utils.pad(r.getDate())}],[/^0MM/,function(){return $tw.utils.pad(r.getMonth()+1)}],[/^0WW/,function(){return $tw.utils.pad($tw.utils.getWeek(r))}],[/^ddd/,function(){return $tw.language.getString('Date/Short/Day/'+r.getDay())}],[/^mmm/,function(){return $tw.language.getString('Date/Short/Month/'+(r.getMonth()+1))}],[/^DDD/,function(){return $tw.language.getString('Date/Long/Day/'+r.getDay())}],[/^MMM/,function(){return $tw.language.getString('Date/Long/Month/'+(r.getMonth()+1))}],[/^TZD/,function(){var e=r.getTimezoneOffset(),t=Math.abs(e);return(e<0?'+':'-')+$tw.utils.pad(Math.floor(t/60))+':'+$tw.utils.pad(t%60)}],[/^wYY/,function(){return $tw.utils.pad($tw.utils.getYearForWeekNo(r)-2e3)}],[/^[ap]m/,function(){return $tw.utils.getAmPm(r).toLowerCase()}],[/^hh/,function(){return r.getHours()}],[/^mm/,function(){return r.getMinutes()}],[/^ss/,function(){return r.getSeconds()}],[/^XXX/,function(){return r.getMilliseconds()}],[/^[AP]M/,function(){return $tw.utils.getAmPm(r).toUpperCase()}],[/^DD/,function(){return r.getDate()}],[/^MM/,function(){return r.getMonth()+1}],[/^WW/,function(){return $tw.utils.getWeek(r)}],[/^YY/,function(){return $tw.utils.pad(r.getFullYear()-2e3)}]];if(0==n.indexOf('[UTC]')){if('[UTC]YYYY0MM0DD0hh0mm0ssXXX'==n)return $tw.utils.stringifyDate(new Date);e=r.getTimezoneOffset();r=new Date(r.getTime()+60*e*1e3),n=n.substr(5)}for(;n.length;){var i='';$tw.utils.each(o,function(e){var t=e[0].exec(n);if(t)return i=e[1].call(null,t),n=n.substr(t[0].length),!1}),i?t+=i:(t+=n.charAt(0),n=n.substr(1))}return t=t.replace(/\\\\(.)/g,'$1')},exports.getAmPm=function(e){return $tw.language.getString('Date/Period/'+(12<=e.getHours()?'pm':'am'))},exports.getDaySuffix=function(e){return $tw.language.getString('Date/DaySuffix/'+e.getDate())},exports.getWeek=function(e){var t=new Date(e.getTime()),e=t.getDay();0===e&&(e=7),t.setTime(t.getTime()+864e5*(4-e));e=new Date(t.getFullYear(),0,1),e=Math.floor((t.getTime()-e.getTime())/864e5);return Math.floor(e/7)+1},exports.getYearForWeekNo=function(e){var t=new Date(e.getTime()),e=t.getDay();return 0===e&&(e=7),t.setTime(t.getTime()+864e5*(4-e)),t.getFullYear()},exports.getHours12=function(e){e=e.getHours();return 12<e?e-12:0<e?e:12},exports.getRelativeDate=function(e){var t=!1;e<0&&(e*=-1,t=!0);for(var r=[{name:'Years',duration:31536e6},{name:'Months',duration:2628e6},{name:'Days',duration:864e5},{name:'Hours',duration:36e5},{name:'Minutes',duration:6e4},{name:'Seconds',duration:1e3}],n=0;n<r.length;n++){var o=Math.floor(e/r[n].duration);if(2<=o)return{delta:e,description:$tw.language.getString('RelativeDate/'+(t?'Future':'Past')+'/'+r[n].name,{variables:{period:o.toString()}}),updatePeriod:r[n].duration}}return{delta:e,description:$tw.language.getString('RelativeDate/'+(t?'Future':'Past')+'/Second',{variables:{period:'1'}}),updatePeriod:1e3}},exports.htmlEncode=function(e){return e?e.toString().replace(/&/gm,'&').replace(/</gm,'<').replace(/>/gm,'>').replace(/\\\"/gm,'"'):''},exports.htmlTextEncode=function(e){return e?e.toString().replace(/&/gm,'&').replace(/</gm,'<').replace(/>/gm,'>'):''},exports.entityDecode=function(e){var t,r=String.fromCodePoint||String.fromCharCode,n=e.substr(1,e.length-2);return'#'===n.charAt(0)?(t='x'===n.charAt(1)||'X'===n.charAt(1)?parseInt(n.substr(2),16):parseInt(n.substr(1),10),isNaN(t)?e:r(t)):(t=$tw.config.htmlEntities[n])?r(t):e},exports.unescapeLineBreaks=function(e){return e.replace(/\\\\n/gm,'\\n').replace(/\\\\b/gm,' ').replace(/\\\\s/gm,'\\\\').replace(/\\r/gm,'')},exports.escape=function(e){e=e.charCodeAt(0);return e<=255?'\\\\x'+$tw.utils.pad(e.toString(16).toUpperCase()):'\\\\u'+$tw.utils.pad(e.toString(16).toUpperCase(),4)},exports.stringify=function(e,t){t=t?/[\\x00-\\x1f]/g:/[\\x00-\\x1f\\x80-\\uFFFF]/g;return(e||'').replace(/\\\\/g,'\\\\\\\\').replace(/\"/g,'\\\\\"').replace(/'/g,'\\\\\\'').replace(/\\r/g,'\\\\r').replace(/\\n/g,'\\\\n').replace(t,exports.escape)},exports.jsonStringify=function(e,t){t=t?/[\\x00-\\x1f]/g:/[\\x00-\\x1f\\x80-\\uFFFF]/g;return(e||'').replace(/\\\\/g,'\\\\\\\\').replace(/\"/g,'\\\\\"').replace(/\\r/g,'\\\\r').replace(/\\n/g,'\\\\n').replace(/\\x08/g,'\\\\b').replace(/\\x0c/g,'\\\\f').replace(/\\t/g,'\\\\t').replace(t,function(e){return'\\\\u'+$tw.utils.pad(e.charCodeAt(0).toString(16).toUpperCase(),4)})},exports.escapeRegExp=function(e){return e.replace(/[\\-\\/\\\\\\^\\$\\*\\+\\?\\.\\(\\)\\|\\[\\]\\{\\}]/g,'\\\\$&')},exports.isLinkExternal=function(e){return/^(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/i.test(e)},exports.nextTick=function(e){'undefined'==typeof process?window.setTimeout(e,0):process.nextTick(e)},exports.unHyphenateCss=function(e){return e.replace(/-([a-z])/gi,function(e,t){return t.toUpperCase()})},exports.hyphenateCss=function(e){return e.replace(/([A-Z])/g,function(e,t){return'-'+t.toLowerCase()})},exports.parseTextReference=function(e){var t=/(?:(.*?)!!(.+))|(?:(.*?)##(.+))|(.*)/gm,r=t.exec(e),n={};return r&&t.lastIndex===e.length?(r[1]&&(n.title=r[1]),r[2]&&(n.field=r[2]),r[3]&&(n.title=r[3]),r[4]&&(n.index=r[4]),r[5]&&(n.title=r[5])):n.title=e,n},exports.isValidFieldName=function(e){if(!e||'string'!=typeof e)return!1;e=e.toLowerCase().trim();return/^[a-z0-9\\-\\._]+$/gm.test(e)},exports.extractVersionInfo=function(){if($tw.packageInfo)return $tw.packageInfo.version;for(var e=document.getElementsByTagName('meta'),t=0;t<e.length;t++){var r=e[t];if('tiddlywiki-version'===r.name)return r.content}return null},exports.getAnimationDuration=function(){return parseInt($tw.wiki.getTiddlerText('$:/config/AnimationDuration','400'),10)||0},exports.hashString=function(e){return e.split('').reduce(function(e,t){return(e=(e<<5)-e+t.charCodeAt(0))&e},0)},exports.base64Decode=function(e){return t.base64.decode.call(t,e)},exports.base64Encode=function(e){return t.base64.encode.call(t,e)},exports.makeTiddlerDictionary=function(e){var t,r=[];for(t in e)r.push(t+': '+e[t]);return r.join('\\n')},exports.timer=function(e){var t;return t=$tw.node?1e3*(t=process.hrtime())[0]+t[1]/1e6:(window.performance?performance:Date).now(),void 0!==e&&(t-=e),t},exports.makeDataUri=function(e,t,r){t=t||'text/vnd.tiddlywiki';var n='base64'===($tw.config.contentTypeInfo[t]||$tw.config.contentTypeInfo['text/plain']).encoding,o=[];return r?o.push(r):(o.push('data:'),o.push(t),o.push(n?';base64':''),o.push(','),o.push(n?e:encodeURIComponent(e))),o.join('')},exports.tagToCssSelector=function(e){return'tc-tagged-'+encodeURIComponent(e).replace(/[!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^`{\\|}~,]/gm,function(e){return'\\\\'+e})},exports.sign=Math.sign||function(e){return 0===(e=+e)||isNaN(e)?e:0<e?1:-1},exports.strEndsWith=function(e,t,r){if(e.endsWith)return e.endsWith(t,r);('number'!=typeof r||!isFinite(r)||Math.floor(r)!==r||r>e.length)&&(r=e.length),r-=t.length;t=e.indexOf(t,r);return-1!==t&&t===r},exports.getSystemInfo=function(e,t,r){function n(e,t){o.push(e+': '+t)}var o=[];return $tw.browser&&(n('User Agent',navigator.userAgent),n('Online Status',window.navigator.onLine)),$tw.node&&n('Node Version',process.version),o.join('\\n')},exports.parseNumber=function(e){return parseFloat(e)||0},exports.parseInt=function(e){return parseInt(e,10)||0},exports.stringifyNumber=function(e){return e+''},exports.makeCompareFunction=function(e,t){function r(e,t){return t<e?n:e<t?o:0}var n=(t=t||{}).invert?-1:1,o=t.invert?1:-1,i={number:function(e,t){return r($tw.utils.parseNumber(e),$tw.utils.parseNumber(t))},integer:function(e,t){return r($tw.utils.parseInt(e),$tw.utils.parseInt(t))},string:function(e,t){return r(''+e,''+t)},date:function(e,t){e=$tw.utils.parseDate(e),t=$tw.utils.parseDate(t);return isFinite(e)||(e=new Date(0)),isFinite(t)||(t=new Date(0)),r(e,t)},version:function(e,t){return $tw.utils.compareVersions(e,t)}};return i[e]||i[t.defaultType]||i.number}}();","type":"application/javascript","module-type":"utils"},"$:/core/modules/widgets/action-confirm.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.computeAttributes(),this.execute(),this.parentDomNode=t,this.renderChildren(t,e)},t.prototype.execute=function(){this.message=this.getAttribute('$message',$tw.language.getString('ConfirmAction')),this.prompt='no'!=this.getAttribute('$prompt','yes'),this.makeChildWidgets()},t.prototype.refresh=function(t){var e=this.computeAttributes();return e.$message||e.$prompt?(this.refreshSelf(),!0):this.refreshChildren(t)},t.prototype.invokeAction=function(t,e){var i=!0,r=!0;return this.prompt&&(i=confirm(this.message)),i&&(r=this.invokeActions(t,e)),r},t.prototype.allowActionPropagation=function(){return!1},exports['action-confirm']=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/action-createtiddler.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.computeAttributes(),this.execute()},t.prototype.execute=function(){this.actionBaseTitle=this.getAttribute('$basetitle'),this.hasBase=!!this.actionBaseTitle,this.actionSaveTitle=this.getAttribute('$savetitle'),this.actionSaveDraftTitle=this.getAttribute('$savedrafttitle'),this.actionTimestamp='yes'===this.getAttribute('$timestamp','yes'),this.actionTemplate=this.getAttribute('$template'),this.useTemplate=!!this.actionTemplate,this.actionOverwrite=this.getAttribute('$overwrite','no')},t.prototype.refresh=function(t){var e=this.computeAttributes();return 0<$tw.utils.count(e)?(this.refreshSelf(),!0):this.refreshChildren(t)},t.prototype.invokeAction=function(t,e){var i,s,a=this.wiki.getTiddlerText('$:/language/DefaultNewTiddlerTitle'),r={};$tw.utils.each(this.attributes,function(t,e){'$'!==e.charAt(0)&&(r[e]=t)}),this.actionTimestamp&&(i=this.wiki.getCreationFields(),s=this.wiki.getModificationFields()),this.hasBase&&'no'===this.actionOverwrite?a=this.wiki.generateNewTitle(this.actionBaseTitle):this.hasBase&&'yes'===this.actionOverwrite&&(a=this.actionBaseTitle),!this.hasBase&&this.useTemplate?a=this.wiki.generateNewTitle(this.actionTemplate):this.hasBase||this.useTemplate||(a=this.wiki.generateNewTitle(a));var h=this.wiki.getTiddler(this.actionTemplate)||{};this.wiki.addTiddler(new $tw.Tiddler(h.fields,i,r,s,{title:a}));return this.actionSaveTitle&&this.wiki.setTextReference(this.actionSaveTitle,a,this.getVariable('currentTiddler')),this.actionSaveDraftTitle&&this.wiki.setTextReference(this.actionSaveDraftTitle,this.wiki.generateDraftTitle(a),this.getVariable('currentTiddler')),!0},exports['action-createtiddler']=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/action-deletefield.js":{"text":"!function(){'use strict';function t(t,i){this.initialise(t,i)}var i=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new i).render=function(t,i){this.computeAttributes(),this.execute()},t.prototype.execute=function(){this.actionTiddler=this.getAttribute('$tiddler',this.getVariable('currentTiddler')),this.actionField=this.getAttribute('$field')},t.prototype.refresh=function(t){return this.computeAttributes().$tiddler?(this.refreshSelf(),!0):this.refreshChildren(t)},t.prototype.invokeAction=function(t,i){var e=this.wiki.getTiddler(this.actionTiddler),r={},d=!1;return this.actionField&&e&&(r[this.actionField]=void 0,this.actionField in e.fields&&(d=!0)),e&&($tw.utils.each(this.attributes,function(t,i){'$'!==i.charAt(0)&&'title'!==i&&(r[i]=void 0,d=!0)}),d&&this.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),e,r,this.wiki.getModificationFields()))),!0},exports['action-deletefield']=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/action-deletetiddler.js":{"text":"!function(){'use strict';function t(t,i){this.initialise(t,i)}var i=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new i).render=function(t,i){this.computeAttributes(),this.execute()},t.prototype.execute=function(){this.actionFilter=this.getAttribute('$filter'),this.actionTiddler=this.getAttribute('$tiddler')},t.prototype.refresh=function(t){var i=this.computeAttributes();return i.$filter||i.$tiddler?(this.refreshSelf(),!0):this.refreshChildren(t)},t.prototype.invokeAction=function(t,i){var e=[];this.actionFilter&&(e=this.wiki.filterTiddlers(this.actionFilter,this)),this.actionTiddler&&e.push(this.actionTiddler);for(var r=0;r<e.length;r++)this.wiki.deleteTiddler(e[r]);return!0},exports['action-deletetiddler']=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/action-listops.js":{"text":"!function(){'use strict';function t(t,i){this.initialise(t,i)}var i=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new i).render=function(t,i){this.computeAttributes(),this.execute()},t.prototype.execute=function(){this.target=this.getAttribute('$tiddler',this.getVariable('currentTiddler')),this.filter=this.getAttribute('$filter'),this.subfilter=this.getAttribute('$subfilter'),this.listField=this.getAttribute('$field','list'),this.listIndex=this.getAttribute('$index'),this.filtertags=this.getAttribute('$tags')},t.prototype.refresh=function(t){var i=this.computeAttributes();return i.$tiddler||i.$filter||i.$subfilter||i.$field||i.$index||i.$tags?(this.refreshSelf(),!0):this.refreshChildren(t)},t.prototype.invokeAction=function(t,i){var s,e,r=this.listField,l='!!',h=this.listField;return this.listIndex&&(r=void 0,e=this.listIndex,l='##',h=this.listIndex),this.filter&&this.wiki.setText(this.target,r,e,$tw.utils.stringifyList(this.wiki.filterTiddlers(this.filter,this))),this.subfilter&&(s='[list['+this.target+l+h+']] '+this.subfilter,this.wiki.setText(this.target,r,e,$tw.utils.stringifyList(this.wiki.filterTiddlers(s,this)))),this.filtertags&&(s=(e=this.wiki.getTiddler(this.target))?(e.fields.tags||[]).slice(0):[],e='[list['+this.target+'!!tags]] '+this.filtertags,e=this.wiki.filterTiddlers(e,this),$tw.utils.stringifyList(s.sort())!==$tw.utils.stringifyList(e.sort())&&this.wiki.setText(this.target,'tags',void 0,$tw.utils.stringifyList(e))),!0},exports['action-listops']=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/action-log.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.computeAttributes(),this.execute()},t.prototype.execute=function(){this.message=this.getAttribute('$$message','debug'),this.logAll='yes'===this.getAttribute('$$all','no'),this.filter=this.getAttribute('$$filter')},t.prototype.refresh=function(t){return this.refreshSelf(),!0},t.prototype.invokeAction=function(t,e){return this.log(),!0},t.prototype.log=function(){var t,e,i={},s={};for(e in $tw.utils.each(this.attributes,function(t,e){'$$'!==e.substring(0,2)&&(i[e]=t)}),this.variables)s[e]=this.getVariable(e,{defaultValue:''});this.filter&&(t=this.wiki.compileFilter(this.filter).call(this.wiki,this.wiki.makeTiddlerIterator(s)),$tw.utils.each(t,function(t){i[t]=s[t]})),t=$tw.utils.count(i),console.group(this.message),0<t&&$tw.utils.logTable(i),!this.logAll&&t||(console.groupCollapsed('All variables'),$tw.utils.logTable(s),console.groupEnd()),console.groupEnd()},exports['action-log']=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/action-navigate.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.computeAttributes(),this.execute()},t.prototype.execute=function(){this.actionTo=this.getAttribute('$to'),this.actionScroll=this.getAttribute('$scroll')},t.prototype.refresh=function(t){var e=this.computeAttributes();return e.$to||e.$scroll?(this.refreshSelf(),!0):this.refreshChildren(t)},t.prototype.invokeAction=function(t,e){e=e||{};var i=t&&t.getBoundingClientRect&&t.getBoundingClientRect(),e=e.metaKey||e.ctrlKey||1===e.button;return'yes'===this.actionScroll?e=!1:'no'===this.actionScroll&&(e=!0),this.dispatchEvent({type:'tm-navigate',navigateTo:void 0===this.actionTo?this.getVariable('currentTiddler'):this.actionTo,navigateFromTitle:this.getVariable('storyTiddler'),navigateFromNode:t,navigateFromClientRect:i&&{top:i.top,left:i.left,width:i.width,right:i.right,bottom:i.bottom,height:i.height},navigateSuppressNavigation:e}),!0},exports['action-navigate']=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/action-popup.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.computeAttributes(),this.execute()},t.prototype.execute=function(){this.actionState=this.getAttribute('$state'),this.actionCoords=this.getAttribute('$coords')},t.prototype.refresh=function(t){var e=this.computeAttributes();return e.$state||e.$coords?(this.refreshSelf(),!0):this.refreshChildren(t)},t.prototype.invokeAction=function(t,e){var i=/^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/.exec(this.actionCoords||'');return i?$tw.popup.triggerPopup({domNode:null,domNodeRect:{left:parseFloat(i[1]),top:parseFloat(i[2]),width:parseFloat(i[3]),height:parseFloat(i[4])},title:this.actionState,wiki:this.wiki}):$tw.popup.cancel(0),!0},exports['action-popup']=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/action-sendmessage.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.computeAttributes(),this.execute()},t.prototype.execute=function(){this.actionMessage=this.getAttribute('$message'),this.actionParam=this.getAttribute('$param'),this.actionName=this.getAttribute('$name'),this.actionValue=this.getAttribute('$value','')},t.prototype.refresh=function(t){var e=this.computeAttributes();return Object.keys(e).length?(this.refreshSelf(),!0):this.refreshChildren(t)},t.prototype.invokeAction=function(t,e){var i=this.actionParam,s=Object.create(null);return $tw.utils.each(this.attributes,function(t,e){'$'!==e.charAt(0)&&(s[e]=t,0)}),this.actionName&&(s[this.actionName]=this.actionValue),this.dispatchEvent({type:this.actionMessage,param:i,paramObject:s,tiddlerTitle:this.getVariable('currentTiddler'),navigateFromTitle:this.getVariable('storyTiddler'),event:e}),!0},exports['action-sendmessage']=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/action-setfield.js":{"text":"!function(){'use strict';function t(t,i){this.initialise(t,i)}var i=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new i).render=function(t,i){this.computeAttributes(),this.execute()},t.prototype.execute=function(){this.actionTiddler=this.getAttribute('$tiddler',this.getVariable('currentTiddler')),this.actionField=this.getAttribute('$field'),this.actionIndex=this.getAttribute('$index'),this.actionValue=this.getAttribute('$value'),this.actionTimestamp='yes'===this.getAttribute('$timestamp','yes')},t.prototype.refresh=function(t){var i=this.computeAttributes();return i.$tiddler||i.$field||i.$index||i.$value?(this.refreshSelf(),!0):this.refreshChildren(t)},t.prototype.invokeAction=function(t,i){var e=this,s={};return s.suppressTimestamp=!this.actionTimestamp,'string'!=typeof this.actionField&&'string'!=typeof this.actionIndex&&'string'!=typeof this.actionValue||this.wiki.setText(this.actionTiddler,this.actionField,this.actionIndex,this.actionValue,s),$tw.utils.each(this.attributes,function(t,i){'$'!==i.charAt(0)&&e.wiki.setText(e.actionTiddler,i,void 0,t,s)}),!0},exports['action-setfield']=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/browse.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){var i=this;this.parentDomNode=t,this.computeAttributes(),this.execute();var s=this.document.createElement('input');s.setAttribute('type','file'),this.browseMultiple&&s.setAttribute('multiple','multiple'),this.tooltip&&s.setAttribute('title',this.tooltip),this.nwsaveas&&s.setAttribute('nwsaveas',this.nwsaveas),this.accept&&s.setAttribute('accept',this.accept),this.webkitdirectory&&s.setAttribute('webkitdirectory',this.webkitdirectory),this.nwdirectory&&s.setAttribute('nwdirectory',this.nwdirectory),s.addEventListener('change',function(t){return i.message?i.dispatchEvent({type:i.message,param:i.param,files:t.target.files}):i.wiki.readFiles(t.target.files,{callback:function(t){i.dispatchEvent({type:'tm-import-tiddlers',param:JSON.stringify(t)})},deserializer:i.deserializer}),!1},!1),t.insertBefore(s,e),this.renderChildren(s,null),this.domNodes.push(s)},t.prototype.execute=function(){this.browseMultiple=this.getAttribute('multiple'),this.deserializer=this.getAttribute('deserializer'),this.message=this.getAttribute('message'),this.param=this.getAttribute('param'),this.tooltip=this.getAttribute('tooltip'),this.nwsaveas=this.getAttribute('nwsaveas'),this.accept=this.getAttribute('accept'),this.webkitdirectory=this.getAttribute('webkitdirectory'),this.nwdirectory=this.getAttribute('nwdirectory')},t.prototype.refresh=function(t){return!1},exports.browse=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/button.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){var i,s=this,o='button';this.parentDomNode=t,this.computeAttributes(),this.execute(),this.buttonTag&&-1===$tw.config.htmlUnsafeElements.indexOf(this.buttonTag)&&(o=this.buttonTag),i=this.document.createElement(o),this.domNode=i;var h=this.class.split(' ')||[],o=(this.popup||this.popupTitle)&&this.isPoppedUp();this.selectedClass&&((this.set||this.setTitle)&&this.setTo&&this.isSelected()&&$tw.utils.pushTop(h,this.selectedClass.split(' ')),o&&$tw.utils.pushTop(h,this.selectedClass.split(' '))),o&&$tw.utils.pushTop(h,'tc-popup-handle'),i.className=h.join(' '),this.style&&i.setAttribute('style',this.style),this.tooltip&&i.setAttribute('title',this.tooltip),this['aria-label']&&i.setAttribute('aria-label',this['aria-label']),(this.popup||this.popupTitle)&&i.setAttribute('aria-expanded',o?'true':'false'),this.tabIndex&&i.setAttribute('tabindex',this.tabIndex),'yes'===this.isDisabled&&i.setAttribute('disabled',!0),i.addEventListener('click',function(t){var e,i=!1;return s.invokeActions(s,t)&&(i=!0),s.to&&(s.navigateTo(t),i=!0),s.message&&(s.dispatchMessage(t),i=!0),(s.popup||s.popupTitle)&&(s.triggerPopup(t),i=!0),(s.set||s.setTitle)&&(s.setTiddler(),i=!0),s.actions&&(e=$tw.keyboardManager.getEventModifierKeyDescriptor(t),s.invokeActionString(s.actions,s,t,{modifier:e})),i&&(t.preventDefault(),t.stopPropagation()),i},!1),(this.dragTiddler||this.dragFilter)&&$tw.utils.makeDraggable({domNode:i,dragTiddlerFn:function(){return s.dragTiddler},dragFilterFn:function(){return s.dragFilter},widget:this}),t.insertBefore(i,e),this.renderChildren(i,null),this.domNodes.push(i)},t.prototype.allowActionPropagation=function(){return!1},t.prototype.getBoundingClientRect=function(){return this.domNodes[0].getBoundingClientRect()},t.prototype.isSelected=function(){return this.setTitle?(this.setField?this.wiki.getTiddler(this.setTitle).getFieldString(this.setField)===this.setTo:this.setIndex?this.wiki.extractTiddlerDataItem(this.setTitle,this.setIndex)===this.setTo:this.wiki.getTiddlerText(this.setTitle))||this.defaultSetValue||this.getVariable('currentTiddler'):this.wiki.getTextReference(this.set,this.defaultSetValue,this.getVariable('currentTiddler'))===this.setTo},t.prototype.isPoppedUp=function(){var t=this.popupTitle?this.wiki.getTiddler(this.popupTitle):this.wiki.getTiddler(this.popup);return!(!t||!t.fields.text)&&$tw.popup.readPopupState(t.fields.text)},t.prototype.navigateTo=function(t){var e=this.getBoundingClientRect();this.dispatchEvent({type:'tm-navigate',navigateTo:this.to,navigateFromTitle:this.getVariable('storyTiddler'),navigateFromNode:this,navigateFromClientRect:{top:e.top,left:e.left,width:e.width,right:e.right,bottom:e.bottom,height:e.height},navigateSuppressNavigation:t.metaKey||t.ctrlKey||1===t.button,event:t})},t.prototype.dispatchMessage=function(t){this.dispatchEvent({type:this.message,param:this.param,tiddlerTitle:this.getVariable('currentTiddler'),event:t})},t.prototype.triggerPopup=function(t){this.popupTitle?$tw.popup.triggerPopup({domNode:this.domNodes[0],title:this.popupTitle,wiki:this.wiki,noStateReference:!0}):$tw.popup.triggerPopup({domNode:this.domNodes[0],title:this.popup,wiki:this.wiki})},t.prototype.setTiddler=function(){this.setTitle?this.setField?this.wiki.setText(this.setTitle,this.setField,void 0,this.setTo):this.setIndex?this.wiki.setText(this.setTitle,void 0,this.setIndex,this.setTo):this.wiki.setText(this.setTitle,'text',void 0,this.setTo):this.wiki.setTextReference(this.set,this.setTo,this.getVariable('currentTiddler'))},t.prototype.execute=function(){this.actions=this.getAttribute('actions'),this.to=this.getAttribute('to'),this.message=this.getAttribute('message'),this.param=this.getAttribute('param'),this.set=this.getAttribute('set'),this.setTo=this.getAttribute('setTo'),this.popup=this.getAttribute('popup'),this.hover=this.getAttribute('hover'),this['aria-label']=this.getAttribute('aria-label'),this.tooltip=this.getAttribute('tooltip'),this.style=this.getAttribute('style'),this.class=this.getAttribute('class',''),this.selectedClass=this.getAttribute('selectedClass'),this.defaultSetValue=this.getAttribute('default',''),this.buttonTag=this.getAttribute('tag'),this.dragTiddler=this.getAttribute('dragTiddler'),this.dragFilter=this.getAttribute('dragFilter'),this.setTitle=this.getAttribute('setTitle'),this.setField=this.getAttribute('setField'),this.setIndex=this.getAttribute('setIndex'),this.popupTitle=this.getAttribute('popupTitle'),this.tabIndex=this.getAttribute('tabindex'),this.isDisabled=this.getAttribute('disabled','no'),this.makeChildWidgets()},t.prototype.updateDomNodeClasses=function(){var t,e=this.domNode.className.split(' '),i=this.class.split(' ');this.class=this.getAttribute('class',''),t=this.class.split(' '),$tw.utils.each(i,function(t){t=e.indexOf(t);-1!==t&&e.splice(t,1)}),$tw.utils.pushTop(e,t),this.domNode.className=e.join(' ')},t.prototype.refresh=function(t){var e=this.computeAttributes();return e.actions||e.to||e.message||e.param||e.set||e.setTo||e.popup||e.hover||e.selectedClass||e.style||e.dragFilter||e.dragTiddler||this.set&&t[this.set]||this.popup&&t[this.popup]||this.popupTitle&&t[this.popupTitle]||e.setTitle||e.setField||e.setIndex||e.popupTitle||e.disabled?(this.refreshSelf(),!0):(e.class&&this.updateDomNodeClasses(),this.refreshChildren(t))},exports.button=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/checkbox.js":{"text":"!function(){'use strict';function e(e,t){this.initialise(e,t)}var t=require('$:/core/modules/widgets/widget.js').widget;(e.prototype=new t).render=function(e,t){this.parentDomNode=e,this.computeAttributes(),this.execute(),this.labelDomNode=this.document.createElement('label'),this.labelDomNode.setAttribute('class',this.checkboxClass),this.inputDomNode=this.document.createElement('input'),this.inputDomNode.setAttribute('type','checkbox'),this.getValue()&&this.inputDomNode.setAttribute('checked','true'),'yes'===this.isDisabled&&this.inputDomNode.setAttribute('disabled',!0),this.labelDomNode.appendChild(this.inputDomNode),this.spanDomNode=this.document.createElement('span'),this.labelDomNode.appendChild(this.spanDomNode),$tw.utils.addEventListeners(this.inputDomNode,[{name:'change',handlerObject:this,handlerMethod:'handleChangeEvent'}]),e.insertBefore(this.labelDomNode,t),this.renderChildren(this.spanDomNode,null),this.domNodes.push(this.labelDomNode)},e.prototype.getValue=function(){var e,t=this.wiki.getTiddler(this.checkboxTitle);if(t){if(this.checkboxTag)return this.checkboxInvertTag?!t.hasTag(this.checkboxTag):t.hasTag(this.checkboxTag);if(this.checkboxField){if((e=$tw.utils.hop(t.fields,this.checkboxField)?t.fields[this.checkboxField]||'':this.checkboxDefault||'')===this.checkboxChecked)return!0;if(e===this.checkboxUnchecked)return!1}if(this.checkboxIndex){if((e=this.wiki.extractTiddlerDataItem(t,this.checkboxIndex,this.checkboxDefault||''))===this.checkboxChecked)return!0;if(e===this.checkboxUnchecked)return!1}}else{if(this.checkboxTag)return!1;if(this.checkboxField){if(this.checkboxDefault===this.checkboxChecked)return!0;if(this.checkboxDefault===this.checkboxUnchecked)return!1}}return!1},e.prototype.handleChangeEvent=function(e){var t,i=this.inputDomNode.checked,h=this.wiki.getTiddler(this.checkboxTitle),c={title:this.checkboxTitle},s=!1,o=!1,n=h&&h.hasTag(this.checkboxTag),d=i?this.checkboxChecked:this.checkboxUnchecked,o=this.checkboxTag&&'yes'===this.checkboxInvertTag?n===i:n!==i;!this.checkboxTag||h&&!o||(c.tags=h?(h.fields.tags||[]).slice(0):[],-1!==(t=c.tags.indexOf(this.checkboxTag))&&c.tags.splice(t,1),('yes'===this.checkboxInvertTag&&!i||'yes'!==this.checkboxInvertTag&&i)&&c.tags.push(this.checkboxTag),s=!0),this.checkboxField&&(h&&h.fields[this.checkboxField]===d||(c[this.checkboxField]=d,s=!0)),this.checkboxIndex&&(t=this.wiki.extractTiddlerDataItem(this.checkboxTitle,this.checkboxIndex),h&&t===d||(s=!0)),s&&(this.checkboxIndex?this.wiki.setText(this.checkboxTitle,'',this.checkboxIndex,d):this.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),{text:''},h,c,this.wiki.getModificationFields()))),this.checkboxActions&&this.invokeActionString(this.checkboxActions,this,e),this.checkboxCheckActions&&i&&this.invokeActionString(this.checkboxCheckActions,this,e),this.checkboxUncheckActions&&!i&&this.invokeActionString(this.checkboxUncheckActions,this,e)},e.prototype.execute=function(){this.checkboxActions=this.getAttribute('actions'),this.checkboxCheckActions=this.getAttribute('checkactions'),this.checkboxUncheckActions=this.getAttribute('uncheckactions'),this.checkboxTitle=this.getAttribute('tiddler',this.getVariable('currentTiddler')),this.checkboxTag=this.getAttribute('tag'),this.checkboxField=this.getAttribute('field'),this.checkboxIndex=this.getAttribute('index'),this.checkboxChecked=this.getAttribute('checked'),this.checkboxUnchecked=this.getAttribute('unchecked'),this.checkboxDefault=this.getAttribute('default'),this.checkboxClass=this.getAttribute('class',''),this.checkboxInvertTag=this.getAttribute('invertTag',''),this.isDisabled=this.getAttribute('disabled','no'),this.makeChildWidgets()},e.prototype.refresh=function(e){var t=this.computeAttributes();if(t.tiddler||t.tag||t.invertTag||t.field||t.index||t.checked||t.unchecked||t.default||t.class||t.disabled)return this.refreshSelf(),!0;t=!1;return e[this.checkboxTitle]&&(this.inputDomNode.checked=this.getValue(),t=!0),this.refreshChildren(e)||t},exports.checkbox=e}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/codeblock.js":{"text":"!function(){'use strict';function e(e,t){this.initialise(e,t)}var t=require('$:/core/modules/widgets/widget.js').widget;(e.prototype=new t).render=function(e,t){this.parentDomNode=e,this.computeAttributes(),this.execute();var i=this.document.createElement('code'),o=this.document.createElement('pre');i.appendChild(this.document.createTextNode(this.getAttribute('code'))),o.appendChild(i),e.insertBefore(o,t),this.domNodes.push(o),this.postRender&&this.postRender()},e.prototype.execute=function(){this.language=this.getAttribute('language')},e.prototype.refresh=function(e){return!1},exports.codeblock=e}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/count.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute();var i=this.document.createTextNode(this.currentCount);t.insertBefore(i,e),this.domNodes.push(i)},t.prototype.execute=function(){this.filter=this.getAttribute('filter'),this.filter?this.currentCount=this.wiki.filterTiddlers(this.filter,this).length:this.currentCount='0'},t.prototype.refresh=function(t){this.computeAttributes();var e=this.currentCount;return this.execute(),this.currentCount!==e&&(this.refreshSelf(),!0)},exports.count=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/diff-text.js":{"text":"!function(){'use strict';function e(e,t){this.initialise(e,t)}var t=require('$:/core/modules/widgets/widget.js').widget,f=require('$:/core/modules/utils/diff-match-patch/diff_match_patch.js');(e.prototype=new t).invisibleCharacters={'\\n':'↩︎\\n','\\r':'⇠','\\t':'⇥\\t'},e.prototype.render=function(e,t){this.parentDomNode=e,this.computeAttributes(),this.execute();var i=new f.diff_match_patch,r=i.diff_main(this.getAttribute('source'),this.getAttribute('dest'));switch(this.getAttribute('cleanup','semantic')){case'none':break;case'efficiency':i.diff_cleanupEfficiency(r);break;default:i.diff_cleanupSemantic(r)}var n=this.document.createElement('div'),s=this.createDiffDom(r);e.insertBefore(n,t),this.setVariable('diff-count',r.reduce(function(e,t){return t[0]!==f.DIFF_EQUAL&&e++,e},0).toString()),this.renderChildren(n,null),n.appendChild(s),this.domNodes.push(n)},e.prototype.createDiffDom=function(e){var h=this,t=this.document.createElement('pre'),u=this.document.createElement('code');return $tw.utils.each(e,function(e){var t,i,r=e[0]===f.DIFF_INSERT?'ins':e[0]===f.DIFF_DELETE?'del':'span',n=e[0]===f.DIFF_INSERT?'tc-diff-insert':e[0]===f.DIFF_DELETE?'tc-diff-delete':'tc-diff-equal',s=h.document.createElement(r),c=e[1],d=0,a=/([\\x00-\\x1F])/gm,o=a.exec(c);for(s.className=n;o;)d<o.index&&s.appendChild(h.document.createTextNode(c.slice(d,o.index))),(t=h.document.createElement('span')).className='tc-diff-invisible',i=h.invisibleCharacters[o[0]]||'[0x'+o[0].charCodeAt(0).toString(16)+']',t.appendChild(h.document.createTextNode(i)),s.appendChild(t),d=o.index+o[0].length,o=a.exec(c);d<c.length&&s.appendChild(h.document.createTextNode(c.slice(d))),u.appendChild(s)}),t.appendChild(u),t},e.prototype.execute=function(){var e=this.parseTreeNode&&this.parseTreeNode.children&&0<this.parseTreeNode.children.length?this.parseTreeNode.children:[{type:'transclude',attributes:{tiddler:{type:'string',value:'$:/language/Diffs/CountMessage'}}}];this.makeChildWidgets(e)},e.prototype.refresh=function(e){var t=this.computeAttributes();return t.source||t.dest||t.cleanup?(this.refreshSelf(),!0):this.refreshChildren(e)},exports['diff-text']=e}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/draggable.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){var i=this;this.parentDomNode=t,this.computeAttributes(),this.execute();var s=this.draggableTag;-1!==$tw.config.htmlUnsafeElements.indexOf(s)&&(s='div');var r=this.document.createElement(s),s=['tc-draggable'];this.draggableClasses&&s.push(this.draggableClasses),r.setAttribute('class',s.join(' ')),$tw.utils.makeDraggable({domNode:r,dragTiddlerFn:function(){return i.getAttribute('tiddler')},dragFilterFn:function(){return i.getAttribute('filter')},startActions:i.startActions,endActions:i.endActions,widget:this}),t.insertBefore(r,e),this.renderChildren(r,null),this.domNodes.push(r)},t.prototype.execute=function(){this.draggableTag=this.getAttribute('tag','div'),this.draggableClasses=this.getAttribute('class'),this.startActions=this.getAttribute('startactions'),this.endActions=this.getAttribute('endactions'),this.makeChildWidgets()},t.prototype.refresh=function(t){var e=this.computeAttributes();return e.tag||e.class?(this.refreshSelf(),!0):this.refreshChildren(t)},exports.draggable=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/droppable.js":{"text":"!function(){'use strict';function e(e,t){this.initialise(e,t)}var t=require('$:/core/modules/widgets/widget.js').widget;(e.prototype=new t).render=function(e,t){var r=this.parseTreeNode.isBlock?'div':'span';this.parentDomNode=e,this.computeAttributes(),this.execute(),this.droppableTag&&-1===$tw.config.htmlUnsafeElements.indexOf(this.droppableTag)&&(r=this.droppableTag),r=this.document.createElement(r),this.domNode=r,this.assignDomNodeClasses(),this.droppableEnable?$tw.utils.addEventListeners(r,[{name:'dragenter',handlerObject:this,handlerMethod:'handleDragEnterEvent'},{name:'dragover',handlerObject:this,handlerMethod:'handleDragOverEvent'},{name:'dragleave',handlerObject:this,handlerMethod:'handleDragLeaveEvent'},{name:'drop',handlerObject:this,handlerMethod:'handleDropEvent'}]):$tw.utils.addClass(this.domNode,this.disabledClass),e.insertBefore(r,t),this.renderChildren(r,null),this.domNodes.push(r),this.currentlyEntered=[]},e.prototype.enterDrag=function(e){-1===this.currentlyEntered.indexOf(e.target)&&this.currentlyEntered.push(e.target),$tw.utils.addClass(this.domNodes[0],'tc-dragover')},e.prototype.leaveDrag=function(e){e=this.currentlyEntered.indexOf(e.target);-1!==e&&this.currentlyEntered.splice(e,1),(0===this.currentlyEntered.length||1===this.currentlyEntered.length&&this.currentlyEntered[0]===$tw.dragInProgress)&&(this.currentlyEntered=[],this.domNodes[0]&&$tw.utils.removeClass(this.domNodes[0],'tc-dragover'))},e.prototype.handleDragEnterEvent=function(e){return this.enterDrag(e),e.preventDefault(),e.stopPropagation(),!1},e.prototype.handleDragOverEvent=function(e){return-1!==['TEXTAREA','INPUT'].indexOf(e.target.tagName)||(e.preventDefault(),e.dataTransfer.dropEffect=this.droppableEffect),!1},e.prototype.handleDragLeaveEvent=function(e){return this.leaveDrag(e),!1},e.prototype.handleDropEvent=function(t){var r=this;if(this.leaveDrag(t),-1!==['TEXTAREA','INPUT'].indexOf(t.target.tagName))return!1;var e=t.dataTransfer;return $tw.utils.removeClass(this.domNodes[0],'tc-dragover'),$tw.utils.importDataTransfer(e,null,function(e){e.forEach(function(e){r.performActions(e.title||e.text,t)})}),t.preventDefault(),t.stopPropagation(),!1},e.prototype.performActions=function(e,t){var r;this.droppableActions&&(r=$tw.keyboardManager.getEventModifierKeyDescriptor(t),this.invokeActionString(this.droppableActions,this,t,{actionTiddler:e,modifier:r}))},e.prototype.execute=function(){this.droppableActions=this.getAttribute('actions'),this.droppableEffect=this.getAttribute('effect','copy'),this.droppableTag=this.getAttribute('tag'),this.droppableEnable='yes'===(this.getAttribute('enable')||'yes'),this.disabledClass=this.getAttribute('disabledClass',''),this.makeChildWidgets()},e.prototype.assignDomNodeClasses=function(){var e=this.getAttribute('class','').split(' ');e.push('tc-droppable'),this.domNode.className=e.join(' ')},e.prototype.refresh=function(e){var t=this.computeAttributes();return t.tag||t.enable||t.disabledClass||t.actions||t.effect?(this.refreshSelf(),!0):(t.class&&this.assignDomNodeClasses(),this.refreshChildren(e))},exports.droppable=e}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/dropzone.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute();var r=this.document.createElement('div');r.className=this.dropzoneClass||'tc-dropzone',this.dropzoneEnable&&$tw.utils.addEventListeners(r,[{name:'dragenter',handlerObject:this,handlerMethod:'handleDragEnterEvent'},{name:'dragover',handlerObject:this,handlerMethod:'handleDragOverEvent'},{name:'dragleave',handlerObject:this,handlerMethod:'handleDragLeaveEvent'},{name:'drop',handlerObject:this,handlerMethod:'handleDropEvent'},{name:'paste',handlerObject:this,handlerMethod:'handlePasteEvent'},{name:'dragend',handlerObject:this,handlerMethod:'handleDragEndEvent'}]),r.addEventListener('click',function(t){},!1),t.insertBefore(r,e),this.renderChildren(r,null),this.domNodes.push(r),this.currentlyEntered=[]},t.prototype.enterDrag=function(t){-1===this.currentlyEntered.indexOf(t.target)&&this.currentlyEntered.push(t.target),$tw.utils.addClass(this.domNodes[0],'tc-dragover')},t.prototype.leaveDrag=function(t){t=this.currentlyEntered.indexOf(t.target);-1!==t&&this.currentlyEntered.splice(t,1),0===this.currentlyEntered.length&&$tw.utils.removeClass(this.domNodes[0],'tc-dragover')},t.prototype.handleDragEnterEvent=function(t){if($tw.dragInProgress)return!1;this.enterDrag(t),t.preventDefault(),t.stopPropagation()},t.prototype.handleDragOverEvent=function(t){return-1===['TEXTAREA','INPUT'].indexOf(t.target.tagName)&&(!$tw.dragInProgress&&(t.preventDefault(),void(t.dataTransfer.dropEffect='copy')))},t.prototype.handleDragLeaveEvent=function(t){this.leaveDrag(t)},t.prototype.handleDragEndEvent=function(t){$tw.utils.removeClass(this.domNodes[0],'tc-dragover')},t.prototype.filterByContentTypes=function(t){var e,r=[],i=[];return $tw.utils.each(t,function(t){i.push(t.type)}),e=this.wiki.filterTiddlers(this.contentTypesFilter,this,this.wiki.makeTiddlerIterator(i)),$tw.utils.each(t,function(t){-1!==e.indexOf(t.type)&&r.push(t)}),r},t.prototype.readFileCallback=function(t){this.contentTypesFilter&&(t=this.filterByContentTypes(t)),t.length&&(this.dispatchEvent({type:'tm-import-tiddlers',param:JSON.stringify(t),autoOpenOnImport:this.autoOpenOnImport,importTitle:this.importTitle}),this.actions&&this.invokeActionString(this.actions,this,event,{importTitle:this.importTitle}))},t.prototype.handleDropEvent=function(t){function e(t){r.readFileCallback(t)}var r=this;if(this.leaveDrag(t),-1!==['TEXTAREA','INPUT'].indexOf(t.target.tagName))return!1;if($tw.dragInProgress)return!1;var r=this,i=t.dataTransfer;$tw.utils.removeClass(this.domNodes[0],'tc-dragover');var n=0;i.files&&(n=this.wiki.readFiles(i.files,{callback:e,deserializer:this.dropzoneDeserializer})),0===n&&$tw.utils.importDataTransfer(i,this.wiki.generateNewTitle('Untitled'),e),t.preventDefault(),t.stopPropagation()},t.prototype.handlePasteEvent=function(t){function r(t){i.readFileCallback(t)}var i=this;if(-1==['TEXTAREA','INPUT'].indexOf(t.target.tagName)&&!t.target.isContentEditable){for(var i=this,e=t.clipboardData.items,n=0;n<e.length;n++){var s,a=e[n];'file'===a.kind?this.wiki.readFile(a.getAsFile(),{callback:r,deserializer:this.dropzoneDeserializer}):'string'===a.kind&&(s=a.type,a.getAsString(function(t){var e={title:i.wiki.generateNewTitle('Untitled'),text:t,type:s};$tw.log.IMPORT&&console.log('Importing string \\''+t+'\\', type: \\''+s+'\\''),r([e])}))}t.stopPropagation(),t.preventDefault()}},t.prototype.execute=function(){this.dropzoneClass=this.getAttribute('class'),this.dropzoneDeserializer=this.getAttribute('deserializer'),this.dropzoneEnable='yes'===(this.getAttribute('enable')||'yes'),this.autoOpenOnImport=this.getAttribute('autoOpenOnImport'),this.importTitle=this.getAttribute('importTitle','$:/Import'),this.actions=this.getAttribute('actions'),this.contentTypesFilter=this.getAttribute('contentTypesFilter'),this.makeChildWidgets()},t.prototype.refresh=function(t){var e=this.computeAttributes();return 0<$tw.utils.count(e)?(this.refreshSelf(),!0):this.refreshChildren(t)},exports.dropzone=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/edit-binary.js":{"text":"!function(){'use strict';function e(e,t){this.initialise(e,t)}var t=require('$:/core/modules/widgets/widget.js').widget;(e.prototype=new t).render=function(e,t){this.parentDomNode=e,this.computeAttributes(),this.execute(),this.renderChildren(e,t)},e.prototype.execute=function(){var e=this.getAttribute('tiddler',this.getVariable('currentTiddler')),t=this.wiki.getTiddler(e),i=t.fields.type,r=t.fields.text,e={type:'element',tag:'p',children:[{type:'transclude',attributes:{tiddler:{type:'string',value:'$:/core/ui/BinaryWarning'}}}]},t={type:'element',tag:'a',attributes:{title:{type:'indirect',textReference:'!!draft.title'},download:{type:'indirect',textReference:'!!draft.title'}},children:[{type:'transclude',attributes:{tiddler:{type:'string',value:'$:/core/images/export-button'}}}]};r&&(t.attributes.href={type:'string',value:'data:'+i+';base64,'+r});t={type:'element',tag:'div',attributes:{class:{type:'string',value:'tc-binary-warning'}},children:[e,t]};this.makeChildWidgets([t])},e.prototype.refresh=function(e){return this.refreshChildren(e)},exports['edit-binary']=e}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/edit-bitmap.js":{"text":"!function(){'use strict';function i(t,e){this.initialise(t,e)}var t=require('$:/core/modules/widgets/widget.js').widget;(i.prototype=new t).render=function(t,e){this.editorOperations||(i.prototype.editorOperations={},$tw.modules.applyMethods('bitmapeditoroperation',this.editorOperations)),this.parentDomNode=t,this.computeAttributes(),this.execute(),this.toolbarNode=this.document.createElement('div'),this.toolbarNode.className='tc-editor-toolbar',t.insertBefore(this.toolbarNode,e),this.domNodes.push(this.toolbarNode),this.canvasDomNode=$tw.utils.domMaker('canvas',{document:this.document,class:'tc-edit-bitmapeditor',eventListeners:[{name:'touchstart',handlerObject:this,handlerMethod:'handleTouchStartEvent'},{name:'touchmove',handlerObject:this,handlerMethod:'handleTouchMoveEvent'},{name:'touchend',handlerObject:this,handlerMethod:'handleTouchEndEvent'},{name:'mousedown',handlerObject:this,handlerMethod:'handleMouseDownEvent'},{name:'mousemove',handlerObject:this,handlerMethod:'handleMouseMoveEvent'},{name:'mouseup',handlerObject:this,handlerMethod:'handleMouseUpEvent'}]}),this.setVariable('tv-bitmap-editor-width',this.canvasDomNode.width+'px'),this.setVariable('tv-bitmap-editor-height',this.canvasDomNode.height+'px'),this.renderChildren(this.toolbarNode,null),t.insertBefore(this.canvasDomNode,e),this.domNodes.push(this.canvasDomNode),$tw.browser&&this.loadCanvas(),this.addEventListeners([{type:'tm-edit-bitmap-operation',handler:'handleEditBitmapOperationMessage'}])},i.prototype.handleEditBitmapOperationMessage=function(t){var e=this.editorOperations[t.param];e&&e.call(this,t)},i.prototype.execute=function(){this.editTitle=this.getAttribute('tiddler',this.getVariable('currentTiddler')),this.makeChildWidgets()},i.prototype.refresh=function(t){return this.refreshChildren(t)},i.prototype.refreshToolbar=function(){this.setVariable('tv-bitmap-editor-width',this.canvasDomNode.width+'px'),this.setVariable('tv-bitmap-editor-height',this.canvasDomNode.height+'px'),$tw.utils.each(this.children,function(t){t.refreshSelf()})},i.prototype.loadCanvas=function(){var t=this.wiki.getTiddler(this.editTitle),e=new Image,i=this;e.onload=function(){i.initCanvas(i.canvasDomNode,e.width,e.height,e),i.currCanvas=i.document.createElement('canvas'),i.initCanvas(i.currCanvas,e.width,e.height,e),i.refreshToolbar()},e.onerror=function(){i.initCanvas(i.canvasDomNode,600,370),i.currCanvas=i.document.createElement('canvas'),i.initCanvas(i.currCanvas,600,370),i.refreshToolbar()},t&&t.fields.type&&t.fields.text?e.src='data:'+t.fields.type+';base64,'+t.fields.text:(e.width=600,e.height=370,e.onerror())},i.prototype.initCanvas=function(t,e,i,o){t.width=e,t.height=i;i=t.getContext('2d');o?i.drawImage(o,0,0):(i.fillStyle='#fff',i.fillRect(0,0,t.width,t.height))},i.prototype.changeCanvasSize=function(t,e){var i=this.document.createElement('canvas');this.initCanvas(i,t,e);var o=i.getContext('2d');o.drawImage(this.currCanvas,0,0),this.currCanvas=i,this.canvasDomNode.width=t,this.canvasDomNode.height=e,(o=this.canvasDomNode.getContext('2d')).drawImage(this.currCanvas,0,0)},i.prototype.rotateCanvasLeft=function(){var t=this.currCanvas.width,e=this.currCanvas.height,i=this.document.createElement('canvas'),o=e,a=t;this.initCanvas(i,o,a);var n=i.getContext('2d');n.save(),n.translate(o/2,a/2),n.rotate(-Math.PI/2),n.drawImage(this.currCanvas,-t/2,-e/2),n.restore(),this.currCanvas=i,this.canvasDomNode.width=o,this.canvasDomNode.height=a,(n=this.canvasDomNode.getContext('2d')).drawImage(this.currCanvas,0,0)},i.prototype.handleTouchStartEvent=function(t){return this.brushDown=!0,this.strokeStart(t.touches[0].clientX,t.touches[0].clientY),t.preventDefault(),t.stopPropagation(),!1},i.prototype.handleTouchMoveEvent=function(t){return this.brushDown&&this.strokeMove(t.touches[0].clientX,t.touches[0].clientY),t.preventDefault(),t.stopPropagation(),!1},i.prototype.handleTouchEndEvent=function(t){return this.brushDown&&(this.brushDown=!1,this.strokeEnd()),t.preventDefault(),t.stopPropagation(),!1},i.prototype.handleMouseDownEvent=function(t){return this.strokeStart(t.clientX,t.clientY),this.brushDown=!0,t.preventDefault(),t.stopPropagation(),!1},i.prototype.handleMouseMoveEvent=function(t){return!this.brushDown||(this.strokeMove(t.clientX,t.clientY),t.preventDefault(),t.stopPropagation(),!1)},i.prototype.handleMouseUpEvent=function(t){return!this.brushDown||(this.brushDown=!1,this.strokeEnd(),t.preventDefault(),t.stopPropagation(),!1)},i.prototype.adjustCoordinates=function(t,e){var i=this.canvasDomNode.getBoundingClientRect(),o=this.canvasDomNode.width/i.width;return{x:(t-i.left)*o,y:(e-i.top)*o}},i.prototype.strokeStart=function(t,e){this.stroke=[this.adjustCoordinates(t,e)]},i.prototype.strokeMove=function(t,e){var i,o=this.canvasDomNode.getContext('2d');for(this.stroke.push(this.adjustCoordinates(t,e)),o.drawImage(this.currCanvas,0,0),o.globalAlpha=parseFloat(this.wiki.getTiddlerText('$:/config/BitmapEditor/Opacity','1.0')),o.strokeStyle=this.wiki.getTiddlerText('$:/config/BitmapEditor/Colour','#ff0'),o.lineWidth=parseFloat(this.wiki.getTiddlerText('$:/config/BitmapEditor/LineWidth','3')),o.lineCap='round',o.lineJoin='round',o.beginPath(),o.moveTo(this.stroke[0].x,this.stroke[0].y),i=1;i<this.stroke.length-1;i++){var a=this.stroke[i],n=this.stroke[i-1],s=(a.x+n.x)/2,a=(a.y+n.y)/2;o.quadraticCurveTo(n.x,n.y,s,a)}o.stroke()},i.prototype.strokeEnd=function(){this.currCanvas.getContext('2d').drawImage(this.canvasDomNode,0,0),this.saveChanges()},i.prototype.saveChanges=function(){var t=this.wiki.getTiddler(this.editTitle)||new $tw.Tiddler({title:this.editTitle,type:'image/png'}),e=this.canvasDomNode.toDataURL(t.fields.type),i=e.indexOf(':'),o=e.indexOf(';'),a=e.indexOf(','),a={type:e.substring(i+1,o),text:e.substring(a+1)};this.wiki.addTiddler(new $tw.Tiddler(this.wiki.getModificationFields(),t,a,this.wiki.getCreationFields()))},exports['edit-bitmap']=i}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/edit-shortcut.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute(),this.inputNode=this.document.createElement('input'),this.shortcutClass&&(this.inputNode.className=this.shortcutClass),this.shortcutStyle&&this.inputNode.setAttribute('style',this.shortcutStyle),this.shortcutTooltip&&this.inputNode.setAttribute('title',this.shortcutTooltip),this.shortcutPlaceholder&&this.inputNode.setAttribute('placeholder',this.shortcutPlaceholder),this.shortcutAriaLabel&&this.inputNode.setAttribute('aria-label',this.shortcutAriaLabel),this.updateInputNode(),$tw.utils.addEventListeners(this.inputNode,[{name:'keydown',handlerObject:this,handlerMethod:'handleKeydownEvent'}]),t.insertBefore(this.inputNode,e),this.domNodes.push(this.inputNode),'yes'!==this.shortcutFocus&&'true'!==this.shortcutFocus||this.focus()},t.prototype.execute=function(){this.shortcutTiddler=this.getAttribute('tiddler'),this.shortcutField=this.getAttribute('field'),this.shortcutIndex=this.getAttribute('index'),this.shortcutPlaceholder=this.getAttribute('placeholder'),this.shortcutDefault=this.getAttribute('default',''),this.shortcutClass=this.getAttribute('class'),this.shortcutStyle=this.getAttribute('style'),this.shortcutTooltip=this.getAttribute('tooltip'),this.shortcutAriaLabel=this.getAttribute('aria-label'),this.shortcutFocus=this.getAttribute('focus')},t.prototype.updateInputNode=function(){var t;this.shortcutField?(t=this.wiki.getTiddler(this.shortcutTiddler))&&$tw.utils.hop(t.fields,this.shortcutField)?this.inputNode.value=t.getFieldString(this.shortcutField):this.inputNode.value=this.shortcutDefault:this.shortcutIndex?this.inputNode.value=this.wiki.extractTiddlerDataItem(this.shortcutTiddler,this.shortcutIndex,this.shortcutDefault):this.inputNode.value=this.wiki.getTiddlerText(this.shortcutTiddler,this.shortcutDefault)},t.prototype.handleKeydownEvent=function(t){if(t.keyCode&&-1===$tw.keyboardManager.getModifierKeys().indexOf(t.keyCode)){var e=$tw.keyboardManager.getPrintableShortcuts([{ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,keyCode:t.keyCode}]);return 0<e.length&&this.wiki.setText(this.shortcutTiddler,this.shortcutField,this.shortcutIndex,e[0]),t.preventDefault(),t.stopPropagation(),!0}return!1},t.prototype.focus=function(){this.inputNode.focus&&this.inputNode.select&&(this.inputNode.focus(),this.inputNode.select())},t.prototype.refresh=function(t){var e=this.computeAttributes();return e.tiddler||e.field||e.index||e.placeholder||e.default||e.class||e.style||e.tooltip||e['aria-label']||e.focus?(this.refreshSelf(),!0):!!t[this.shortcutTiddler]&&(this.updateInputNode(),!0)},exports['edit-shortcut']=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/edit-text.js":{"text":"!function(){'use strict';var e=require('$:/core/modules/editor/factory.js').editTextWidgetFactory,r=require('$:/core/modules/editor/engines/framed.js').FramedEngine,i=require('$:/core/modules/editor/engines/simple.js').SimpleEngine;exports['edit-text']=e(r,i)}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/edit.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute(),this.renderChildren(t,e)},t.prototype.execute=function(){this.editTitle=this.getAttribute('tiddler',this.getVariable('currentTiddler')),this.editField=this.getAttribute('field','text'),this.editIndex=this.getAttribute('index'),this.editClass=this.getAttribute('class'),this.editPlaceholder=this.getAttribute('placeholder'),this.editTabIndex=this.getAttribute('tabindex'),this.editFocus=this.getAttribute('focus',''),this.editCancelPopups=this.getAttribute('cancelPopups',''),this.editInputActions=this.getAttribute('inputActions'),this.editRefreshTitle=this.getAttribute('refreshTitle'),this.editAutoComplete=this.getAttribute('autocomplete'),this.editorType=this.getEditorType(),this.makeChildWidgets([{type:'edit-'+this.editorType,attributes:this.parseTreeNode.attributes,children:this.parseTreeNode.children}])},t.prototype.getEditorType=function(){'text'!==this.editField||(e=this.wiki.getTiddler(this.editTitle))&&(t=e.fields.type),t=t||'text/vnd.tiddlywiki';var t,e=this.wiki.getTiddlerText('$:/config/EditorTypeMappings/'+t);return e||(e=(t=$tw.config.contentTypeInfo[t])&&'base64'===t.encoding?'binary':'text'),e},t.prototype.refresh=function(t){var e=this.computeAttributes();return e.tiddler||e.field||e.index||e.tabindex||e.cancelPopups||e.inputActions||e.refreshTitle||e.autocomplete||t[this.editTitle]&&this.getEditorType()!==this.editorType?(this.refreshSelf(),!0):this.refreshChildren(t)},exports.edit=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/element.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.tag=this.parseTreeNode.tag,-1!==$tw.config.htmlUnsafeElements.indexOf(this.tag)&&(this.tag='safe-'+this.tag);var i,s=['h1','h2','h3','h4','h5','h6'].indexOf(this.tag);-1!==s&&(i=parseInt(this.getVariable('tv-adjust-heading-level','0'),10)||0,s=Math.min(Math.max(s+1+i,1),6),this.tag='h'+s);this.namespace={svg:'http://www.w3.org/2000/svg',math:'http://www.w3.org/1998/Math/MathML',body:'http://www.w3.org/1999/xhtml'}[this.tag],this.namespace?this.setVariable('namespace',this.namespace):this.namespace=this.getVariable('namespace',{defaultValue:'http://www.w3.org/1999/xhtml'});s=$tw.hooks.invokeHook('th-rendering-element',null,this);if(this.isReplaced=!!s,s)return this.makeChildWidgets(s),void this.renderChildren(this.parentDomNode,null);this.makeChildWidgets();s=this.document.createElementNS(this.namespace,this.tag);this.assignAttributes(s,{excludeEventAttributes:!0}),t.insertBefore(s,e),this.renderChildren(s,null),this.domNodes.push(s)},t.prototype.refresh=function(t){var e=this.computeAttributes(),e=0<$tw.utils.count(e);if(e){if(this.isReplaced)return this.refreshSelf();this.assignAttributes(this.domNodes[0],{excludeEventAttributes:!0})}return this.refreshChildren(t)||e},exports.element=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/encrypt.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute();var i=this.document.createTextNode(this.encryptedText);t.insertBefore(i,e),this.domNodes.push(i)},t.prototype.execute=function(){this.filter=this.getAttribute('filter','[!is[system]]');var t=this.wiki.filterTiddlers(this.filter),s={},n=this;$tw.utils.each(t,function(t){var e,i=n.wiki.getTiddler(t),r={};for(e in i.fields)r[e]=i.getFieldString(e);s[t]=r}),this.encryptedText=$tw.utils.htmlEncode($tw.crypto.encrypt(JSON.stringify(s)))},t.prototype.refresh=function(t){return!1},exports.encrypt=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/entity.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute();var i=this.getAttribute('entity',this.parseTreeNode.entity||''),i=this.document.createTextNode($tw.utils.entityDecode(i));t.insertBefore(i,e),this.domNodes.push(i)},t.prototype.execute=function(){},t.prototype.refresh=function(t){return!!this.computeAttributes().entity&&(this.refreshSelf(),!0)},exports.entity=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/eventcatcher.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){var a=this;this.parentDomNode=t,this.computeAttributes(),this.execute();var i=this.parseTreeNode.isBlock?'div':'span';this.elementTag&&-1===$tw.config.htmlUnsafeElements.indexOf(this.elementTag)&&(i=this.elementTag);var d=this.document.createElement(i);this.domNode=d,this.assignDomNodeClasses(),$tw.utils.each(this.types,function(r){d.addEventListener(r,function(t){var e,i=a.getAttribute('selector'),o=a.getAttribute('actions-'+r),s=t.target,n={};if(i){for(;!s.matches(i)&&s!==d;)s=s.parentNode;if(!s.matches(i))return!1;$tw.utils.each(s.attributes,function(t){n['dom-'+t.name]=t.value.toString()}),n['tv-popup-coords']='('+s.offsetLeft+','+s.offsetTop+','+s.offsetWidth+','+s.offsetHeight+')',n['tv-selectednode-posx']=s.offsetLeft.toString(),n['tv-selectednode-posy']=s.offsetTop.toString(),n['tv-selectednode-width']=s.offsetWidth.toString(),n['tv-selectednode-height']=s.offsetHeight.toString(),e=s.getBoundingClientRect(),n['event-fromselected-posx']=(t.clientX-e.left).toString(),n['event-fromselected-posy']=(t.clientY-e.top).toString(),e=a.domNode.getBoundingClientRect(),n['event-fromcatcher-posx']=(t.clientX-e.left).toString(),n['event-fromcatcher-posy']=(t.clientY-e.top).toString()}return!!o&&(n.modifier=$tw.keyboardManager.getEventModifierKeyDescriptor(t),'button'in t&&(0===t.button?n['event-mousebutton']='left':1===t.button?n['event-mousebutton']='middle':2===t.button&&(n['event-mousebutton']='right')),n['event-type']=t.type.toString(),'object'==typeof t.detail&&t.detail?$tw.utils.each(t.detail,function(t,e){n['event-detail-'+e]=t.toString()}):t.detail&&(n['event-detail']=t.detail.toString()),a.invokeActionString(o,a,t,n),t.preventDefault(),t.stopPropagation(),!0)},!1)}),t.insertBefore(d,e),this.renderChildren(d,null),this.domNodes.push(d)},t.prototype.execute=function(){this.types=this.getAttribute('events','').split(' '),this.elementTag=this.getAttribute('tag'),this.makeChildWidgets()},t.prototype.assignDomNodeClasses=function(){var t=this.getAttribute('class','').split(' ');t.push('tc-eventcatcher'),this.domNode.className=t.join(' ')},t.prototype.refresh=function(t){var e=this.computeAttributes();return e.events||e.tag?(this.refreshSelf(),!0):(e.class&&this.assignDomNodeClasses(),this.refreshChildren(t))},exports.eventcatcher=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/fieldmangler.js":{"text":"!function(){'use strict';function e(e,t){this.initialise(e,t)}var t=require('$:/core/modules/widgets/widget.js').widget;(e.prototype=new t).render=function(e,t){this.addEventListeners([{type:'tm-remove-field',handler:'handleRemoveFieldEvent'},{type:'tm-add-field',handler:'handleAddFieldEvent'},{type:'tm-remove-tag',handler:'handleRemoveTagEvent'},{type:'tm-add-tag',handler:'handleAddTagEvent'}]),this.parentDomNode=e,this.computeAttributes(),this.execute(),this.renderChildren(e,t)},e.prototype.execute=function(){this.mangleTitle=this.getAttribute('tiddler',this.getVariable('currentTiddler')),this.makeChildWidgets()},e.prototype.refresh=function(e){return this.computeAttributes().tiddler?(this.refreshSelf(),!0):this.refreshChildren(e)},e.prototype.handleRemoveFieldEvent=function(e){var t=this.wiki.getTiddler(this.mangleTitle),i={};return i[e.param]=void 0,this.wiki.addTiddler(new $tw.Tiddler(t,i)),!1},e.prototype.handleAddFieldEvent=function(e){function t(e,t){if(e=e.toLowerCase().trim(),$tw.utils.isValidFieldName(e))!t&&i&&(t=i.fields[e]),d[e]=t||'';else if(!r)return alert($tw.language.getString('InvalidFieldName',{variables:{fieldName:e}})),r=!0,0}var i=this.wiki.getTiddler(this.mangleTitle),d=this.wiki.getModificationFields(),r=!1;if(d.title=this.mangleTitle,'string'==typeof e.param&&t(e.param,''),'object'==typeof e.paramObject)for(var a in e.paramObject)t(a,e.paramObject[a]);return this.wiki.addTiddler(new $tw.Tiddler(i,d)),!1},e.prototype.handleRemoveTagEvent=function(e){var t=this.wiki.getTiddler(this.mangleTitle),i=this.wiki.getModificationFields();return t&&t.fields.tags&&(-1!==(e=t.fields.tags.indexOf(e.param))&&(i.tags=(t.fields.tags||[]).slice(0),i.tags.splice(e,1),0===i.tags.length&&(i.tags=void 0),this.wiki.addTiddler(new $tw.Tiddler(t,i)))),!1},e.prototype.handleAddTagEvent=function(e){var t,i=this.wiki.getTiddler(this.mangleTitle),d=this.wiki.getModificationFields();return i&&'string'==typeof e.param?''!==(t=e.param.trim())&&(d.tags=(i.fields.tags||[]).slice(0),$tw.utils.pushTop(d.tags,t),this.wiki.addTiddler(new $tw.Tiddler(i,d))):'string'==typeof e.param&&''!==e.param.trim()&&''!==this.mangleTitle.trim()&&((t=[]).push(e.param.trim()),this.wiki.addTiddler(new $tw.Tiddler({title:this.mangleTitle,tags:t},d))),!1},exports.fieldmangler=e}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/fields.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute();var i=this.document.createTextNode(this.text);t.insertBefore(i,e),this.domNodes.push(i)},t.prototype.execute=function(){this.tiddlerTitle=this.getAttribute('tiddler',this.getVariable('currentTiddler')),this.template=this.getAttribute('template'),this.sort='yes'===this.getAttribute('sort','yes'),this.sortReverse='yes'===this.getAttribute('sortReverse','no'),this.exclude=this.getAttribute('exclude'),this.include=this.getAttribute('include',null),this.stripTitlePrefix='yes'===this.getAttribute('stripTitlePrefix','no');var t=this.wiki.getTiddler(this.tiddlerTitle),e=this.exclude?this.exclude.split(' '):['text'],i=this.include?this.include.split(' '):null,s=[];if(this.template&&t){var r=[];if(i)for(var l=0;l<i.length;l++)t.fields[i[l]]&&r.push(i[l]);else for(var h in t.fields)-1===e.indexOf(h)&&r.push(h);this.sort&&r.sort(),this.sortReverse&&r.reverse();for(var u=0,d=r.length;u<d;u++){h=r[u];var o,n=this.template,c=t.getFieldString(h);this.stripTitlePrefix&&'title'===h&&((o=/^\\{[^\\}]+\\}(.+)/gm.exec(c))&&(c=o[1])),n=$tw.utils.replaceString(n,'$name$',h),n=$tw.utils.replaceString(n,'$value$',c),n=$tw.utils.replaceString(n,'$encoded_value$',$tw.utils.htmlEncode(c)),s.push(n)}}this.text=s.join('')},t.prototype.refresh=function(t){var e=this.computeAttributes();return!!(e.tiddler||e.template||e.exclude||e.include||e.sort||e.sortReverse||t[this.tiddlerTitle]||e.stripTitlePrefix)&&(this.refreshSelf(),!0)},exports.fields=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/image.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute();var i='img',s='',a=this.wiki.getTiddler(this.imageSource);if(a){if(this.wiki.isImageTiddler(this.imageSource)){var h=a.fields.type,r=a.fields.text,g=a.fields._canonical_uri;if(r)switch(h){case'application/pdf':i='embed',s='data:application/pdf;base64,'+r;break;case'image/svg+xml':s='data:image/svg+xml,'+encodeURIComponent(r);break;default:s='data:'+h+';base64,'+r}else if(g)switch(h){case'application/pdf':i='embed',s=g;break;case'image/svg+xml':default:s=g}else this.wiki.getTiddlerText(this.imageSource)}}else s=this.getVariable('tv-get-export-image-link',{params:[{name:'src',value:this.imageSource}],defaultValue:this.imageSource});a=this.document.createElement(i);a.setAttribute('src',s),this.imageClass&&a.setAttribute('class',this.imageClass),this.imageWidth&&a.setAttribute('width',this.imageWidth),this.imageHeight&&a.setAttribute('height',this.imageHeight),this.imageTooltip&&a.setAttribute('title',this.imageTooltip),this.imageAlt&&a.setAttribute('alt',this.imageAlt),t.insertBefore(a,e),this.domNodes.push(a)},t.prototype.execute=function(){this.imageSource=this.getAttribute('source'),this.imageWidth=this.getAttribute('width'),this.imageHeight=this.getAttribute('height'),this.imageClass=this.getAttribute('class'),this.imageTooltip=this.getAttribute('tooltip'),this.imageAlt=this.getAttribute('alt')},t.prototype.refresh=function(t){var e=this.computeAttributes();return!!(e.source||e.width||e.height||e.class||e.tooltip||t[this.imageSource])&&(this.refreshSelf(),!0)},exports.image=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/importvariables.js":{"text":"!function(){'use strict';function i(i,t){this.initialise(i,t)}var t=require('$:/core/modules/widgets/widget.js').widget;(i.prototype=new t).render=function(i,t){this.parentDomNode=i,this.computeAttributes(),this.execute(),this.renderChildren(i,t)},i.prototype.execute=function(i){var s=this;this.variables=new this.variablesConstructor,this.filter=this.getAttribute('filter'),this.tiddlerList=i||this.wiki.filterTiddlers(this.filter,this),$tw.utils.each(this.tiddlerList,function(i){i=s.wiki.parseTiddler(i);if(i)for(var t=i.tree[0];t&&'set'===t.type;){var e,r={type:'set',attributes:t.attributes,params:t.params,isMacroDefinition:t.isMacroDefinition};t.isMacroDefinition?((e=s.makeChildWidget(r)).computeAttributes(),e.execute(),$tw.utils.each(Object.keys(e.variables),function(i){s.variables[i]=e.variables[i]})):(s.children=[s.makeChildWidget(r)],s!=this&&(s.makeChildWidgets=function(){}),s=s.children[0]),t=t.children&&t.children[0]}}),s!=this?s.parseTreeNode.children=this.parseTreeNode.children:s.makeChildWidgets()},i.prototype.refresh=function(t){var e,i=this.computeAttributes(),r=this.wiki.filterTiddlers(this.getAttribute('filter'),this);return i.filter||!$tw.utils.isArrayEqual(this.tiddlerList,r)||(e=!1,r.forEach(function(i){t[i]&&(e=!0)}),e)?(this.removeChildDomNodes(),this.execute(r),this.renderChildren(this.parentDomNode,this.findNextSiblingDomNode()),!0):this.refreshChildren(t)},exports.importvariables=i}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/keyboard.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){var s=this;this.parentDomNode=t,this.computeAttributes(),this.execute();var i=this.parseTreeNode.isBlock?'div':'span';this.tag&&-1===$tw.config.htmlUnsafeElements.indexOf(this.tag)&&(i=this.tag);var r=this.document.createElement(i),i=(this.class||'').split(' ');i.push('tc-keyboard'),r.className=i.join(' '),r.addEventListener('keydown',function(t){if($tw.keyboardManager.checkKeyDescriptors(t,s.keyInfoArray)){var e=s.invokeActions(s,t);return s.actions&&s.invokeActionString(s.actions,s,t),s.dispatchMessage(t),(e||s.actions||s.message)&&(t.preventDefault(),t.stopPropagation()),!0}return!1},!1),t.insertBefore(r,e),this.renderChildren(r,null),this.domNodes.push(r)},t.prototype.dispatchMessage=function(t){this.dispatchEvent({type:this.message,param:this.param,tiddlerTitle:this.getVariable('currentTiddler')})},t.prototype.execute=function(){var e,s=this;this.actions=this.getAttribute('actions',''),this.message=this.getAttribute('message',''),this.param=this.getAttribute('param',''),this.key=this.getAttribute('key',''),this.tag=this.getAttribute('tag',''),this.keyInfoArray=$tw.keyboardManager.parseKeyDescriptors(this.key),this.class=this.getAttribute('class',''),'(('===this.key.substr(0,2)&&'))'===this.key.substr(-2,2)&&(this.shortcutTiddlers=[],e=this.key.substring(2,this.key.length-2),$tw.utils.each($tw.keyboardManager.lookupNames,function(t){s.shortcutTiddlers.push('$:/config/'+t+'/'+e)})),this.makeChildWidgets()},t.prototype.refresh=function(t){var e=this.computeAttributes();return e.message||e.param||e.key||e.class||e.tag?(this.refreshSelf(),!0):(this.shortcutTiddlers&&$tw.utils.hopArray(t,this.shortcutTiddlers)&&(this.keyInfoArray=$tw.keyboardManager.parseKeyDescriptors(this.key)),this.refreshChildren(t))},exports.keyboard=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/link.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute();var i=this.getVariable('tv-wikilinks'),s=!i||'no'!==i.trim(),i=!(this.hideMissingLinks&&this.isMissing&&!this.isShadow);s&&i?this.renderLink(t,e):(i=this.document.createElement('span'),t.insertBefore(i,e),this.renderChildren(i,null),this.domNodes.push(i))},t.prototype.renderLink=function(t,e){var i=this,s=this.linkTag;-1!==$tw.config.htmlUnsafeElements.indexOf(s)&&(s='a');var r=this.getVariable('namespace',{defaultValue:'http://www.w3.org/1999/xhtml'}),h=this.document.createElementNS(r,s),a=[];void 0===this.overrideClasses?(a.push('tc-tiddlylink'),this.isShadow&&a.push('tc-tiddlylink-shadow'),this.isMissing&&!this.isShadow?a.push('tc-tiddlylink-missing'):this.isMissing||a.push('tc-tiddlylink-resolves'),this.linkClasses&&a.push(this.linkClasses)):''!==this.overrideClasses&&a.push(this.overrideClasses),0<a.length&&h.setAttribute('class',a.join(' '));a=this.getVariable('tv-filter-export-link');n=a?this.wiki.filterTiddlers(a,this,function(t){t(i.wiki.getTiddler(i.to),i.to)})[0]:(n=(n=this.getVariable('tv-wikilink-template'))?n.trim():'#$uri_encoded$',n=$tw.utils.replaceString(n,'$uri_encoded$',encodeURIComponent(this.to)),$tw.utils.replaceString(n,'$uri_doubleencoded$',encodeURIComponent(encodeURIComponent(this.to)))),n=this.getVariable('tv-get-export-link',{params:[{name:'to',value:this.to}],defaultValue:n}),'a'===s&&(r='http://www.w3.org/2000/svg'===r?'http://www.w3.org/1999/xlink':void 0,h.setAttributeNS(r,'href',n)),this.tabIndex&&h.setAttribute('tabindex',this.tabIndex);var n=this.tooltip||this.getVariable('tv-wikilink-tooltip');n&&(n=this.wiki.renderText('text/plain','text/vnd.tiddlywiki',n,{parseAsInline:!0,variables:{currentTiddler:this.to},parentWidget:this}),h.setAttribute('title',n)),this['aria-label']&&h.setAttribute('aria-label',this['aria-label']),$tw.utils.addEventListeners(h,[{name:'click',handlerObject:this,handlerMethod:'handleClickEvent'}]),'yes'===this.draggable&&$tw.utils.makeDraggable({domNode:h,dragTiddlerFn:function(){return i.to},widget:this}),t.insertBefore(h,e),this.renderChildren(h,null),this.domNodes.push(h)},t.prototype.handleClickEvent=function(t){var e=this.domNodes[0].getBoundingClientRect();return this.dispatchEvent({type:'tm-navigate',navigateTo:this.to,navigateFromTitle:this.getVariable('storyTiddler'),navigateFromNode:this,navigateFromClientRect:{top:e.top,left:e.left,width:e.width,right:e.right,bottom:e.bottom,height:e.height},navigateSuppressNavigation:t.metaKey||t.ctrlKey||1===t.button,metaKey:t.metaKey,ctrlKey:t.ctrlKey,altKey:t.altKey,shiftKey:t.shiftKey,event:t}),this.domNodes[0].hasAttribute('href')&&t.preventDefault(),t.stopPropagation(),!1},t.prototype.execute=function(){var t;this.to=this.getAttribute('to',this.getVariable('currentTiddler')),this.tooltip=this.getAttribute('tooltip'),this['aria-label']=this.getAttribute('aria-label'),this.linkClasses=this.getAttribute('class'),this.overrideClasses=this.getAttribute('overrideClass'),this.tabIndex=this.getAttribute('tabindex'),this.draggable=this.getAttribute('draggable','yes'),this.linkTag=this.getAttribute('tag','a'),this.isMissing=!this.wiki.tiddlerExists(this.to),this.isShadow=this.wiki.isShadowTiddler(this.to),this.hideMissingLinks='no'===(this.getVariable('tv-show-missing-links')||'yes'),t=this.parseTreeNode.children&&0<this.parseTreeNode.children.length?this.parseTreeNode.children:[{type:'text',text:this.to}],this.makeChildWidgets(t)},t.prototype.refresh=function(t){var e=this.computeAttributes();return e.to||t[this.to]||e['aria-label']||e.tooltip?(this.refreshSelf(),!0):this.refreshChildren(t)},exports.link=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/linkcatcher.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.addEventListeners([{type:'tm-navigate',handler:'handleNavigateEvent'}]),this.parentDomNode=t,this.computeAttributes(),this.execute(),this.renderChildren(t,e)},t.prototype.execute=function(){this.catchTo=this.getAttribute('to'),this.catchMessage=this.getAttribute('message'),this.catchSet=this.getAttribute('set'),this.catchSetTo=this.getAttribute('setTo'),this.catchActions=this.getAttribute('actions'),this.makeChildWidgets(),this.executingActions=!1},t.prototype.refresh=function(t){var e=this.computeAttributes();return e.to||e.message||e.set||e.setTo?(this.refreshSelf(),!0):this.refreshChildren(t)},t.prototype.handleNavigateEvent=function(t){var e;return this.executingActions?this.parentWidget.dispatchEvent({type:'tm-navigate',param:t.navigateTo,navigateTo:t.navigateTo}):(this.catchTo&&this.wiki.setTextReference(this.catchTo,t.navigateTo,this.getVariable('currentTiddler')),this.catchMessage&&this.parentWidget&&this.parentWidget.dispatchEvent({type:this.catchMessage,param:t.navigateTo,navigateTo:t.navigateTo}),this.catchSet&&(e=this.wiki.getTiddler(this.catchSet),this.wiki.addTiddler(new $tw.Tiddler(e,{title:this.catchSet,text:this.catchSetTo}))),this.catchActions&&(this.executingActions=!0,e=$tw.keyboardManager.getEventModifierKeyDescriptor(t),this.invokeActionString(this.catchActions,this,t,{navigateTo:t.navigateTo,modifier:e}),this.executingActions=!1)),!1},exports.linkcatcher=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/list.js":{"text":"!function(){'use strict';function i(t,e){this.initialise(t,e)}var t=require('$:/core/modules/widgets/widget.js').widget;function e(t,e){this.initialise(t,e)}(i.prototype=new t).render=function(t,e){this.storyViews||(i.prototype.storyViews={},$tw.modules.applyMethods('storyview',this.storyViews)),this.parentDomNode=t,this.computeAttributes(),this.execute(),this.renderChildren(t,e);e=this.storyViews[this.storyViewName];this.storyViewName&&!e&&(e=this.storyViews.classic),e&&!this.document.isTiddlyWikiFakeDom?this.storyview=new e(this):this.storyview=null},i.prototype.execute=function(){this.template=this.getAttribute('template'),this.editTemplate=this.getAttribute('editTemplate'),this.variableName=this.getAttribute('variable','currentTiddler'),this.indexName=this.getAttribute('index'),this.storyViewName=this.getAttribute('storyview'),this.historyTitle=this.getAttribute('history'),this.list=this.getTiddlerList();var i=[],s=this;0===this.list.length?i=this.getEmptyMessage():$tw.utils.each(this.list,function(t,e){i.push(s.makeItemTemplate(t,e))}),this.makeChildWidgets(i),this.history=[]},i.prototype.getTiddlerList=function(){return this.wiki.filterTiddlers(this.getAttribute('filter','[!is[system]sort[title]]'),this)},i.prototype.getEmptyMessage=function(){var t=this.getAttribute('emptyMessage','');return''!==t&&(t=this.wiki.parseText('text/vnd.tiddlywiki',t,{parseAsInline:!0}))?t.tree:[]},i.prototype.makeItemTemplate=function(t,e){var i=this.wiki.getTiddler(t),s=i&&i.hasField('draft.of'),i=this.template;s&&this.editTemplate&&(i=this.editTemplate),i=i?[{type:'transclude',attributes:{tiddler:{type:'string',value:i}}}]:this.parseTreeNode.children&&0<this.parseTreeNode.children.length?this.parseTreeNode.children:[{type:'element',tag:this.parseTreeNode.isBlock?'div':'span',children:[{type:'link',attributes:{to:{type:'string',value:t}},children:[{type:'text',text:t}]}]}];i={type:'listitem',itemTitle:t,variableName:this.variableName,children:i};return this.indexName&&(i.index=e.toString(),i.indexName=this.indexName,i.isFirst=0===e,i.isLast=e===this.list.length-1),i},i.prototype.refresh=function(t){var e,i=this.computeAttributes();return this.storyview&&this.storyview.refreshStart&&this.storyview.refreshStart(t,i),i.filter||i.variable||i.index||i.template||i.editTemplate||i.emptyMessage||i.storyview||i.history?(this.refreshSelf(),e=!0):(e=this.handleListChanges(t),this.historyTitle&&t[this.historyTitle]&&this.handleHistoryChanges()),this.storyview&&this.storyview.refreshEnd&&this.storyview.refreshEnd(t,i),e},i.prototype.handleHistoryChanges=function(){for(var t=this.wiki.getTiddlerDataCached(this.historyTitle,[]),e=0;e<t.length&&e<this.history.length&&t[e].title===this.history[e].title;)e++;for(;e<t.length;)this.storyview&&this.storyview.navigateTo&&this.storyview.navigateTo(t[e]),e++;this.history=t},i.prototype.handleListChanges=function(t){var e=this.list;if(this.list=this.getTiddlerList(),0===this.list.length){if(0===e.length)return this.refreshChildren(t);for(s=this.children.length-1;0<=s;s--)this.removeListItem(s);var i=this.findNextSiblingDomNode();return this.makeChildWidgets(this.getEmptyMessage()),this.renderChildren(this.parentDomNode,i),!0}0===e.length&&(this.removeChildDomNodes(),this.children=[]);var s,r=!1;if(this.indexName)for(s=0;s<this.list.length;s++)r=r||!this.children[s]||this.children[s].parseTreeNode.itemTitle!==this.list[s]?(this.children[s]&&this.removeListItem(s),this.insertListItem(s,this.list[s]),!0):(n=this.children[s].refresh(t),r||n);else for(s=0;s<this.list.length;s++){var h=this.findListItem(s,this.list[s]);if(void 0===h)this.insertListItem(s,this.list[s]),r=!0;else{for(var o=h-1;s<=o;o--)this.removeListItem(o),r=!0;var n=this.children[s].refresh(t);r=r||n}}for(s=this.children.length-1;s>=this.list.length;s--)this.removeListItem(s),r=!0;return r},i.prototype.findListItem=function(t,e){for(;t<this.children.length;){if(this.children[t].parseTreeNode.itemTitle===e)return t;t++}},i.prototype.insertListItem=function(t,e){e=this.makeChildWidget(this.makeItemTemplate(e,t));e.parentDomNode=this.parentDomNode,this.children.splice(t,0,e);t=e.findNextSiblingDomNode();return e.render(this.parentDomNode,t),this.storyview&&this.storyview.insert&&this.storyview.insert(e),!0},i.prototype.removeListItem=function(t){var e=this.children[t];this.storyview&&this.storyview.remove?this.storyview.remove(e):e.removeChildDomNodes(),this.children.splice(t,1)},exports.list=i,(e.prototype=new t).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute(),this.renderChildren(t,e)},e.prototype.execute=function(){this.setVariable(this.parseTreeNode.variableName,this.parseTreeNode.itemTitle),this.parseTreeNode.indexName&&(this.setVariable(this.parseTreeNode.indexName,this.parseTreeNode.index),this.setVariable(this.parseTreeNode.indexName+'-first',this.parseTreeNode.isFirst?'yes':'no'),this.setVariable(this.parseTreeNode.indexName+'-last',this.parseTreeNode.isLast?'yes':'no')),this.makeChildWidgets()},e.prototype.refresh=function(t){return this.refreshChildren(t)},exports.listitem=e}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/log.js":{"text":"!function(){'use strict';exports.baseClass='action-log',exports.name='log',exports.constructor=function(t,e){this.initialise(t,e)},exports.prototype={},exports.prototype.render=function(t){Object.getPrototypeOf(Object.getPrototypeOf(this)).render.call(this,t),Object.getPrototypeOf(Object.getPrototypeOf(this)).log.call(this)}}();","type":"application/javascript","module-type":"widget-subclass"},"$:/core/modules/widgets/macrocall.js":{"text":"!function(){'use strict';function e(e,t){this.initialise(e,t)}var t=require('$:/core/modules/widgets/widget.js').widget;(e.prototype=new t).render=function(e,t){this.parentDomNode=e,this.computeAttributes(),this.execute(),this.renderChildren(e,t)},e.prototype.execute=function(){this.parseType=this.getAttribute('$type','text/vnd.tiddlywiki'),this.renderOutput=this.getAttribute('$output','text/html');var r=this.parseTreeNode.params?this.parseTreeNode.params.slice(0):[];$tw.utils.each(this.attributes,function(e,t){'$'!==t.charAt(0)&&r.push({name:t,value:e})});var e,i,t=this.parseTreeNode.name||this.getAttribute('$name'),s=this.getVariableInfo(t,{params:r}),a=s.text;e='text/html'===this.renderOutput?(t=this.parseTreeNode.isBlock?'blockParser':'inlineParser',s.srcVariable&&s.srcVariable[t]?e=s.srcVariable[t]:(e=this.wiki.parseText(this.parseType,a,{parseAsInline:!this.parseTreeNode.isBlock}),s.isCacheable&&s.srcVariable&&(s.srcVariable[t]=e)),e=e?e.tree:[],i={},$tw.utils.each(s.params,function(e){var t='__'+e.name+'__';i[t]={name:t,type:'string',value:e.value}}),[{type:'vars',attributes:i,children:e}]):'text/raw'===this.renderOutput?[{type:'text',text:a}]:[{type:'text',text:this.wiki.renderText('text/plain',this.parseType,a,{parentWidget:this})}],this.makeChildWidgets(e)},e.prototype.refresh=function(e){var t=this.computeAttributes();return 0<$tw.utils.count(t)?(this.refreshSelf(),!0):this.refreshChildren(e)},exports.macrocall=e}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/messagecatcher.js":{"text":"!function(){'use strict';function e(e,t){this.initialise(e,t)}var t=require('$:/core/modules/widgets/widget.js').widget;(e.prototype=new t).render=function(e,t){this.parentDomNode=e,this.computeAttributes(),this.execute(),this.messageType&&this.addEventListeners([{type:this.messageType,handler:'handleEvent'}]),this.renderChildren(e,null)},e.prototype.execute=function(){this.messageType=this.getAttribute('type'),this.messageActions=this.getAttribute('actions'),this.makeChildWidgets()},e.prototype.handleEvent=function(e){var t;return this.messageActions&&(t=function(e,i){i=i||'';var s={};return $tw.utils.each(e,function(e,t){-1!==['string','boolean','number'].indexOf(typeof e)&&(s[i+t]=e.toString())}),s},t=$tw.utils.extend({},t(e.paramObject,'event-paramObject-'),t(e,'event-'),{modifier:$tw.keyboardManager.getEventModifierKeyDescriptor(e)}),this.invokeActionString(this.messageActions,this,e,t)),!1},e.prototype.refresh=function(e){return this.computeAttributes().type?(this.refreshSelf(),!0):this.refreshChildren(e)},exports.messagecatcher=e}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/navigator.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.addEventListeners([{type:'tm-navigate',handler:'handleNavigateEvent'},{type:'tm-edit-tiddler',handler:'handleEditTiddlerEvent'},{type:'tm-delete-tiddler',handler:'handleDeleteTiddlerEvent'},{type:'tm-save-tiddler',handler:'handleSaveTiddlerEvent'},{type:'tm-cancel-tiddler',handler:'handleCancelTiddlerEvent'},{type:'tm-close-tiddler',handler:'handleCloseTiddlerEvent'},{type:'tm-close-all-tiddlers',handler:'handleCloseAllTiddlersEvent'},{type:'tm-close-other-tiddlers',handler:'handleCloseOtherTiddlersEvent'},{type:'tm-new-tiddler',handler:'handleNewTiddlerEvent'},{type:'tm-import-tiddlers',handler:'handleImportTiddlersEvent'},{type:'tm-perform-import',handler:'handlePerformImportEvent'},{type:'tm-fold-tiddler',handler:'handleFoldTiddlerEvent'},{type:'tm-fold-other-tiddlers',handler:'handleFoldOtherTiddlersEvent'},{type:'tm-fold-all-tiddlers',handler:'handleFoldAllTiddlersEvent'},{type:'tm-unfold-all-tiddlers',handler:'handleUnfoldAllTiddlersEvent'},{type:'tm-rename-tiddler',handler:'handleRenameTiddlerEvent'}]),this.parentDomNode=t,this.computeAttributes(),this.execute(),this.renderChildren(t,e)},t.prototype.execute=function(){this.storyTitle=this.getAttribute('story'),this.historyTitle=this.getAttribute('history'),this.setVariable('tv-story-list',this.storyTitle),this.setVariable('tv-history-list',this.historyTitle),this.story=new $tw.Story({wiki:this.wiki,storyTitle:this.storyTitle,historyTitle:this.historyTitle}),this.makeChildWidgets()},t.prototype.refresh=function(t){var e=this.computeAttributes();return e.story||e.history?(this.refreshSelf(),!0):this.refreshChildren(t)},t.prototype.getStoryList=function(){return this.storyTitle?this.wiki.getTiddlerList(this.storyTitle):null},t.prototype.saveStoryList=function(t){var e;this.storyTitle&&(e=this.wiki.getTiddler(this.storyTitle),this.wiki.addTiddler(new $tw.Tiddler({title:this.storyTitle},e,{list:t})))},t.prototype.removeTitleFromStory=function(t,e){if(t)for(var i=t.indexOf(e);-1!==i;)t.splice(i,1),i=t.indexOf(e)},t.prototype.replaceFirstTitleInStory=function(t,e,i){if(t){var r=t.indexOf(e);if(-1!==r)for(t[r]=i;-1!==(r=t.indexOf(e,r+1))&&t.splice(r,1),-1!==r;);else t.splice(0,0,i)}},t.prototype.addToStory=function(t,e){this.storyTitle&&this.story.addToStory(t,e,{openLinkFromInsideRiver:this.getAttribute('openLinkFromInsideRiver','top'),openLinkFromOutsideRiver:this.getAttribute('openLinkFromOutsideRiver','top')})},t.prototype.addToHistory=function(t,e){this.story.addToHistory(t,e,this.historyTitle)},t.prototype.handleNavigateEvent=function(t){return(t=$tw.hooks.invokeHook('th-navigating',t)).navigateTo&&(this.addToStory(t.navigateTo,t.navigateFromTitle),t.navigateSuppressNavigation||this.addToHistory(t.navigateTo,t.navigateFromClientRect)),!1},t.prototype.handleCloseTiddlerEvent=function(t){var e=t.param||t.tiddlerTitle,t=this.getStoryList();return this.removeTitleFromStory(t,e),this.saveStoryList(t),!1},t.prototype.handleCloseAllTiddlersEvent=function(t){return this.saveStoryList([]),!1},t.prototype.handleCloseOtherTiddlersEvent=function(t){t=t.param||t.tiddlerTitle;return this.saveStoryList([t]),!1},t.prototype.handleEditTiddlerEvent=function(t){if(!$tw.hooks.invokeHook('th-editing-tiddler',t))return!1;var e=this;var i,r,d=t.param||t.tiddlerTitle;if(r=d,e.wiki.isShadowTiddler(r)&&!e.wiki.tiddlerExists(r)&&(i=d,!confirm($tw.language.getString('ConfirmEditShadowTiddler',{variables:{title:i}}))))return!1;var s=this.makeDraftTiddler(d);if(!t.paramObject||'yes'!==t.paramObject.suppressNavigation){var l=s.fields.title,s=this.getStoryList();return this.removeTitleFromStory(s,l),this.replaceFirstTitleInStory(s,d,l),this.addToHistory(l,t.navigateFromClientRect),this.saveStoryList(s),!1}},t.prototype.handleDeleteTiddlerEvent=function(t){var e=t.param||t.tiddlerTitle,i=this.wiki.getTiddler(e),r=this.getStoryList(),d=i?i.fields['draft.of']:'',s=d?this.wiki.getTiddler(d):void 0;return!!i&&(t=d||e,(!this.wiki.getTiddler(d)&&''===(i.fields.text||'')||confirm($tw.language.getString('ConfirmDeleteTiddler',{variables:{title:t}})))&&(d&&(s&&$tw.hooks.invokeHook('th-deleting-tiddler',s),this.wiki.deleteTiddler(d),this.removeTitleFromStory(r,d)),$tw.hooks.invokeHook('th-deleting-tiddler',i),this.wiki.deleteTiddler(e),this.removeTitleFromStory(r,e),this.saveStoryList(r),$tw.rootWidget.dispatchEvent({type:'tm-auto-save-wiki'})),!1)},t.prototype.makeDraftTiddler=function(t){if(i=this.wiki.findDraft(t))return this.wiki.getTiddler(i);var e=this.wiki.getTiddler(t),i=this.generateDraftTitle(t),t=new $tw.Tiddler({text:''},e,{title:i,'draft.title':t,'draft.of':t},this.wiki.getModificationFields());return this.wiki.addTiddler(t),t},t.prototype.generateDraftTitle=function(t){return this.wiki.generateDraftTitle(t)},t.prototype.handleSaveTiddlerEvent=function(t){var e,i,r,d,s=t.param||t.tiddlerTitle,l=this.wiki.getTiddler(s),o=this.getStoryList();return l&&(e=(l.fields['draft.title']||'').trim(),i=(l.fields['draft.of']||'').trim(),e&&(d=!0,(r=i!==e)&&this.wiki.tiddlerExists(e)&&(d=confirm($tw.language.getString('ConfirmOverwriteTiddler',{variables:{title:e}}))),d&&(d=new $tw.Tiddler(this.wiki.getCreationFields(),l,{title:e,'draft.title':void 0,'draft.of':void 0},this.wiki.getModificationFields()),d=$tw.hooks.invokeHook('th-saving-tiddler',d,l),this.wiki.addTiddler(d),d='yes'===this.getAttribute('relinkOnRename','no').toLowerCase().trim(),r&&d&&this.wiki.tiddlerExists(i)&&this.wiki.relinkTiddler(i,e),this.wiki.deleteTiddler(s),r&&this.wiki.deleteTiddler(i),this.removeTitleFromStory(o,e),this.removeTitleFromStory(o,i),t.paramObject&&'yes'===t.paramObject.suppressNavigation||(this.replaceFirstTitleInStory(o,s,e),this.addToHistory(e,t.navigateFromClientRect),e!==this.storyTitle&&this.saveStoryList(o)),$tw.rootWidget.dispatchEvent({type:'tm-auto-save-wiki'})))),!1},t.prototype.handleCancelTiddlerEvent=function(t){var e,i,r=(t=$tw.hooks.invokeHook('th-cancelling-tiddler',t)).param||t.tiddlerTitle,d=this.wiki.getTiddler(r),s=d&&d.fields['draft.of'];return d&&s&&(e=!0,i=this.wiki.getTiddler(s),d=this.getStoryList(),this.wiki.isDraftModified(r)&&(e=confirm($tw.language.getString('ConfirmCancelTiddler',{variables:{title:r}}))),e&&(this.wiki.deleteTiddler(r),t.paramObject&&'yes'===t.paramObject.suppressNavigation||(i?(this.replaceFirstTitleInStory(d,r,s),this.addToHistory(s,t.navigateFromClientRect)):this.removeTitleFromStory(d,r),this.saveStoryList(d)))),!1},t.prototype.handleNewTiddlerEvent=function(t){t=$tw.hooks.invokeHook('th-new-tiddler',t);var e,i,r,d,s,l=this.getStoryList();'string'==typeof t.param&&(e=this.wiki.getTiddler(t.param),r=this.wiki.generateNewTitle(t.param||$tw.language.getString('DefaultNewTiddlerTitle'))),'object'==typeof t.paramObject&&(i=t.paramObject),'object'==typeof t.param&&(i=t.param),i&&i.title&&(r=i.title);var o=$tw.utils.extend({},i);Object.keys(o).forEach(function(t){''===o[t]&&delete o[t]}),r=r||this.wiki.generateNewTitle($tw.language.getString('DefaultNewTiddlerTitle'));var n=[];(s=(d=this.wiki.findDraft(r))?this.wiki.getTiddler(d):(d=this.generateDraftTitle(r),this.wiki.getTiddler(r)))&&s.fields.tags&&$tw.utils.pushTop(n,s.fields.tags),i&&i.tags&&(n=$tw.utils.pushTop(n,$tw.utils.parseStringArray(i.tags))),e&&e.fields.tags&&(n=$tw.utils.pushTop(n,e.fields.tags));n=new $tw.Tiddler({text:'','draft.title':r},e,i,this.wiki.getCreationFields(),s,o,{title:d,'draft.of':r,tags:n},this.wiki.getModificationFields());return this.wiki.addTiddler(n),l&&-1===l.indexOf(d)&&(-1===(t=l.indexOf(t.navigateFromTitle))&&(t='bottom'===this.getAttribute('openLinkFromOutsideRiver','top')?l.length-1:t),l.splice(t+1,0,d)),l&&-1!==l.indexOf(r)&&l.splice(l.indexOf(r),1),this.saveStoryList(l),this.addToHistory(d),!1},t.prototype.handleImportTiddlersEvent=function(t){var e=[];try{e=JSON.parse(t.param)}catch(t){}var i=t.importTitle||'$:/Import',r=this.wiki.getTiddler(i),d=this.wiki.getTiddlerData(i,{}),s=new Object({title:i,type:'application/json','plugin-type':'import',status:'pending'}),l=[];d.tiddlers=d.tiddlers||{},$tw.utils.each(e,function(t){t.title=$tw.utils.trim(t.title);var e=t.title;e&&(l.push(e),d.tiddlers[e]=t)});var o=this.wiki.invokeUpgraders(l,d.tiddlers);return $tw.utils.each(o,function(t,e){s['message-'+e]=t}),$tw.utils.each(d.tiddlers,function(t,e){0===$tw.utils.count(t)&&(s['selection-'+e]='unchecked',s['suppressed-'+e]='yes')}),s.text=JSON.stringify(d,null,$tw.config.preferences.jsonSpaces),this.wiki.addTiddler(new $tw.Tiddler(r,s)),'no'!==(t.autoOpenOnImport||this.getVariable('tv-auto-open-on-import'))&&(o=[],(r=this.getStoryList())&&-1===r.indexOf(i)&&r.unshift(i),o.push(i),this.saveStoryList(r),this.addToHistory(o)),!1},t.prototype.handlePerformImportEvent=function(t){var i=this,r=this.wiki.getTiddler(t.param),e=this.wiki.getTiddlerDataCached(t.param,{tiddlers:{}}),d=[];d.push($tw.language.getString('Import/Imported/Hint')+'\\n'),$tw.utils.each(e.tiddlers,function(t){var e=t.title;e&&r&&'unchecked'!==r.fields['selection-'+e]&&(t=$tw.utils.hop(r.fields,['rename-'+e])?new $tw.Tiddler(t,{title:r.fields['rename-'+e]}):new $tw.Tiddler(t),t=$tw.hooks.invokeHook('th-importing-tiddler',t),i.wiki.addTiddler(t),d.push('# [['+t.fields.title+']]'))}),this.wiki.addTiddler(new $tw.Tiddler({title:t.param,text:d.join('\\n'),status:'complete'})),this.addToHistory([t.param]),$tw.rootWidget.dispatchEvent({type:'tm-auto-save-wiki'})},t.prototype.handleFoldTiddlerEvent=function(t){var e=t.paramObject||{};e.foldedState&&(t='show'===this.wiki.getTiddlerText(e.foldedState,'show')?'hide':'show',this.wiki.setText(e.foldedState,'text',null,t))},t.prototype.handleFoldOtherTiddlersEvent=function(e){var i=this,r=(e.paramObject||{}).foldedStatePrefix;$tw.utils.each(this.getStoryList(),function(t){i.wiki.setText(r+t,'text',null,e.param===t?'show':'hide')})},t.prototype.handleFoldAllTiddlersEvent=function(t){var e=this,i=(t.paramObject||{}).foldedStatePrefix||'$:/state/folded/';$tw.utils.each(this.getStoryList(),function(t){e.wiki.setText(i+t,'text',null,'hide')})},t.prototype.handleUnfoldAllTiddlersEvent=function(t){var e=this,i=(t.paramObject||{}).foldedStatePrefix;$tw.utils.each(this.getStoryList(),function(t){e.wiki.setText(i+t,'text',null,'show')})},t.prototype.handleRenameTiddlerEvent=function(t){var e={},i=t.paramObject||{},r=i.from||t.tiddlerTitle,t=i.to;e.dontRenameInTags='false'===i.renameInTags||'no'===i.renameInTags,e.dontRenameInLists='false'===i.renameInLists||'no'===i.renameInLists,this.wiki.renameTiddler(r,t,e)},exports.navigator=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/password.js":{"text":"!function(){'use strict';function e(e,t){this.initialise(e,t)}var t=require('$:/core/modules/widgets/widget.js').widget;(e.prototype=new t).render=function(e,t){this.parentDomNode=e,this.computeAttributes(),this.execute();var s=$tw.browser&&$tw.utils.getPassword(this.passwordName)||'',r=this.document.createElement('input');r.setAttribute('type','password'),r.setAttribute('value',s),$tw.utils.addEventListeners(r,[{name:'change',handlerObject:this,handlerMethod:'handleChangeEvent'}]),e.insertBefore(r,t),this.renderChildren(r,null),this.domNodes.push(r)},e.prototype.handleChangeEvent=function(e){var t=this.domNodes[0].value;return $tw.utils.savePassword(this.passwordName,t)},e.prototype.execute=function(){this.passwordName=this.getAttribute('name',''),this.makeChildWidgets()},e.prototype.refresh=function(e){return this.computeAttributes().name?(this.refreshSelf(),!0):this.refreshChildren(e)},exports.password=e}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/qualify.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute(),this.renderChildren(t,e)},t.prototype.execute=function(){this.qualifyName=this.getAttribute('name'),this.qualifyTitle=this.getAttribute('title'),this.qualifyName&&this.setVariable(this.qualifyName,this.qualifyTitle+'-'+this.getStateQualifier()),this.makeChildWidgets()},t.prototype.refresh=function(t){var e=this.computeAttributes();return e.name||e.title?(this.refreshSelf(),!0):this.refreshChildren(t)},exports.qualify=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/radio.js":{"text":"!function(){'use strict';function t(t,i){this.initialise(t,i)}var i=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new i).render=function(t,i){this.parentDomNode=t,this.computeAttributes(),this.execute();var e=this.getValue()===this.radioValue;this.labelDomNode=this.document.createElement('label'),this.labelDomNode.setAttribute('class','tc-radio '+this.radioClass+(e?' tc-radio-selected':'')),this.inputDomNode=this.document.createElement('input'),this.inputDomNode.setAttribute('type','radio'),e&&(this.inputDomNode.checked=!0),'yes'===this.isDisabled&&this.inputDomNode.setAttribute('disabled',!0),this.labelDomNode.appendChild(this.inputDomNode),this.spanDomNode=this.document.createElement('span'),this.labelDomNode.appendChild(this.spanDomNode),$tw.utils.addEventListeners(this.inputDomNode,[{name:'change',handlerObject:this,handlerMethod:'handleChangeEvent'}]),t.insertBefore(this.labelDomNode,i),this.renderChildren(this.spanDomNode,null),this.domNodes.push(this.labelDomNode)},t.prototype.getValue=function(){var t=this.wiki.getTiddler(this.radioTitle),t=t?this.radioIndex?this.wiki.extractTiddlerDataItem(this.radioTitle,this.radioIndex):t.getFieldString(this.radioField):this.radioDefault;return t},t.prototype.setValue=function(){var t,i;this.radioIndex?this.wiki.setText(this.radioTitle,'',this.radioIndex,this.radioValue):(t=this.wiki.getTiddler(this.radioTitle),(i={})[this.radioField]=this.radioValue,this.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),{title:this.radioTitle},t,i,this.wiki.getModificationFields())))},t.prototype.handleChangeEvent=function(t){this.inputDomNode.checked&&this.setValue(),this.radioActions&&this.invokeActionString(this.radioActions,this,t,{actionValue:this.radioValue})},t.prototype.execute=function(){this.radioTitle=this.getAttribute('tiddler',this.getVariable('currentTiddler')),this.radioField=this.getAttribute('field','text'),this.radioIndex=this.getAttribute('index'),this.radioValue=this.getAttribute('value'),this.radioClass=this.getAttribute('class',''),this.radioDefault=this.getAttribute('default'),this.isDisabled=this.getAttribute('disabled','no'),this.radioActions=this.getAttribute('actions',''),this.makeChildWidgets()},t.prototype.refresh=function(t){var i=this.computeAttributes();return 0<$tw.utils.count(i)?(this.refreshSelf(),!0):(t[this.radioTitle]&&(this.inputDomNode.checked=this.getValue()===this.radioValue),this.refreshChildren(t))},exports.radio=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/range.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute(),this.inputDomNode=this.document.createElement('input'),this.inputDomNode.setAttribute('type','range'),this.inputDomNode.setAttribute('class',this.elementClass),this.minValue&&this.inputDomNode.setAttribute('min',this.minValue),this.maxValue&&this.inputDomNode.setAttribute('max',this.maxValue),this.increment&&this.inputDomNode.setAttribute('step',this.increment),'yes'===this.isDisabled&&this.inputDomNode.setAttribute('disabled',!0),this.inputDomNode.value=this.getValue(),$tw.utils.addEventListeners(this.inputDomNode,[{name:'mousedown',handlerObject:this,handlerMethod:'handleMouseDownEvent'},{name:'mouseup',handlerObject:this,handlerMethod:'handleMouseUpEvent'},{name:'change',handlerObject:this,handlerMethod:'handleChangeEvent'},{name:'input',handlerObject:this,handlerMethod:'handleInputEvent'}]),t.insertBefore(this.inputDomNode,e),this.domNodes.push(this.inputDomNode)},t.prototype.getValue=function(){var t=this.wiki.getTiddler(this.tiddlerTitle),e=this.tiddlerField,i=this.defaultValue;return t&&(i=this.tiddlerIndex?this.wiki.extractTiddlerDataItem(t,this.tiddlerIndex,this.defaultValue):$tw.utils.hop(t.fields,e)?t.fields[e]||'':this.defaultValue),i},t.prototype.getActionVariables=function(t){t=t||{};var e=this.startValue!==this.inputDomNode.value?'yes':'no';return $tw.utils.extend({actionValue:this.inputDomNode.value,actionValueHasChanged:e},t)},t.prototype.handleMouseDownEvent=function(t){var e;this.mouseDown=!0,this.startValue=this.inputDomNode.value,this.handleEvent(t),this.actionsMouseDown&&(e=this.getActionVariables(),this.invokeActionString(this.actionsMouseDown,this,t,e))},t.prototype.handleMouseUpEvent=function(t){var e;this.mouseDown=!1,this.handleEvent(t),this.actionsMouseUp&&(e=this.getActionVariables(),this.invokeActionString(this.actionsMouseUp,this,t,e)),$tw.browser.isIE&&this.startValue!==this.inputDomNode.value&&(this.handleChangeEvent(t),this.startValue=this.inputDomNode.value)},t.prototype.handleChangeEvent=function(t){this.mouseDown&&this.handleInputEvent(t)},t.prototype.handleInputEvent=function(t){var e;this.handleEvent(t),this.actionsInput&&(e=this.getActionVariables({actionValueHasChanged:'yes'}),this.invokeActionString(this.actionsInput,this,t,e))},t.prototype.handleEvent=function(t){this.getValue()!==this.inputDomNode.value&&(this.tiddlerIndex?this.wiki.setText(this.tiddlerTitle,'',this.tiddlerIndex,this.inputDomNode.value):this.wiki.setText(this.tiddlerTitle,this.tiddlerField,null,this.inputDomNode.value))},t.prototype.execute=function(){this.mouseUp=!0,this.tiddlerTitle=this.getAttribute('tiddler',this.getVariable('currentTiddler')),this.tiddlerField=this.getAttribute('field','text'),this.tiddlerIndex=this.getAttribute('index'),this.minValue=this.getAttribute('min'),this.maxValue=this.getAttribute('max'),this.increment=this.getAttribute('increment'),this.defaultValue=this.getAttribute('default',''),this.elementClass=this.getAttribute('class',''),this.isDisabled=this.getAttribute('disabled','no'),this.actionsMouseDown=this.getAttribute('actionsStart',''),this.actionsMouseUp=this.getAttribute('actionsStop',''),this.actionsInput=this.getAttribute('actions',''),this.makeChildWidgets()},t.prototype.refresh=function(t){var e=this.computeAttributes();if(0<$tw.utils.count(e))return this.refreshSelf(),!0;var i=!1;return t[this.tiddlerTitle]&&(e=this.getValue(),this.inputDomNode.value!==e&&(this.inputDomNode.value=e),i=!0),this.refreshChildren(t)||i},exports.range=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/raw.js":{"text":"!function(){'use strict';function e(e,t){this.initialise(e,t)}var t=require('$:/core/modules/widgets/widget.js').widget;(e.prototype=new t).render=function(e,t){this.parentDomNode=e,this.execute();var r=this.document.createElement('div');r.innerHTML=this.parseTreeNode.html,e.insertBefore(r,t),this.domNodes.push(r)},e.prototype.execute=function(){},e.prototype.refresh=function(e){return!1},exports.raw=e}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/reveal.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute();var i=this.parseTreeNode.isBlock?'div':'span';this.revealTag&&-1===$tw.config.htmlUnsafeElements.indexOf(this.revealTag)&&(i=this.revealTag);i=this.document.createElement(i);this.domNode=i,this.assignDomNodeClasses(),this.style&&i.setAttribute('style',this.style),t.insertBefore(i,e),this.renderChildren(i,null),!i.isTiddlyWikiFakeDom&&'popup'===this.type&&this.isOpen&&(this.positionPopup(i),$tw.utils.addClass(i,'tc-popup')),this.isOpen||i.setAttribute('hidden','true'),this.domNodes.push(i)},t.prototype.positionPopup=function(t){var e,i;switch(t.style.position='absolute',t.style.zIndex='1000',this.position){case'left':e=this.popup.left-t.offsetWidth,i=this.popup.top;break;case'above':e=this.popup.left,i=this.popup.top-t.offsetHeight;break;case'aboveright':e=this.popup.left+this.popup.width,i=this.popup.top+this.popup.height-t.offsetHeight;break;case'belowright':e=this.popup.left+this.popup.width,i=this.popup.top+this.popup.height;break;case'right':e=this.popup.left+this.popup.width,i=this.popup.top;break;case'belowleft':e=this.popup.left+this.popup.width-t.offsetWidth,i=this.popup.top+this.popup.height;break;case'aboveleft':e=this.popup.left-t.offsetWidth,i=this.popup.top-t.offsetHeight;break;default:e=this.popup.left,i=this.popup.top+this.popup.height}this.positionAllowNegative||(e=Math.max(0,e),i=Math.max(0,i)),t.style.left=e+'px',t.style.top=i+'px'},t.prototype.execute=function(){this.state=this.getAttribute('state'),this.revealTag=this.getAttribute('tag'),this.type=this.getAttribute('type'),this.text=this.getAttribute('text'),this.position=this.getAttribute('position'),this.positionAllowNegative='yes'===this.getAttribute('positionAllowNegative'),this.style=this.getAttribute('style',''),this.default=this.getAttribute('default',''),this.animate=this.getAttribute('animate','no'),this.retain=this.getAttribute('retain','no'),this.openAnimation='no'===this.animate?void 0:'open',this.closeAnimation='no'===this.animate?void 0:'close',this.updatePopupPosition='yes'===this.getAttribute('updatePopupPosition','no'),this.stateTiddlerTitle=this.state,this.stateTitle=this.getAttribute('stateTitle'),this.stateField=this.getAttribute('stateField'),this.stateIndex=this.getAttribute('stateIndex'),this.readState();var t=this.isOpen?this.parseTreeNode.children:[];this.hasChildNodes=this.isOpen,this.makeChildWidgets(t)},t.prototype.readState=function(){var t,e,i=this.default;switch(null===(e=this.stateTitle?(t=this.wiki.getTiddler(this.stateTitle),this.stateField?t&&t.getFieldString(this.stateField)||i:this.stateIndex?t&&this.wiki.extractTiddlerDataItem(this.stateTitle,this.stateIndex)||i:t&&this.wiki.getTiddlerText(this.stateTitle)||i):this.stateTiddlerTitle?this.wiki.getTextReference(this.state,this.default,this.getVariable('currentTiddler')):this.default)&&(e=this.default),this.type){case'popup':this.readPopupState(e);break;case'match':this.isOpen=this.text===e;break;case'nomatch':this.isOpen=this.text!==e;break;case'lt':this.isOpen=!!(this.compareStateText(e)<0);break;case'gt':this.isOpen=!!(0<this.compareStateText(e));break;case'lteq':this.isOpen=!(0<this.compareStateText(e));break;case'gteq':this.isOpen=!(this.compareStateText(e)<0)}},t.prototype.compareStateText=function(t){return t.localeCompare(this.text,void 0,{numeric:!0,sensitivity:'case'})},t.prototype.readPopupState=function(t){t=/^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/.exec(t);t?(this.isOpen=!0,this.popup={left:parseFloat(t[1]),top:parseFloat(t[2]),width:parseFloat(t[3]),height:parseFloat(t[4])}):this.isOpen=!1},t.prototype.assignDomNodeClasses=function(){var t=this.getAttribute('class','').split(' ');t.push('tc-reveal'),this.domNode.className=t.join(' ')},t.prototype.refresh=function(t){var e=this.computeAttributes();if(e.state||e.type||e.text||e.position||e.positionAllowNegative||e.default||e.animate||e.stateTitle||e.stateField||e.stateIndex)return this.refreshSelf(),!0;var i=this.isOpen;if(this.readState(),this.isOpen!==i){if('yes'!==this.retain)return this.refreshSelf(),!0;this.updateState()}else'popup'===this.type&&this.updatePopupPosition&&(t[this.state]||t[this.stateTitle])&&this.positionPopup(this.domNode);return e.style&&(this.domNode.style=this.getAttribute('style','')),e.class&&this.assignDomNodeClasses(),this.refreshChildren(t)},t.prototype.updateState=function(){var t=this;this.readState();var e=this.domNodes[0];this.isOpen&&!this.hasChildNodes&&(this.hasChildNodes=!0,this.makeChildWidgets(this.parseTreeNode.children),this.renderChildren(e,null)),!e.isTiddlyWikiFakeDom&&'popup'===this.type&&this.isOpen&&(this.positionPopup(e),$tw.utils.addClass(e,'tc-popup')),this.isOpen?(e.removeAttribute('hidden'),$tw.anim.perform(this.openAnimation,e)):$tw.anim.perform(this.closeAnimation,e,{callback:function(){t.readState(),t.isOpen||e.setAttribute('hidden','true')}})},exports.reveal=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/scrollable.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).cancelScroll=function(){this.idRequestFrame&&(this.cancelAnimationFrame.call(window,this.idRequestFrame),this.idRequestFrame=null)},t.prototype.handleScrollEvent=function(t){return this.outerDomNode.scrollWidth<=this.outerDomNode.offsetWidth&&this.outerDomNode.scrollHeight<=this.outerDomNode.offsetHeight&&'yes'===this.fallthrough||(t.paramObject&&t.paramObject.selector?this.scrollSelectorIntoView(null,t.paramObject.selector):this.scrollIntoView(t.target),!1)},t.prototype.scrollIntoView=function(t){var e=$tw.utils.getAnimationDuration(),o=t?t.ownerDocument.defaultView:window;this.cancelScroll(),this.startTime=Date.now();var i,r,n={x:this.outerDomNode.scrollLeft,y:this.outerDomNode.scrollTop},s=this.outerDomNode.getBoundingClientRect(),t=t.getBoundingClientRect(),s={left:t.left+n.x-s.left,top:t.top+n.y-s.top,width:t.width,height:t.height},t=function(t,e,o,i){return o<=t&&t+e<=o+i?o:t<=o?t:e<i&&o<t+e-i?t+e-i:o<t?t:o},l=t(s.left,s.width,n.x,this.outerDomNode.offsetWidth),a=t(s.top,s.height,n.y,this.outerDomNode.offsetHeight);l===n.x&&a===n.y||(i=this,(r=function(){var t=e<=0?1:(Date.now()-i.startTime)/e;1<=t&&(i.cancelScroll(),t=1),t=$tw.utils.slowInSlowOut(t),i.outerDomNode.scrollLeft=n.x+(l-n.x)*t,i.outerDomNode.scrollTop=n.y+(a-n.y)*t,t<1&&(i.idRequestFrame=i.requestAnimationFrame.call(o,r))})())},t.prototype.scrollSelectorIntoView=function(t,e,o){e=(t=t||document.body).querySelector(e);e&&this.scrollIntoView(e,o)},t.prototype.render=function(t,e){this.scaleFactor=1,this.addEventListeners([{type:'tm-scroll',handler:'handleScrollEvent'}]),$tw.browser&&(this.requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},this.cancelAnimationFrame=window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.webkitCancelRequestAnimationFrame||window.mozCancelAnimationFrame||window.mozCancelRequestAnimationFrame||function(t){window.clearTimeout(t)}),this.parentDomNode=t,this.computeAttributes(),this.execute(),this.outerDomNode=this.document.createElement('div'),$tw.utils.setStyle(this.outerDomNode,[{overflowY:'auto'},{overflowX:'auto'},{webkitOverflowScrolling:'touch'}]),this.innerDomNode=this.document.createElement('div'),this.outerDomNode.appendChild(this.innerDomNode),this.outerDomNode.className=this.class||'',t.insertBefore(this.outerDomNode,e),this.renderChildren(this.innerDomNode,null),this.domNodes.push(this.outerDomNode)},t.prototype.execute=function(){this.fallthrough=this.getAttribute('fallthrough','yes'),this.class=this.getAttribute('class'),this.makeChildWidgets()},t.prototype.refresh=function(t){return this.computeAttributes().class?(this.refreshSelf(),!0):this.refreshChildren(t)},exports.scrollable=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/select.js":{"text":"!function(){'use strict';function e(e,t){this.initialise(e,t)}var t=require('$:/core/modules/widgets/widget.js').widget;(e.prototype=new t).render=function(e,t){this.parentDomNode=e,this.computeAttributes(),this.execute(),this.renderChildren(e,t),this.setSelectValue(),$tw.utils.addEventListeners(this.getSelectDomNode(),[{name:'change',handlerObject:this,handlerMethod:'handleChangeEvent'}])},e.prototype.handleChangeEvent=function(e){var t;t=0==this.selectMultiple?this.getSelectDomNode().value:(t=this.getSelectValues(),$tw.utils.stringifyList(t)),this.wiki.setText(this.selectTitle,this.selectField,this.selectIndex,t),this.selectActions&&this.invokeActionString(this.selectActions,this,e)},e.prototype.setSelectValue=function(){var e=this.selectDefault;if(this.selectIndex?e=this.wiki.extractTiddlerDataItem(this.selectTitle,this.selectIndex,e):(l=this.wiki.getTiddler(this.selectTitle))?'text'===this.selectField?e=this.wiki.getTiddlerText(this.selectTitle):$tw.utils.hop(l.fields,this.selectField)&&(e=l.getFieldString(this.selectField)):'title'===this.selectField&&(e=this.selectTitle),this.selectMultiple){e=void 0===e?'':e;for(var t=this.getSelectDomNode(),i=Array.isArray(e)?e:$tw.utils.parseStringArray(e),s=0;s<t.children.length;s++)t.children[s].selected=-1!==i.indexOf(t.children[s].value)}else{var l=this.getSelectDomNode();l.value!==e&&(l.value=e)}},e.prototype.getSelectDomNode=function(){return this.children[0].domNodes[0]},e.prototype.getSelectValues=function(){for(var e,t=this.getSelectDomNode(),i=[],s=t&&t.options,l=0;l<s.length;l++)(e=s[l]).selected&&i.push(e.value||e.text);return i},e.prototype.execute=function(){this.selectActions=this.getAttribute('actions'),this.selectTitle=this.getAttribute('tiddler',this.getVariable('currentTiddler')),this.selectField=this.getAttribute('field','text'),this.selectIndex=this.getAttribute('index'),this.selectClass=this.getAttribute('class'),this.selectDefault=this.getAttribute('default'),this.selectMultiple=this.getAttribute('multiple',!1),this.selectSize=this.getAttribute('size'),this.selectTooltip=this.getAttribute('tooltip');var e={type:'element',tag:'select',children:this.parseTreeNode.children};this.selectClass&&$tw.utils.addAttributeToParseTreeNode(e,'class',this.selectClass),this.selectMultiple&&$tw.utils.addAttributeToParseTreeNode(e,'multiple','multiple'),this.selectSize&&$tw.utils.addAttributeToParseTreeNode(e,'size',this.selectSize),this.selectTooltip&&$tw.utils.addAttributeToParseTreeNode(e,'title',this.selectTooltip),this.makeChildWidgets([e])},e.prototype.refresh=function(e){var t=this.computeAttributes();if(t.selectTitle||t.selectField||t.selectIndex||t.selectTooltip)return this.refreshSelf(),!0;t=this.refreshChildren(e);return(e[this.selectTitle]||t)&&this.setSelectValue(),t},exports.select=e}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/set.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute(),this.renderChildren(t,e)},t.prototype.execute=function(){this.setName=this.getAttribute('name','currentTiddler'),this.setFilter=this.getAttribute('filter'),this.setSelect=this.getAttribute('select'),this.setTiddler=this.getAttribute('tiddler'),this.setSubTiddler=this.getAttribute('subtiddler'),this.setField=this.getAttribute('field'),this.setIndex=this.getAttribute('index'),this.setValue=this.getAttribute('value'),this.setEmptyValue=this.getAttribute('emptyValue'),this.setVariable(this.setName,this.getValue(),this.parseTreeNode.params,!!this.parseTreeNode.isMacroDefinition),this.makeChildWidgets()},t.prototype.getValue=function(){var t,e,i=this.setValue;return this.setTiddler?i=(t=this.setSubTiddler?this.wiki.getSubTiddler(this.setTiddler,this.setSubTiddler):this.wiki.getTiddler(this.setTiddler))?this.setField?t.getFieldString(this.setField)||this.setEmptyValue:this.setIndex?this.wiki.extractTiddlerDataItem(this.setTiddler,this.setIndex,this.setEmptyValue):t.fields.text||this.setEmptyValue:this.setEmptyValue:this.setFilter?(t=this.wiki.filterTiddlers(this.setFilter,this),null==this.setValue&&(this.setSelect&&(e=parseInt(this.setSelect,10)),i=void 0!==e?t[e]||'':$tw.utils.stringifyList(t)),0===t.length&&void 0!==this.setEmptyValue&&(i=this.setEmptyValue)):!i&&this.setEmptyValue&&(i=this.setEmptyValue),i||''},t.prototype.refresh=function(t){var e=this.computeAttributes();return e.name||e.filter||e.select||e.tiddler||this.setTiddler&&t[this.setTiddler]||e.field||e.index||e.value||e.emptyValue||this.setFilter&&this.getValue()!=this.variables[this.setName].value?(this.refreshSelf(),!0):this.refreshChildren(t)},exports.setvariable=t,exports.set=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/text.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute();var r=(r=this.getAttribute('text',this.parseTreeNode.text||'')).replace(/\\r/gm,''),r=this.document.createTextNode(r);t.insertBefore(r,e),this.domNodes.push(r)},t.prototype.execute=function(){},t.prototype.refresh=function(t){return!!this.computeAttributes().text&&(this.refreshSelf(),!0)},exports.text=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/tiddler.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute(),this.renderChildren(t,e)},t.prototype.execute=function(){this.tiddlerState=this.computeTiddlerState(),this.setVariable('currentTiddler',this.tiddlerState.currentTiddler),this.setVariable('missingTiddlerClass',this.tiddlerState.missingTiddlerClass),this.setVariable('shadowTiddlerClass',this.tiddlerState.shadowTiddlerClass),this.setVariable('systemTiddlerClass',this.tiddlerState.systemTiddlerClass),this.setVariable('tiddlerTagClasses',this.tiddlerState.tiddlerTagClasses),this.makeChildWidgets()},t.prototype.computeTiddlerState=function(){this.tiddlerTitle=this.getAttribute('tiddler',this.getVariable('currentTiddler'));var t={currentTiddler:this.tiddlerTitle||'',missingTiddlerClass:this.wiki.tiddlerExists(this.tiddlerTitle)||this.wiki.isShadowTiddler(this.tiddlerTitle)?'tc-tiddler-exists':'tc-tiddler-missing',shadowTiddlerClass:this.wiki.isShadowTiddler(this.tiddlerTitle)?'tc-tiddler-shadow':'',systemTiddlerClass:this.wiki.isSystemTiddler(this.tiddlerTitle)?'tc-tiddler-system':'',tiddlerTagClasses:this.getTagClasses()};return t.hash=t.currentTiddler+t.missingTiddlerClass+t.shadowTiddlerClass+t.systemTiddlerClass+t.tiddlerTagClasses,t},t.prototype.getTagClasses=function(){var t=this.wiki.getTiddler(this.tiddlerTitle);if(t){var e=[];return $tw.utils.each(t.fields.tags,function(t){e.push('tc-tagged-'+encodeURIComponent(t))}),e.join(' ')}return''},t.prototype.refresh=function(t){var e=this.computeAttributes(),i=this.computeTiddlerState();return e.tiddler||i.hash!==this.tiddlerState.hash?(this.refreshSelf(),!0):this.refreshChildren(t)},exports.tiddler=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/transclude.js":{"text":"!function(){'use strict';function e(e,t){this.initialise(e,t)}var t=require('$:/core/modules/widgets/widget.js').widget;(e.prototype=new t).render=function(e,t){this.parentDomNode=e,this.computeAttributes(),this.execute(),this.renderChildren(e,t)},e.prototype.execute=function(){this.transcludeTitle=this.getAttribute('tiddler',this.getVariable('currentTiddler')),this.transcludeSubTiddler=this.getAttribute('subtiddler'),this.transcludeField=this.getAttribute('field'),this.transcludeIndex=this.getAttribute('index'),this.transcludeMode=this.getAttribute('mode'),this.recursionMarker=this.getAttribute('recursionMarker','yes');var e=!this.parseTreeNode.isBlock;'inline'===this.transcludeMode?e=!0:'block'===this.transcludeMode&&(e=!1);var t=this.wiki.parseTextReference(this.transcludeTitle,this.transcludeField,this.transcludeIndex,{parseAsInline:e,subTiddler:this.transcludeSubTiddler}),i=t?t.tree:this.parseTreeNode.children,e=this.makeRecursionMarker();'yes'===this.recursionMarker&&this.setVariable('transclusion',e),t&&this.parentWidget&&this.parentWidget.hasVariable('transclusion',e)&&(i=[{type:'element',tag:'span',attributes:{class:{type:'string',value:'tc-error'}},children:[{type:'text',text:$tw.language.getString('Error/RecursiveTransclusion')}]}]),this.makeChildWidgets(i)},e.prototype.makeRecursionMarker=function(){var e=[];return e.push('{'),e.push(this.getVariable('currentTiddler',{defaultValue:''})),e.push('|'),e.push(this.transcludeTitle||''),e.push('|'),e.push(this.transcludeField||''),e.push('|'),e.push(this.transcludeIndex||''),e.push('|'),e.push(this.transcludeSubTiddler||''),e.push('}'),e.join('')},e.prototype.refresh=function(e){var t=this.computeAttributes();return t.tiddler||t.field||t.index||e[this.transcludeTitle]?(this.refreshSelf(),!0):this.refreshChildren(e)},exports.transclude=e}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/vars.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var i=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=Object.create(i.prototype)).render=function(t,e){i.call(this),this.parentDomNode=t,this.computeAttributes(),this.execute(),this.renderChildren(t,e)},t.prototype.execute=function(){var i=this;$tw.utils.each(this.attributes,function(t,e){'$'!==e.charAt(0)&&i.setVariable(e,t)}),this.makeChildWidgets()},t.prototype.refresh=function(t){var e=this.computeAttributes();return Object.keys(e).length?(this.refreshSelf(),!0):this.refreshChildren(t)},exports.vars=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/view.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){var i;this.parentDomNode=t,this.computeAttributes(),this.execute(),this.text?(i=this.document.createTextNode(this.text),t.insertBefore(i,e),this.domNodes.push(i)):(this.makeChildWidgets(),this.renderChildren(t,e))},t.prototype.execute=function(){switch(this.viewTitle=this.getAttribute('tiddler',this.getVariable('currentTiddler')),this.viewSubtiddler=this.getAttribute('subtiddler'),this.viewField=this.getAttribute('field','text'),this.viewIndex=this.getAttribute('index'),this.viewFormat=this.getAttribute('format','text'),this.viewTemplate=this.getAttribute('template',''),this.viewMode=this.getAttribute('mode','block'),this.viewFormat){case'htmlwikified':this.text=this.getValueAsHtmlWikified(this.viewMode);break;case'plainwikified':this.text=this.getValueAsPlainWikified(this.viewMode);break;case'htmlencodedplainwikified':this.text=this.getValueAsHtmlEncodedPlainWikified(this.viewMode);break;case'htmlencoded':this.text=this.getValueAsHtmlEncoded();break;case'htmltextencoded':this.text=this.getValueAsHtmlTextEncoded();break;case'urlencoded':this.text=this.getValueAsUrlEncoded();break;case'doubleurlencoded':this.text=this.getValueAsDoubleUrlEncoded();break;case'date':this.text=this.getValueAsDate(this.viewTemplate);break;case'relativedate':this.text=this.getValueAsRelativeDate();break;case'stripcomments':this.text=this.getValueAsStrippedComments();break;case'jsencoded':this.text=this.getValueAsJsEncoded();break;default:this.text=this.getValueAsText()}},t.prototype.getValue=function(t){var e,i=(t=t||{}).asString?'':void 0;return this.viewIndex?i=this.wiki.extractTiddlerDataItem(this.viewTitle,this.viewIndex):(e=this.viewSubtiddler?this.wiki.getSubTiddler(this.viewTitle,this.viewSubtiddler):this.wiki.getTiddler(this.viewTitle))?'text'!==this.viewField||this.viewSubtiddler?$tw.utils.hop(e.fields,this.viewField)&&(i=t.asString?e.getFieldString(this.viewField):e.fields[this.viewField]):i=this.wiki.getTiddlerText(this.viewTitle):'title'===this.viewField&&(i=this.viewTitle),i},t.prototype.getValueAsText=function(){return this.getValue({asString:!0})},t.prototype.getValueAsHtmlWikified=function(t){return this.wiki.renderText('text/html','text/vnd.tiddlywiki',this.getValueAsText(),{parseAsInline:'block'!==t,parentWidget:this})},t.prototype.getValueAsPlainWikified=function(t){return this.wiki.renderText('text/plain','text/vnd.tiddlywiki',this.getValueAsText(),{parseAsInline:'block'!==t,parentWidget:this})},t.prototype.getValueAsHtmlEncodedPlainWikified=function(t){return $tw.utils.htmlEncode(this.wiki.renderText('text/plain','text/vnd.tiddlywiki',this.getValueAsText(),{parseAsInline:'block'!==t,parentWidget:this}))},t.prototype.getValueAsHtmlEncoded=function(){return $tw.utils.htmlEncode(this.getValueAsText())},t.prototype.getValueAsHtmlTextEncoded=function(){return $tw.utils.htmlTextEncode(this.getValueAsText())},t.prototype.getValueAsUrlEncoded=function(){return encodeURIComponent(this.getValueAsText())},t.prototype.getValueAsDoubleUrlEncoded=function(){return encodeURIComponent(encodeURIComponent(this.getValueAsText()))},t.prototype.getValueAsDate=function(t){t=t||'YYYY MM DD 0hh:0mm';var e=$tw.utils.parseDate(this.getValue());return e&&$tw.utils.isDate(e)&&'Invalid Date'!==e.toString()?$tw.utils.formatDateString(e,t):''},t.prototype.getValueAsRelativeDate=function(t){var e=$tw.utils.parseDate(this.getValue());return e&&$tw.utils.isDate(e)&&'Invalid Date'!==e.toString()?$tw.utils.getRelativeDate(new Date-new Date(e)).description:''},t.prototype.getValueAsStrippedComments=function(){for(var t=this.getValueAsText().split('\\n'),e=[],i=0;i<t.length;i++){var s=t[i];/^\\s*\\/\\/#/.test(s)||e.push(s)}return e.join('\\n')},t.prototype.getValueAsJsEncoded=function(){return $tw.utils.stringify(this.getValueAsText())},t.prototype.refresh=function(t){var e=this.computeAttributes();return!!(e.tiddler||e.field||e.index||e.template||e.format||t[this.viewTitle])&&(this.refreshSelf(),!0)},exports.view=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/widget.js":{"text":"!function(){'use strict';function r(t,e){this.initialise(t,e)}r.prototype.initialise=function(t,e){void 0!==t&&(e=e||{},this.parseTreeNode=t,this.wiki=e.wiki,this.parentWidget=e.parentWidget,this.variablesConstructor=function(){},this.variablesConstructor.prototype=this.parentWidget?this.parentWidget.variables:{},this.variables=new this.variablesConstructor,this.document=e.document,this.attributes={},this.children=[],this.domNodes=[],this.eventListeners={},this.widgetClasses||(r.prototype.widgetClasses=$tw.modules.applyMethods('widget'),$tw.modules.forEachModuleOfType('widget-subclass',function(t,e){if(e.baseClass){var i=r.prototype.widgetClasses[e.baseClass];if(!i)throw'Module \\''+t+'\\' is attemping to extend a non-existent base class \\''+e.baseClass+'\\'';t=e.constructor;t.prototype=new i,$tw.utils.extend(t.prototype,e.prototype),r.prototype.widgetClasses[e.name||e.baseClass]=t}})))},r.prototype.render=function(t,e){this.parentDomNode=t,this.execute(),this.renderChildren(t,e)},r.prototype.execute=function(){this.makeChildWidgets()},r.prototype.setVariable=function(t,e,i,r){this.variables[t]={value:e,params:i,isMacroDefinition:!!r}},r.prototype.getVariableInfo=function(t,e){var i=(e=e||{}).params||[],r=this.parentWidget;if(r&&t in r.variables){var n=r.variables[t],s=n.value,o=s,r=this.resolveVariableParameters(n.params,i);return $tw.utils.each(r,function(t){o=$tw.utils.replaceString(o,new RegExp('\\\\$'+$tw.utils.escapeRegExp(t.name)+'\\\\$','mg'),t.value)}),n.isMacroDefinition&&(o=this.substituteVariableReferences(o)),{text:o,params:r,srcVariable:n,isCacheable:s===o}}return{text:this.evaluateMacroModule(t,i,e.defaultValue)}},r.prototype.getVariable=function(t,e){return this.getVariableInfo(t,e).text},r.prototype.resolveVariableParameters=function(t,e){t=t||[],e=e||[];for(var i,r,n=0,s=[],o=0;o<t.length;o++){i=t[o],r=void 0;for(var a=0;a<e.length;a++)e[a].name===i.name&&(r=e[a].value);for(;n<e.length&&e[n].name;)n++;void 0===r&&n<e.length&&(r=e[n++].value),r=r||i.default||'',s.push({name:i.name,value:r})}return s},r.prototype.substituteVariableReferences=function(t){var n=this;return(t||'').replace(/\\$\\(([^\\)\\$]+)\\)\\$/g,function(t,e,i,r){return n.getVariable(e,{defaultValue:''})})},r.prototype.evaluateMacroModule=function(t,e,i){if($tw.utils.hop($tw.macros,t)){var r=$tw.macros[t],n=[];if(0<r.params.length)for(var s,o,a=0,l=0;l<r.params.length;l++){s=r.params[l],o=void 0;for(var u=0;u<e.length;u++)e[u].name===s.name&&(o=e[u].value);for(;a<e.length&&e[a].name;)a++;void 0===o&&a<e.length&&(o=e[a++].value),o=o||s.default||'',n.push(o)}else for(var h=0;h<e.length;++h)n.push(e[h].value);return(r.run.apply(this,n)||'').toString()}return i},r.prototype.hasVariable=function(t,e){for(var i=this;i;){if($tw.utils.hop(i.variables,t)&&i.variables[t].value===e)return!0;i=i.parentWidget}return!1},r.prototype.getStateQualifier=function(t){if(this.qualifiers=this.qualifiers||Object.create(null),t=t||'transclusion',this.qualifiers[t])return this.qualifiers[t];for(var e=[],i=this;i&&i.parentWidget;)$tw.utils.hop(i.parentWidget.variables,t)&&e.push(i.getVariable(t)),i=i.parentWidget;var r=$tw.utils.hashString(e.join(''));return this.qualifiers[t]=r},r.prototype.computeAttributes=function(){var i,r={},n=this;return $tw.utils.each(this.parseTreeNode.attributes,function(t,e){i='filtered'===t.type?n.wiki.filterTiddlers(t.filter,n)[0]||'':'indirect'===t.type?n.wiki.getTextReference(t.textReference,'',n.getVariable('currentTiddler')):'macro'===t.type?n.getVariable(t.value.name,{params:t.value.params}):t.value,n.attributes[e]!==i&&(n.attributes[e]=i,r[e]=!0)}),r},r.prototype.hasAttribute=function(t){return $tw.utils.hop(this.attributes,t)},r.prototype.getAttribute=function(t,e){return $tw.utils.hop(this.attributes,t)?this.attributes[t]:e},r.prototype.assignAttributes=function(r,n){n=n||{};$tw.utils.each(this.attributes,function(t,e){if(n.excludeEventAttributes&&'on'===e.substr(0,2)&&(t=void 0),void 0!==t){var i=e.split(':');try{2==i.length&&'xlink'==i[0]?r.setAttributeNS('http://www.w3.org/1999/xlink',i[1],t):r.setAttributeNS(null,e,t)}catch(t){}}})},r.prototype.makeChildWidgets=function(i,t){t=t||{},this.children=[];var e=this;$tw.utils.each(t.variables,function(t,e){i=[{type:'set',attributes:{name:{type:'string',value:e},value:{type:'string',value:t}},children:i}]}),$tw.utils.each(i||this.parseTreeNode&&this.parseTreeNode.children,function(t){e.children.push(e.makeChildWidget(t))})},r.prototype.makeChildWidget=function(i,t){t=t||{};var e=this.widgetClasses[i.type];return e||(e=this.widgetClasses.text,i={type:'text',text:'Undefined widget \\''+i.type+'\\''}),$tw.utils.each(t.variables,function(t,e){i={type:'set',attributes:{name:{type:'string',value:e},value:{type:'string',value:t}},children:[i]}}),new e(i,{wiki:this.wiki,parentWidget:this,document:this.document})},r.prototype.nextSibling=function(){if(this.parentWidget){var t=this.parentWidget.children.indexOf(this);if(-1!==t&&t<this.parentWidget.children.length-1)return this.parentWidget.children[t+1]}return null},r.prototype.previousSibling=function(){if(this.parentWidget){var t=this.parentWidget.children.indexOf(this);if(-1!==t&&0<t)return this.parentWidget.children[t-1]}return null},r.prototype.renderChildren=function(t,e){for(var i=this.children,r=0;r<i.length;r++)i[r].render(t,e)},r.prototype.addEventListeners=function(t){var e=this;$tw.utils.each(t,function(t){e.addEventListener(t.type,t.handler)})},r.prototype.addEventListener=function(t,e){var i=this;this.eventListeners[t]='string'==typeof e?function(t){return i[e].call(i,t)}:function(t){return e.call(i,t)}},r.prototype.dispatchEvent=function(t){t.widget=t.widget||this;var e=this.eventListeners[t.type];return!(e&&!e(t))&&(!this.parentWidget||this.parentWidget.dispatchEvent(t))},r.prototype.refresh=function(t){return this.refreshChildren(t)},r.prototype.refreshSelf=function(){var t=this.findNextSiblingDomNode();this.removeChildDomNodes(),this.render(this.parentDomNode,t)},r.prototype.refreshChildren=function(t){for(var e=this.children,i=!1,r=0;r<e.length;r++)i=e[r].refresh(t)||i;return i},r.prototype.findNextSiblingDomNode=function(t){var e=this.parentWidget,i=void 0!==t?t:e.children.indexOf(this);if(-1===i)throw'node not found in parents children';for(;++i<e.children.length;){var r=e.children[i].findFirstDomNode();if(r)return r}t=e.parentWidget;return t&&e.parentDomNode===this.parentDomNode&&-1!==(i=t.children.indexOf(e))?e.findNextSiblingDomNode(i):null},r.prototype.findFirstDomNode=function(){if(0<this.domNodes.length)return this.domNodes[0];for(var t=0;t<this.children.length;t++){var e=this.children[t].findFirstDomNode();if(e)return e}return null},r.prototype.removeChildDomNodes=function(){0<this.domNodes.length?($tw.utils.each(this.domNodes,function(t){t.parentNode.removeChild(t)}),this.domNodes=[]):$tw.utils.each(this.children,function(t){t.removeChildDomNodes()})},r.prototype.invokeActions=function(t,e){for(var i=!1,r=0;r<this.children.length;r++){var n=this.children[r];n.invokeAction&&(n.refreshSelf(),n.invokeAction(t,e)&&(i=!0)),n.allowActionPropagation()&&n.invokeActions(t,e)&&(i=!0)}return i},r.prototype.invokeActionString=function(t,e,i,r){t=t||'';t=this.wiki.parseText('text/vnd.tiddlywiki',t,{parentWidget:this,document:this.document}),t=this.wiki.makeWidget(t,{parentWidget:this,document:this.document,variables:r}),r=this.document.createElement('div');return t.render(r,null),t.invokeActions(this,i)},r.prototype.invokeActionsByTag=function(t,e,i){var r=this;$tw.utils.each(r.wiki.filterTiddlers('[all[shadows+tiddlers]tag['+t+']!has[draft.of]]'),function(t){r.invokeActionString(r.wiki.getTiddlerText(t),r,e,i)})},r.prototype.allowActionPropagation=function(){return!0},exports.widget=r}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/widgets/wikify.js":{"text":"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute(),this.renderChildren(t,e)},t.prototype.execute=function(){this.wikifyName=this.getAttribute('name'),this.wikifyText=this.getAttribute('text'),this.wikifyType=this.getAttribute('type'),this.wikifyMode=this.getAttribute('mode','block'),this.wikifyOutput=this.getAttribute('output','text'),this.wikifyParser=this.wiki.parseText(this.wikifyType,this.wikifyText,{parseAsInline:'inline'===this.wikifyMode}),this.wikifyWidgetNode=this.wiki.makeWidget(this.wikifyParser,{document:$tw.fakeDocument,parentWidget:this}),this.wikifyContainer=$tw.fakeDocument.createElement('div'),this.wikifyWidgetNode.render(this.wikifyContainer,null),this.wikifyResult=this.getResult(),this.setVariable(this.wikifyName,this.wikifyResult),this.makeChildWidgets()},t.prototype.getResult=function(){var t;switch(this.wikifyOutput){case'text':t=this.wikifyContainer.textContent;break;case'formattedtext':t=this.wikifyContainer.formattedTextContent;break;case'html':t=this.wikifyContainer.innerHTML;break;case'parsetree':t=JSON.stringify(this.wikifyParser.tree,0,$tw.config.preferences.jsonSpaces);break;case'widgettree':t=JSON.stringify(this.getWidgetTree(),0,$tw.config.preferences.jsonSpaces)}return t},t.prototype.getWidgetTree=function(){var r=function(i,s){var t=i.parseTreeNode.type;switch(s.type=t){case'element':s.tag=i.parseTreeNode.tag;break;case'text':s.text=i.parseTreeNode.text}0<Object.keys(i.attributes||{}).length&&(s.attributes={},$tw.utils.each(i.attributes,function(t,e){s.attributes[e]=i.getAttribute(e)})),0<Object.keys(i.children||{}).length&&(s.children=[],$tw.utils.each(i.children,function(t){var e={};s.children.push(e),r(t,e)}))},t={};return r(this.wikifyWidgetNode,t),t},t.prototype.refresh=function(t){var e=this.computeAttributes();if(e.name||e.text||e.type||e.mode||e.output)return this.refreshSelf(),!0;if(this.wikifyWidgetNode.refresh(t)){e=this.getResult();if(e!==this.wikifyResult)return this.wikifyResult=e,this.setVariable(this.wikifyName,this.wikifyResult),$tw.utils.each(this.children,function(t){t.refreshSelf()}),!0}return this.refreshChildren(t)},exports.wikify=t}();","type":"application/javascript","module-type":"widget"},"$:/core/modules/wiki-bulkops.js":{"text":"!function(){'use strict';exports.renameTiddler=function(i,t,e){var d,l;i=(i||'').trim(),t=(t||'').trim(),e=e||{},i&&t&&i!==t&&(d=this.getTiddler(i),l=new $tw.Tiddler(d,{title:t},this.getModificationFields()),l=$tw.hooks.invokeHook('th-renaming-tiddler',l,d),this.addTiddler(l),this.deleteTiddler(i),this.relinkTiddler(i,t,e))},exports.relinkTiddler=function(n,o,r){var a=this;n=(n||'').trim(),o=(o||'').trim(),r=r||{},n&&o&&n!==o&&this.each(function(e,i){var d,l,s,t=e.fields.type||'';e.fields['plugin-type']||'application/javascript'===t||(d=e.fields.tags?e.fields.tags.slice(0):void 0,l=e.fields.list?e.fields.list.slice(0):void 0,s=!1,r.dontRenameInTags||$tw.utils.each(d,function(i,t){i===n&&(console.log('Renaming tag \\''+d[t]+'\\' to \\''+o+'\\' of tiddler \\''+e.fields.title+'\\''),d[t]=o,s=!0)}),r.dontRenameInLists||$tw.utils.each(l,function(i,t){i===n&&(console.log('Renaming list item \\''+l[t]+'\\' to \\''+o+'\\' of tiddler \\''+e.fields.title+'\\''),l[t]=o,s=!0)}),s&&(t=new $tw.Tiddler(e,{tags:d,list:l},a.getModificationFields()),t=$tw.hooks.invokeHook('th-relinking-tiddler',t,e),a.addTiddler(t)))})}}();","type":"application/javascript","module-type":"wikimethod"},"$:/core/modules/wiki.js":{"text":"!function(){'use strict';var s=require('$:/core/modules/widgets/widget.js'),i='$:/status/UserName',r='$:/config/TimestampDisable';exports.addIndexersToWiki=function(){var i=this;$tw.utils.each($tw.modules.applyMethods('indexer'),function(e,t){i.addIndexer(new e(i),t)})},exports.getTextReference=function(e,t,i){var r=$tw.utils.parseTextReference(e),e=r.title||i;if(r.field){i=this.getTiddler(e);return'title'===r.field?e:i&&$tw.utils.hop(i.fields,r.field)?i.getFieldString(r.field):t}return r.index?this.extractTiddlerDataItem(e,r.index,t):this.getTiddlerText(e,t)},exports.setTextReference=function(e,t,i){e=$tw.utils.parseTextReference(e),i=e.title||i;this.setText(i,e.field,e.index,t)},exports.setText=function(e,t,i,r,s){var n,l=(s=s||{}).suppressTimestamp?{}:this.getCreationFields(),s=s.suppressTimestamp?{}:this.getModificationFields();i?(n=this.getTiddlerData(e,Object.create(null)),void 0!==r?n[i]=r:delete n[i],this.setTiddlerData(e,n,s)):(n=this.getTiddler(e),(e={title:e})[t||'text']=r,this.addTiddler(new $tw.Tiddler(l,n,e,s)))},exports.deleteTextReference=function(e,t){var i=$tw.utils.parseTextReference(e);i.title&&!i.field?this.deleteTiddler(i.title):i.field&&(e=i.title||t,(t=this.getTiddler(e))&&$tw.utils.hop(t.fields,i.field)&&((e=Object.create(null))[i.field]=void 0,this.addTiddler(new $tw.Tiddler(t,e,this.getModificationFields()))))},exports.addEventListener=function(e,t){this.eventListeners=this.eventListeners||{},this.eventListeners[e]=this.eventListeners[e]||[],this.eventListeners[e].push(t)},exports.removeEventListener=function(e,t){e=this.eventListeners[e];!e||-1!==(t=e.indexOf(t))&&e.splice(t,1)},exports.dispatchEvent=function(e){var t=Array.prototype.slice.call(arguments,1),i=this.eventListeners[e];if(i)for(var r=0;r<i.length;r++){var s=i[r];s.apply(s,t)}},exports.enqueueTiddlerEvent=function(e,t){var i;this.changedTiddlers=this.changedTiddlers||Object.create(null),this.changedTiddlers[e]=this.changedTiddlers[e]||Object.create(null),this.changedTiddlers[e][t?'deleted':'modified']=!0,this.changeCount=this.changeCount||Object.create(null),$tw.utils.hop(this.changeCount,e)?this.changeCount[e]++:this.changeCount[e]=1,this.eventListeners=this.eventListeners||{},this.eventsTriggered||(i=this,$tw.utils.nextTick(function(){var e=i.changedTiddlers;i.changedTiddlers=Object.create(null),i.eventsTriggered=!1,0<$tw.utils.count(e)&&i.dispatchEvent('change',e)}),this.eventsTriggered=!0)},exports.getSizeOfTiddlerEventQueue=function(){return $tw.utils.count(this.changedTiddlers)},exports.clearTiddlerEventQueue=function(){this.changedTiddlers=Object.create(null),this.changeCount=Object.create(null)},exports.getChangeCount=function(e){return this.changeCount=this.changeCount||Object.create(null),$tw.utils.hop(this.changeCount,e)?this.changeCount[e]:0},exports.generateNewTitle=function(e,t){t=t||{};for(var i=0,r=e;this.tiddlerExists(r)||this.isShadowTiddler(r)||this.findDraft(r);)r=e+(t.prefix||' ')+ ++i;return r},exports.isSystemTiddler=function(e){return e&&0===e.indexOf('$:/')},exports.isTemporaryTiddler=function(e){return e&&0===e.indexOf('$:/temp/')},exports.isImageTiddler=function(e){e=this.getTiddler(e);if(e){e=$tw.config.contentTypeInfo[e.fields.type||'text/vnd.tiddlywiki'];return!!e&&-1!==e.flags.indexOf('image')}return null},exports.isBinaryTiddler=function(e){e=this.getTiddler(e);if(e){e=$tw.config.contentTypeInfo[e.fields.type||'text/vnd.tiddlywiki'];return!!e&&'base64'===e.encoding}return null},exports.importTiddler=function(e){var t=this.getTiddler(e.fields.title);return!(e&&e.hasField('plugin-type')&&e.hasField('version')&&t&&t.hasField('plugin-type')&&t.hasField('version')&&!$tw.utils.checkVersions(e.fields.version,t.fields.version))&&(this.addTiddler(e),!0)},exports.getCreationFields=function(){if('yes'===this.getTiddlerText(r,'').toLowerCase())return{};var e={created:new Date},t=this.getTiddlerText(i);return t&&(e.creator=t),e},exports.getModificationFields=function(){if('yes'===this.getTiddlerText(r,'').toLowerCase())return{};var e=Object.create(null),t=this.getTiddlerText(i);return e.modified=new Date,t&&(e.modifier=t),e},exports.getTiddlers=function(i){i=i||Object.create(null);var e,r=this,s=i.sortField||'title',n=[],t=[];for(this.each(function(e,t){!i.includeSystem&&r.isSystemTiddler(t)||i.excludeTag&&e.hasTag(i.excludeTag)||n.push(e)}),n.sort(function(e,t){e=e.fields[s].toLowerCase()||'',t=t.fields[s].toLowerCase()||'';return e<t?-1:t<e?1:0}),e=0;e<n.length;e++)t.push(n[e].fields.title);return t},exports.countTiddlers=function(e){e=this.getTiddlers({excludeTag:e});return $tw.utils.count(e)},exports.makeTiddlerIterator=function(e){var i=this;return e=$tw.utils.isArray(e)?e.slice(0):Object.keys(e),function(t){e.forEach(function(e){t(i.getTiddler(e),e)})}},exports.sortTiddlers=function(e,l,d,a,o,c){var u=this;e.sort(function(e,t){var i,r,s,n;return'title'!==l&&(i=u.getTiddler(e),r=u.getTiddler(t),e=i&&i.fields[l]||'',t=r&&r.fields[l]||''),i=Number(e),r=Number(t),!o||isNaN(i)&&isNaN(r)?$tw.utils.isDate(e)&&$tw.utils.isDate(t)?d?t-e:e-t:c?d?t.localeCompare(e,void 0,{numeric:!0,sensitivity:'base'}):e.localeCompare(t,void 0,{numeric:!0,sensitivity:'base'}):(e=String(e),t=String(t),a||(e=e.toLowerCase(),t=t.toLowerCase()),d?t.localeCompare(e):e.localeCompare(t)):(s=i,n=r,isNaN(s)&&!isNaN(n)?d?-1:1:!isNaN(s)&&isNaN(n)?d?1:-1:d?n-s:s-n)})},exports.forEachTiddler=function(){for(var e,t=0,i=2<=arguments.length?arguments[t++]:{},r=arguments[t++],s=this.getTiddlers(i),n=0;n<s.length;n++)(e=this.getTiddler(s[n]))&&r.call(this,e.fields.title,e)},exports.extractLinks=function(e){var s=[],n=function(e){for(var t=0;t<e.length;t++){var i,r=e[t];'link'===r.type&&r.attributes.to&&'string'===r.attributes.to.type&&(i=r.attributes.to.value,-1===s.indexOf(i)&&s.push(i)),r.children&&n(r.children)}};return n(e),s},exports.getTiddlerLinks=function(t){var i=this;return this.getCacheForTiddler(t,'links',function(){var e=i.parseTiddler(t);return e?i.extractLinks(e.tree):[]})},exports.getTiddlerBacklinks=function(i){var r=this,e=this.getIndexer('BacklinksIndexer'),s=e&&e.lookup(i);return s||(s=[],this.forEachTiddler(function(e,t){-1!==r.getTiddlerLinks(e).indexOf(i)&&s.push(e)})),s},exports.getMissingTitles=function(){var i=this,r=[];return this.forEachTiddler(function(e,t){e=i.getTiddlerLinks(e);$tw.utils.each(e,function(e){i.tiddlerExists(e)||i.isShadowTiddler(e)||-1!==r.indexOf(e)||r.push(e)})}),r},exports.getOrphanTitles=function(){var i=this,r=this.getTiddlers();return this.forEachTiddler(function(e,t){e=i.getTiddlerLinks(e);$tw.utils.each(e,function(e){e=r.indexOf(e);-1!==e&&r.splice(e,1)})}),r},exports.getTiddlersWithTag=function(t){var i=this,e=this.getIndexer('TagIndexer');return e&&e.subIndexers[3].lookup(t)||this.getGlobalCache('taglist-'+t,function(){var e=i.getTagMap();return i.sortByList(e[t],t)})},exports.getTagMap=function(){var r=this;return this.getGlobalCache('tagmap',function(){function i(e,t){if(e)for(var i=0;i<e.length;i++){var r=e[i];$tw.utils.hop(s,r)?s[r].push(t):s[r]=[t]}}var s=Object.create(null);return r.eachShadow(function(e,t){r.tiddlerExists(t)||(e=r.getTiddler(t),i(e.fields.tags,t))}),r.each(function(e,t){i(e.fields.tags,t)}),s})},exports.findListingsOfTiddler=function(i,r){r=r||'list';var s=[];return this.each(function(e,t){e=$tw.utils.parseStringArray(e.fields[r]);e&&-1!==e.indexOf(i)&&s.push(t)}),s},exports.sortByList=function(e,t){var n=this,l=Object.create(null);var i=this.getTiddlerList(t);if(e&&0!==e.length){for(var r,d=[],s=0;s<i.length;s++)r=i[s],-1!==e.indexOf(r)&&d.push(r);for(s=0;s<e.length;s++)r=e[s],-1===i.indexOf(r)&&d.push(r);var a=d.slice(0);for(s=0;s<a.length;s++)(function e(t){var i,r,s;$tw.utils.hop(l,t)||(l[t]=!0,i=-1,(s=n.getTiddler(t))&&(r=s.fields['list-before'],s=s.fields['list-after'],''===r?i=0:''===s?i=d.length:r?(e(r),i=d.indexOf(r)):s&&(e(s),0<=(i=d.indexOf(s))&&++i),-1===i||0<=(s=d.indexOf(t))&&i!==s&&(d.splice(s,1),s<=i&&i--,d.splice(i,0,t))))})(r=a[s]);return d}return[]},exports.getSubTiddler=function(e,t){e=this.getPluginInfo(e)||this.getTiddlerDataCached(e);if(e&&e.tiddlers){t=e.tiddlers[t];if(t)return new $tw.Tiddler(t)}return null},exports.getTiddlerAsJson=function(e){var i=this.getTiddler(e);if(i){var r=Object.create(null);return $tw.utils.each(i.fields,function(e,t){r[t]=i.getFieldString(t)}),JSON.stringify(r)}return JSON.stringify({title:e})},exports.getTiddlersAsJson=function(e,t){for(var i=this.filterTiddlers(e),t=void 0===t?$tw.config.preferences.jsonSpaces:t,r=[],s=0;s<i.length;s++){var n=this.getTiddler(i[s]);if(n){var l,d=new Object;for(l in n.fields)d[l]=n.getFieldString(l);r.push(d)}}return JSON.stringify(r,null,t)},exports.getTiddlerDataCached=function(e,t){var i=this,r=e;return r instanceof $tw.Tiddler||(r=this.getTiddler(r)),r&&this.getCacheForTiddler(r.fields.title,'data',function(){var e=i.getTiddlerData(r.fields.title,void 0);return $tw.utils.deepFreeze(e),e})||t},exports.getTiddlerData=function(e,t){var i,r=e;if(r instanceof $tw.Tiddler||(r=this.getTiddler(r)),r&&r.fields.text)switch(r.fields.type){case'application/json':try{i=JSON.parse(r.fields.text)}catch(e){return t}return i;case'application/x-tiddler-dictionary':return $tw.utils.parseFields(r.fields.text)}return t},exports.extractTiddlerDataItem=function(e,t,i){var r,e=this.getTiddlerDataCached(e,Object.create(null));return e&&$tw.utils.hop(e,t)&&(r=e[t]),'string'==typeof r||'number'==typeof r?r.toString():i},exports.setTiddlerData=function(e,t,i){var r=this.getTiddler(e),e={title:e};r&&'application/x-tiddler-dictionary'===r.fields.type?e.text=$tw.utils.makeTiddlerDictionary(t):(e.type='application/json',e.text=JSON.stringify(t,null,$tw.config.preferences.jsonSpaces)),this.addTiddler(new $tw.Tiddler(this.getCreationFields(),r,i,e,this.getModificationFields()))},exports.getTiddlerList=function(e,t,i){if(i)return $tw.utils.parseStringArray(this.extractTiddlerDataItem(e,i,''));t=t||'list';e=this.getTiddler(e);return e?($tw.utils.parseStringArray(e.fields[t])||[]).slice(0):[]},exports.getGlobalCache=function(e,t){return this.globalCache=this.globalCache||Object.create(null),$tw.utils.hop(this.globalCache,e)||(this.globalCache[e]=t()),this.globalCache[e]},exports.clearGlobalCache=function(){this.globalCache=Object.create(null)},exports.getCacheForTiddler=function(e,t,i){this.caches=this.caches||Object.create(null);var r=this.caches[e];return r&&r[t]||(r||(r=Object.create(null),this.caches[e]=r),r[t]=i()),r[t]},exports.clearCache=function(e){e?(this.caches=this.caches||Object.create(null),$tw.utils.hop(this.caches,e)&&delete this.caches[e]):this.caches=Object.create(null)},exports.initParsers=function(e){$tw.Wiki.parsers={};$tw.modules.forEachModuleOfType('parser',function(e,t){for(var i in t)$tw.utils.hop(t,i)&&($tw.Wiki.parsers[i]=t[i])}),$tw.Wiki.parsers['application/octet-stream']&&Object.keys($tw.config.contentTypeInfo).forEach(function(e){$tw.utils.hop($tw.Wiki.parsers,e)||'base64'!==$tw.config.contentTypeInfo[e].encoding||($tw.Wiki.parsers[e]=$tw.Wiki.parsers['application/octet-stream'])})},exports.parseText=function(e,t,i){t=t||'',i=i||{};var r=$tw.Wiki.parsers[e];return!r&&$tw.utils.getFileExtensionInfo(e)&&(r=$tw.Wiki.parsers[$tw.utils.getFileExtensionInfo(e).type]),(r=r||$tw.Wiki.parsers[i.defaultType||'text/vnd.tiddlywiki'])?new r(e,t,{parseAsInline:i.parseAsInline,wiki:this,_canonical_uri:i._canonical_uri}):null},exports.parseTiddler=function(e,t){var i=(t=$tw.utils.extend({},t)).parseAsInline?'inlineParseTree':'blockParseTree',r=this.getTiddler(e),s=this;return r?this.getCacheForTiddler(e,i,function(){return r.hasField('_canonical_uri')&&(t._canonical_uri=r.fields._canonical_uri),s.parseText(r.fields.type,r.fields.text,t)}):null},exports.parseTextReference=function(e,t,i,r){var s,n;if(r.subTiddler)s=this.getSubTiddler(e,r.subTiddler);else if(s=this.getTiddler(e),'text'===t||!t&&!i)return this.getTiddlerText(e),this.parseTiddler(e,r);if('text'===t||!t&&!i)return s&&s.fields?this.parseText(s.fields.type,s.fields.text,r):null;if(t){if('title'===t)n=e;else{if(!s||!s.hasField(t))return null;n=s.fields[t]}return this.parseText('text/vnd.tiddlywiki',n.toString(),r)}return i?(this.getTiddlerText(e),void 0===(n=this.extractTiddlerDataItem(s,i,void 0))?null:this.parseText('text/vnd.tiddlywiki',n,r)):void 0},exports.makeWidget=function(e,t){t=t||{};var i={type:'widget',children:[]},r=i;return $tw.utils.each(t.variables,function(e,t){e={type:'set',attributes:{name:{type:'string',value:t},value:{type:'string',value:e}},children:[]};r.children=[e],r=e}),r.children=e?e.tree:[],new s.widget(i,{wiki:this,document:t.document||$tw.fakeDocument,parentWidget:t.parentWidget})},exports.makeTranscludeWidget=function(e,t){var i={tree:[{type:'element',tag:'div',children:[]}]},r={type:'importvariables',attributes:{filter:{name:'filter',type:'string'}},isBlock:!1,children:[]},e={type:'transclude',attributes:{recursionMarker:{name:'recursionMarker',type:'string',value:(t=t||{}).recursionMarker||'yes'},tiddler:{name:'tiddler',type:'string',value:e}},isBlock:!t.parseAsInline};return t.importVariables||t.importPageMacros?(t.importVariables?r.attributes.filter.value=t.importVariables:t.importPageMacros&&(r.attributes.filter.value='[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]'),i.tree[0].children.push(r),r.children.push(e)):i.tree[0].children.push(e),t.field&&(e.attributes.field={type:'string',value:t.field}),t.mode&&(e.attributes.mode={type:'string',value:t.mode}),t.children&&(e.children=t.children),this.makeWidget(i,t)},exports.renderText=function(e,t,i,r){r=r||{};i=this.parseText(t,i,r),i=this.makeWidget(i,r),r=$tw.fakeDocument.createElement('div');return i.render(r,null),'text/html'===e?r.innerHTML:r.textContent},exports.renderTiddler=function(e,t,i){i=i||{};t=this.parseTiddler(t,i),t=this.makeWidget(t,i),i=$tw.fakeDocument.createElement('div');return t.render(i,null),'text/html'===e?i.innerHTML:'text/plain-formatted'===e?i.formattedTextContent:i.textContent},exports.search=function(t,c){var e,i,u,f=this,r=!!(c=c||{}).invert,s=c.caseSensitive?'':'i',n=c.anchored?'^':'';if(c.literal)u=0===t.length?null:[new RegExp('('+n+$tw.utils.escapeRegExp(t)+')',s)];else if(c.whitespace)i=[],$tw.utils.each(t.split(/\\s+/g),function(e){e&&i.push($tw.utils.escapeRegExp(e))}),u=[new RegExp('('+n+i.join('\\\\s+')+')',s)];else if(c.regexp)try{u=[new RegExp('('+t+')',s)]}catch(e){u=null,console.log('Regexp error parsing /('+t+')/'+s+': ',e)}else if(1===(i=t.split(/ +/)).length&&''===i[0])u=null;else for(u=[],e=0;e<i.length;e++)u.push(new RegExp('('+n+$tw.utils.escapeRegExp(i[e])+')',s));var h=[];c.field&&($tw.utils.isArray(c.field)?$tw.utils.each(c.field,function(e){e&&h.push(e)}):h.push(c.field)),0!==h.length||c.excludeField||(h.push('title'),h.push('tags'),h.push('text'));var l=[];if((c.source||this.each)(function(e,t){(function(e){if(!u)return!0;var t,i=u.slice(),r=(r=f.getTiddler(e))||new $tw.Tiddler({title:e,text:'',type:'text/vnd.tiddlywiki'}),s=$tw.config.contentTypeInfo[r.fields.type]||$tw.config.contentTypeInfo['text/vnd.tiddlywiki'];c.excludeField?(t=Object.keys(r.fields),$tw.utils.each(h,function(e){e=t.indexOf(e);-1!==e&&t.splice(e,1)})):t=h;for(var n=0;0<i.length&&n<t.length;n++){var l=t[n];if('text'===l&&'utf8'!==s.encoding)break;var d,a=r.fields[l];if(a)if($tw.utils.isArray(a))for(var o=0;o<a.length;o++)for(d=0;d<i.length;)i[d].test(a[o])?i.splice(d,1):d++;else for(a=r.getFieldString(l),d=0;d<i.length;)i[d].test(a)?i.splice(d,1):d++}return 0==i.length})(t)!==r&&l.push(t)}),c.exclude)for(e=0;e<c.exclude.length;e++){var d=l.indexOf(c.exclude[e]);-1!==d&&l.splice(d,1)}return l},exports.getTiddlerText=function(e,t){var i=this.getTiddler(e);return i?i.hasField('_is_skinny')?(this.dispatchEvent('lazyLoad',e),null):i.fields.text||'':t},exports.checkTiddlerText=function(e,t,i){i=i||{};e=this.getTiddlerText(e,'');return i.noTrim||(e=e.trim()),i.caseSensitive||(e=e.toLowerCase(),t=t.toLowerCase()),e===t},exports.readFiles=function(e,t){var i;'function'==typeof t?(i=t,t={}):i=t.callback;for(var r=[],s=e.length,n=function(e){r.push.apply(r,e),0==--s&&i(r)},l=0;l<e.length;l++)this.readFile(e[l],$tw.utils.extend({},t,{callback:n}));return e.length},exports.readFile=function(e,t){var i;'function'==typeof t?(i=t,t={}):i=t.callback;var r,s=e.type;''!==s&&s||(-1===(r=e.name.lastIndexOf('.'))||(n=$tw.utils.getFileExtensionInfo(e.name.substr(r)))&&(s=n.type));var n=$tw.config.contentTypeInfo[s],n=!!n&&'base64'===n.encoding;$tw.log.IMPORT&&console.log('Importing file \\''+e.name+'\\', type: \\''+s+'\\', isBinary: '+n),!0!==$tw.hooks.invokeHook('th-importing-file',{file:e,type:s,isBinary:n,callback:i})&&this.readFileContent(e,s,n,t.deserializer,i)},exports.readFileContent=function(r,s,n,l,d){var a=this,e=new FileReader;e.onload=function(e){var t=e.target.result,e={title:r.name||'Untitled'};!n||-1!==(i=t.indexOf(','))&&(t=t.substr(i+1));var i=$tw.utils.extractEncryptedStoreArea(t);i?$tw.utils.decryptStoreAreaInteractive(i,function(e){d(e)}):d(a.deserializeTiddlers(s,t,e,{deserializer:l}))},n?e.readAsDataURL(r):e.readAsText(r)},exports.findDraft=function(i){var r=void 0;return this.forEachTiddler({includeSystem:!0},function(e,t){t.fields['draft.title']&&t.fields['draft.of']===i&&(r=e)}),r},exports.isDraftModified=function(e){var t=this.getTiddler(e);if(!t.isDraft())return!1;e=this.getTiddler(t.fields['draft.of'])||new $tw.Tiddler({text:'',tags:[]});return t.fields['draft.title']!==t.fields['draft.of']||!t.isEqual(e,['created','modified','title','draft.title','draft.of'])},exports.addToHistory=function(e,t,i){new $tw.Story({wiki:this,historyTitle:i}).addToHistory(e,t),console.log('$tw.wiki.addToHistory() is deprecated since V5.1.23! Use the this.story.addToHistory() from the story-object!')},exports.addToStory=function(e,t,i,r){new $tw.Story({wiki:this,storyTitle:i}).addToStory(e,t,r),console.log('$tw.wiki.addToStory() is deprecated since V5.1.23! Use the this.story.addToStory() from the story-object!')},exports.generateDraftTitle=function(e){for(var t,i=0,r=this.getTiddlerText('$:/status/UserName'),s=r?' by '+r:'';t='Draft '+(i?i+1+' ':'')+'of \\''+e+'\\''+s,i++,this.tiddlerExists(t););return t},exports.invokeUpgraders=function(e,t){var i=this;this.upgraderModules||(this.upgraderModules=[],$tw.modules.forEachModuleOfType('upgrader',function(e,t){t.upgrade&&i.upgraderModules.push(t)}));for(var r={},s=0;s<this.upgraderModules.length;s++){var n=this.upgraderModules[s].upgrade(this,e,t);$tw.utils.extend(r,n)}return r},exports.doesPluginRequireReload=function(e){return this.doesPluginInfoRequireReload(this.getPluginInfo(e)||this.getTiddlerDataCached(e))},exports.doesPluginInfoRequireReload=function(e){if(e){var t=!1;return $tw.utils.each(e.tiddlers,function(e){'application/javascript'===e.type&&$tw.utils.hop(e,'module-type')&&(t=!0)}),t}return null},exports.slugify=function(e,t){var i,r=this.getTiddler(e),r=r&&r.fields.slug?r.fields.slug:$tw.utils.transliterate(e.toString().toLowerCase()).replace(/\\s+/g,'-').replace(/[^\\w\\-\\.]+/g,'').replace(/\\-\\-+/g,'-').replace(/^-+/,'').replace(/-+$/,'');return r||(i=[],$tw.utils.each(e.split(''),function(e){i.push(e.charCodeAt(0).toString())}),r=i.join('-')),r}}();","type":"application/javascript","module-type":"wikimethod"},"$:/palettes/Blanca":{"name":"Blanca","description":"A clean white palette to let you focus","tags":"$:/tags/Palette","type":"application/x-tiddler-dictionary","text":"alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #66cccc\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ffffff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #7897f3\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ccc\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #ffffff\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #7897f3\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #eeeeee\ntab-border-selected: #cccccc\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffeedd\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: #eee\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #ff9900\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"},"$:/palettes/Blue":{"name":"Blue","description":"A blue theme","tags":"$:/tags/Palette","type":"application/x-tiddler-dictionary","text":"alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333353\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ddddff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #5959c0\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: #ccccdd\ntab-border-selected: #ccccdd\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #eeeeff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #666666\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #ffffff\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #ffffff\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #5959c0\ntoolbar-new-button: #5eb95e\ntoolbar-options-button: rgb(128, 88, 165)\ntoolbar-save-button: #0e90d2\ntoolbar-info-button: #0e90d2\ntoolbar-edit-button: rgb(243, 123, 29)\ntoolbar-close-button: #dd514c\ntoolbar-delete-button: #dd514c\ntoolbar-cancel-button: rgb(243, 123, 29)\ntoolbar-done-button: #5eb95e\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"},"$:/palettes/Muted":{"name":"Muted","description":"Bright tiddlers on a muted background","tags":"$:/tags/Palette","type":"application/x-tiddler-dictionary","text":"alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #6f6f70\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #29a6ee\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #c2c1c2\nsidebar-foreground-shadow: rgba(255,255,255,0)\nsidebar-foreground: #d3d2d4\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #6f6f70\nsidebar-tab-background: #666667\nsidebar-tab-border-selected: #999\nsidebar-tab-border: #515151\nsidebar-tab-divider: #999\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: #999\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #d1d0d2\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #d5ad34\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"},"$:/palettes/ContrastLight":{"name":"Contrast (Light)","description":"High contrast and unambiguous (light version)","tags":"$:/tags/Palette","type":"application/x-tiddler-dictionary","text":"alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00a\nexternal-link-foreground: #00e\nforeground: #000\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #000\ntag-foreground: #fff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour foreground>>\nvery-muted-foreground: #888888\n"},"$:/palettes/ContrastDark":{"name":"Contrast (Dark)","description":"High contrast and unambiguous (dark version)","tags":"$:/tags/Palette","type":"application/x-tiddler-dictionary","text":"alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #000\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00a\nexternal-link-foreground: #00e\nforeground: #fff\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #fff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour foreground>>\nvery-muted-foreground: #888888\n"},"$:/palettes/CupertinoDark":{"tags":"$:/tags/Palette","name":"Cupertino Dark","description":"A macOS inspired dark palette","type":"application/x-tiddler-dictionary","text":"alert-background: #FF453A\nalert-border: #FF453A\nalert-highlight: #FFD60A\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #282828\nblockquote-bar: <<colour page-background>>\nbutton-foreground: <<colour background>>\ncode-background: <<colour pre-background>>\ncode-border: <<colour pre-border>>\ncode-foreground: rgba(255, 255, 255, 0.54)\ndirty-indicator: #FF453A\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour tiddler-info-background>>\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: #3F638B\ndropdown-tab-background: #323232\ndropzone-background: #30D158\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: #BF5AF2\nexternal-link-foreground: #32D74B\nforeground: #FFFFFF\nmenubar-background: #464646\nmenubar-foreground: #ffffff\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(255, 255, 255, 0.54)\nmodal-backdrop: <<colour page-background>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour background>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: #98989D\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #323232\npre-background: #464646\npre-border: transparent\nprimary: #0A84FF\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour background>>\nsidebar-controls-foreground-hover: #FF9F0A\nsidebar-controls-foreground: #8E8E93\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground-hover: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground: rgba(255, 255, 255, 0.38)\nsidebar-tab-background-selected: #3F638B\nsidebar-tab-background: <<colour background>>\nsidebar-tab-border-selected: <<colour background>>\nsidebar-tab-border: <<colour background>>\nsidebar-tab-divider: <<colour background>>\nsidebar-tab-foreground-selected: rgba(255, 255, 255, 0.87)\nsidebar-tab-foreground: rgba(255, 255, 255, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(255, 255, 255, 0.7)\nsidebar-tiddler-link-foreground: rgba(255, 255, 255, 0.54)\nsite-title-foreground: #ffffff\nstatic-alert-foreground: #B4B4B4\ntab-background-selected: #3F638B\ntab-background: <<colour page-background>>\ntab-border-selected: <<colour page-background>>\ntab-border: <<colour page-background>>\ntab-divider: <<colour page-background>>\ntab-foreground-selected: rgba(255, 255, 255, 0.87)\ntab-foreground: rgba(255, 255, 255, 0.54)\ntable-border: #464646\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #48484A\ntag-foreground: #323232\ntiddler-background: <<colour background>>\ntiddler-border: transparent\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: #48484A\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: rgba(255, 255, 255, 0.08)\ntiddler-editor-fields-even: rgba(255, 255, 255, 0.1)\ntiddler-editor-fields-odd: rgba(255, 255, 255, 0.04)\ntiddler-info-background: #1E1E1E\ntiddler-info-border: #1E1E1E\ntiddler-info-tab-background: #3F638B\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #FFFFFF\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour very-muted-foreground>>\nvery-muted-foreground: #464646\nselection-background: #3F638B\nselection-foreground: #ffffff\nwikilist-background: <<colour page-background>>\nwikilist-button-background: #3F638B\nwikilist-button-foreground: <<colour foreground>>\nwikilist-button-open: #32D74B\nwikilist-button-open-hover: #32D74B\nwikilist-button-reveal: #0A84FF\nwikilist-button-reveal-hover: #0A84FF\nwikilist-button-remove: #FF453A\nwikilist-button-remove-hover: #FF453A\nwikilist-droplink-dragover: #32D74B\nwikilist-item: <<colour background>>\nwikilist-toolbar-background: <<colour background>>\nwikilist-title: <<colour foreground>>\nwikilist-title-svg: <<colour foreground>>\nwikilist-toolbar-foreground: <<colour foreground>>\nwikilist-url: <<colour muted-foreground>>\n"},"$:/palettes/DarkPhotos":{"created":"20150402111612188","description":"Good with dark photo backgrounds","modified":"20150402112344080","name":"DarkPhotos","tags":"$:/tags/Palette","type":"application/x-tiddler-dictionary","text":"alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: \nbutton-foreground: \nbutton-border: \ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #ddd\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #336438\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #ccf\nsidebar-controls-foreground: #fff\nsidebar-foreground-shadow: rgba(0,0,0, 0.5)\nsidebar-foreground: #fff\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #eee\nsidebar-tab-background-selected: rgba(255,255,255, 0.8)\nsidebar-tab-background: rgba(255,255,255, 0.4)\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: rgba(255,255,255, 0.2)\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #aaf\nsidebar-tiddler-link-foreground: #ddf\nsite-title-foreground: #fff\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"},"$:/palettes/DesertSand":{"tags":"$:/tags/Palette","name":"Desert Sand","description":"A desert sand palette","type":"application/x-tiddler-dictionary","text":"alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #E9E0C7\nblockquote-bar: <<colour muted-foreground>>\nbutton-foreground: <<colour foreground>>\ncode-background: #F3EDDF\ncode-border: #C3BAA1\ncode-foreground: #ab3250\ndiff-delete-background: #bd8b8b\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #91c093\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #ad3434\ndownload-background: #6ca16c\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #E9E0C7\ndropdown-tab-background: #BAB29C\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #313163\nexternal-link-foreground: #555592\nforeground: #2D2A23\nmenubar-background: #CDC2A6\nmenubar-foreground: #5A5446\nmessage-background: #ECE5CF\nmessage-border: #D6CBAA\nmessage-foreground: #5f6e7d\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #8A8885\nmodal-footer-background: #CDC2A6\nmodal-footer-border: #9D998E\nmodal-header-border: #9D998E\nmuted-foreground: #9D998E\nnotification-background: #F0E9D7\nnotification-border: #939189\npage-background: #e0d3af\npre-background: #D6CBAA\npre-border: #CDC2A6\nprimary: #5B6F55\nselection-background: #9D947B\nselection-foreground: <<colour foreground>>\nselect-tag-background: #F0E9D7\nselect-tag-foreground: #2D2A23\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #2D2A23\nsidebar-controls-foreground: #867F69\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #867F69\nsidebar-muted-foreground-hover: #706A58\nsidebar-muted-foreground: #B3A98C\nsidebar-tab-background-selected: #e0d3af\nsidebar-tab-background: #A6A193\nsidebar-tab-border-selected: #C3BAA1\nsidebar-tab-border: #C3BAA1\nsidebar-tab-divider: #CDC2A6\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: #2D2A23\nsidebar-tiddler-link-foreground-hover: #433F35\nsidebar-tiddler-link-foreground: #706A58\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #A6A193\ntab-background-selected: #E9E0C7\ntab-background: #A6A193\ntab-border-selected: #C3BAA1\ntab-border: #C3BAA1\ntab-divider: #CDC2A6\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #2D2A23\ntable-border: #9D998E\ntable-footer-background: #8A8885\ntable-header-background: #B0AA98\ntag-background: #706A58\ntag-foreground: #E3D7B7\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #9D947B\ntiddler-controls-foreground-selected: #706A58\ntiddler-controls-foreground: #C3BAA1\ntiddler-editor-background: #E9E0C7\ntiddler-editor-border-image: #A6A193\ntiddler-editor-border: #A6A193\ntiddler-editor-fields-even: #D6CBAA\ntiddler-editor-fields-odd: #C3BAA1\ntiddler-info-background: #E3D7B7\ntiddler-info-border: #BAB29C\ntiddler-info-tab-background: #E9E0C7\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #867F69\ntiddler-title-foreground: #374464\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #8A8885\nvery-muted-foreground: #CDC2A6\nwikilist-background: <<colour page-background>>\nwikilist-item: #CDC2A6\nwikilist-info: #161512\nwikilist-title: #433F35\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: #706A58\nwikilist-button-open: #7db66a\nwikilist-button-open-hover: #56a556\nwikilist-button-reveal: #5a6c9e\nwikilist-button-reveal-hover: #454591\nwikilist-button-remove: #bc5972\nwikilist-button-remove-hover: #814040\nwikilist-toolbar-background: #CDC2A6\nwikilist-toolbar-foreground: #2D2A23\nwikilist-droplink-dragover: rgba(255,192,192,0.5)\nwikilist-button-background: #A6A193\nwikilist-button-foreground: #161512\n"},"$:/palettes/GruvboxDark":{"name":"Gruvbox Dark","description":"Retro groove color scheme","tags":"$:/tags/Palette","type":"application/x-tiddler-dictionary","license":"https://github.com/morhetz/gruvbox","text":"alert-background: #cc241d\nalert-border: #cc241d\nalert-highlight: #d79921\nalert-muted-foreground: #504945\nbackground: #3c3836\nblockquote-bar: <<colour muted-foreground>>\nbutton-foreground: <<colour page-background>>\ncode-background: #504945\ncode-border: #504945\ncode-foreground: #fb4934\ndiff-delete-background: #fb4934\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #b8bb26\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #fb4934\ndownload-background: #b8bb26\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #665c54\ndropdown-border: <<colour background>>\ndropdown-tab-background-selected: #ebdbb2\ndropdown-tab-background: #665c54\ndropzone-background: #98971a\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #d3869b\nexternal-link-foreground: #8ec07c\nforeground: #fbf1c7\nmenubar-background: #504945\nmenubar-foreground: <<colour foreground>>\nmessage-background: #83a598\nmessage-border: #83a598\nmessage-foreground: #3c3836\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #504945\nmodal-footer-background: #3c3836\nmodal-footer-border: #3c3836\nmodal-header-border: #3c3836\nmuted-foreground: #d5c4a1\nnotification-background: <<colour primary>>\nnotification-border: <<colour primary>>\npage-background: #282828\npre-background: #504945\npre-border: #504945\nprimary: #d79921\nselect-tag-background: #665c54\nselect-tag-foreground: <<colour foreground>>\nselection-background: #458588\nselection-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour page-background>>\nsidebar-controls-foreground-hover: #7c6f64\nsidebar-controls-foreground: #504945\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #fbf1c7\nsidebar-muted-foreground-hover: #7c6f64\nsidebar-muted-foreground: #504945\nsidebar-tab-background-selected: #bdae93\nsidebar-tab-background: #3c3836\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: #bdae93\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #282828\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #458588\nsidebar-tiddler-link-foreground: #98971a\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #B48EAD\ntab-background-selected: #ebdbb2\ntab-background: #665c54\ntab-border-selected: #665c54\ntab-border: #665c54\ntab-divider: #bdae93\ntab-foreground-selected: #282828\ntab-foreground: #ebdbb2\ntable-border: #7c6f64\ntable-footer-background: #665c54\ntable-header-background: #504945\ntag-background: #d3869b\ntag-foreground: #282828\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #7c6f64\ntiddler-controls-foreground-selected: <<colour primary>>\ntiddler-controls-foreground: #665c54\ntiddler-editor-background: #32302f\ntiddler-editor-border-image: #282828\ntiddler-editor-border: #282828\ntiddler-editor-fields-even: #504945\ntiddler-editor-fields-odd: #7c6f64\ntiddler-info-background: #32302f\ntiddler-info-border: #ebdbb2\ntiddler-info-tab-background: #ebdbb2\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #7c6f64\ntiddler-title-foreground: #a89984\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #504945\nvery-muted-foreground: #bdae93\nwikilist-background: <<colour page-background>>\nwikilist-button-background: #acacac\nwikilist-button-foreground: <<colour button-foreground>>\nwikilist-item: <<colour background>>\nwikilist-toolbar-background: <<colour background>>\nwikilist-toolbar-foreground: <<colour foreground>>\nwikilist-title: <<colour foreground>>\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: <<colour muted-foreground>>\nwikilist-button-open-hover: <<colour primary>>\nwikilist-button-open: <<colour dropzone-background>>\nwikilist-button-remove: <<colour dirty-indicator>>\nwikilist-button-remove-hover: <<colour alert-background>>\nwikilist-droplink-dragover: <<colour dropzone-background>>\nwikilist-button-reveal: <<colour sidebar-tiddler-link-foreground-hover>>\nwikilist-button-reveal-hover: <<colour message-background>>\n"},"$:/palettes/Nord":{"name":"Nord","description":"An arctic, north-bluish color palette.","tags":"$:/tags/Palette","type":"application/x-tiddler-dictionary","license":"MIT, arcticicestudio, https://github.com/arcticicestudio/nord/blob/develop/LICENSE.md","text":"alert-background: #D08770\nalert-border: #D08770\nalert-highlight: #B48EAD\nalert-muted-foreground: #4C566A\nbackground: #3b4252\nblockquote-bar: <<colour muted-foreground>>\nbutton-foreground: <<colour page-background>>\ncode-background: #2E3440\ncode-border: #2E3440\ncode-foreground: #BF616A\ndiff-delete-background: #BF616A\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #A3BE8C\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #BF616A\ndownload-background: #A3BE8C\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour background>>\ndropdown-tab-background-selected: #ECEFF4\ndropdown-tab-background: #4C566A\ndropzone-background: #A3BE8C\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #5E81AC\nexternal-link-foreground: #8FBCBB\nforeground: #d8dee9\nmenubar-background: #2E3440\nmenubar-foreground: #d8dee9\nmessage-background: #2E3440\nmessage-border: #2E3440\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #3b4252\nmodal-footer-background: #3b4252\nmodal-footer-border: #3b4252\nmodal-header-border: #3b4252\nmuted-foreground: #4C566A\nnotification-background: <<colour primary>>\nnotification-border: #EBCB8B\npage-background: #2e3440\npre-background: #2E3440\npre-border: #2E3440\nprimary: #5E81AC\nselect-tag-background: #3b4252\nselect-tag-foreground: <<colour foreground>>\nselection-background: #5E81AC\nselection-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour page-background>>\nsidebar-controls-foreground-hover: #D8DEE9\nsidebar-controls-foreground: #4C566A\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #D8DEE9\nsidebar-muted-foreground-hover: #4C566A\nsidebar-muted-foreground: #4C566A\nsidebar-tab-background-selected: #ECEFF4\nsidebar-tab-background: #4C566A\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: #4C566A\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #4C566A\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #A3BE8C\nsidebar-tiddler-link-foreground: #81A1C1\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #B48EAD\ntab-background-selected: #ECEFF4\ntab-background: #4C566A\ntab-border-selected: #4C566A\ntab-border: #4C566A\ntab-divider: #4C566A\ntab-foreground-selected: #4C566A\ntab-foreground: #D8DEE9\ntable-border: #4C566A\ntable-footer-background: #2e3440\ntable-header-background: #2e3440\ntag-background: #A3BE8C\ntag-foreground: #4C566A\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: \ntiddler-controls-foreground-selected: #EBCB8B\ntiddler-controls-foreground: #4C566A\ntiddler-editor-background: #2e3440\ntiddler-editor-border-image: #2e3440\ntiddler-editor-border: #3b4252\ntiddler-editor-fields-even: #2e3440\ntiddler-editor-fields-odd: #2e3440\ntiddler-info-background: #2e3440\ntiddler-info-border: #2e3440\ntiddler-info-tab-background: #2e3440\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #4C566A\ntiddler-title-foreground: #81A1C1\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #2d3038\nvery-muted-foreground: #2d3038\nwikilist-background: <<colour page-background>>\nwikilist-toolbar-background: <<colour background>>\nwikilist-item: <<colour background>>\nwikilist-title: <<colour foreground>>\nwikilist-info: <<colour muted-foreground>>\nwikilist-button-open: #A3BE8C\nwikilist-button-open-hover: #A3BE8C\nwikilist-button-reveal: #81A1C1\nwikilist-button-reveal-hover: #81A1C1\nwikilist-button-remove: #B48EAD\nwikilist-button-remove-hover: #B48EAD\n"},"$:/palettes/Rocker":{"name":"Rocker","description":"A dark theme","tags":"$:/tags/Palette","type":"application/x-tiddler-dictionary","text":"alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #000\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #cc0000\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.0)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #000\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #ffbb99\nsidebar-tiddler-link-foreground: #cc0000\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffbb99\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #cc0000\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"},"$:/palettes/SolarFlare":{"name":"Solar Flare","description":"Warm, relaxing earth colours","tags":"$:/tags/Palette","type":"application/x-tiddler-dictionary","text":": Background Tones\n\nbase03: #002b36\nbase02: #073642\n\n: Content Tones\n\nbase01: #586e75\nbase00: #657b83\nbase0: #839496\nbase1: #93a1a1\n\n: Background Tones\n\nbase2: #eee8d5\nbase3: #fdf6e3\n\n: Accent Colors\n\nyellow: #b58900\norange: #cb4b16\nred: #dc322f\nmagenta: #d33682\nviolet: #6c71c4\nblue: #268bd2\ncyan: #2aa198\ngreen: #859900\n\n: Additional Tones (RA)\n\nbase10: #c0c4bb\nviolet-muted: #7c81b0\nblue-muted: #4e7baa\n\nyellow-hot: #ffcc44\norange-hot: #eb6d20\nred-hot: #ff2222\nblue-hot: #2298ee\ngreen-hot: #98ee22\n\n: Palette\n\n: Do not use colour macro for background and foreground\nbackground: #fdf6e3\n download-foreground: <<colour background>>\n dragger-foreground: <<colour background>>\n dropdown-background: <<colour background>>\n modal-background: <<colour background>>\n sidebar-foreground-shadow: <<colour background>>\n tiddler-background: <<colour background>>\n tiddler-border: <<colour background>>\n tiddler-link-background: <<colour background>>\n tab-background-selected: <<colour background>>\n dropdown-tab-background-selected: <<colour tab-background-selected>>\nforeground: #657b83\n dragger-background: <<colour foreground>>\n tab-foreground: <<colour foreground>>\n tab-foreground-selected: <<colour tab-foreground>>\n sidebar-tab-foreground-selected: <<colour tab-foreground-selected>>\n sidebar-tab-foreground: <<colour tab-foreground>>\n sidebar-button-foreground: <<colour foreground>>\n sidebar-controls-foreground: <<colour foreground>>\n sidebar-foreground: <<colour foreground>>\n: base03\n: base02\n: base01\n alert-muted-foreground: <<colour base01>>\n: base00\n code-foreground: <<colour base00>>\n message-foreground: <<colour base00>>\n tag-foreground: <<colour base00>>\n: base0\n sidebar-tiddler-link-foreground: <<colour base0>>\n: base1\n muted-foreground: <<colour base1>>\n blockquote-bar: <<colour muted-foreground>>\n dropdown-border: <<colour muted-foreground>>\n sidebar-muted-foreground: <<colour muted-foreground>>\n tiddler-title-foreground: <<colour muted-foreground>>\n site-title-foreground: <<colour tiddler-title-foreground>>\n: base2\n modal-footer-background: <<colour base2>>\n page-background: <<colour base2>>\n modal-backdrop: <<colour page-background>>\n notification-background: <<colour page-background>>\n code-background: <<colour page-background>>\n code-border: <<colour code-background>>\n pre-background: <<colour page-background>>\n pre-border: <<colour pre-background>>\n sidebar-tab-background-selected: <<colour page-background>>\n table-header-background: <<colour base2>>\n tag-background: <<colour base2>>\n tiddler-editor-background: <<colour base2>>\n tiddler-info-background: <<colour base2>>\n tiddler-info-tab-background: <<colour base2>>\n tab-background: <<colour base2>>\n dropdown-tab-background: <<colour tab-background>>\n: base3\n alert-background: <<colour base3>>\n message-background: <<colour base3>>\n: yellow\n: orange\n: red\n: magenta\n alert-highlight: <<colour magenta>>\n: violet\n external-link-foreground: <<colour violet>>\n: blue\n: cyan\n: green\n: base10\n tiddler-controls-foreground: <<colour base10>>\n: violet-muted\n external-link-foreground-visited: <<colour violet-muted>>\n: blue-muted\n primary: <<colour blue-muted>>\n download-background: <<colour primary>>\n tiddler-link-foreground: <<colour primary>>\n\nalert-border: #b99e2f\ndirty-indicator: #ff0000\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nmessage-border: #cfd6e6\nmodal-border: #999999\nselect-tag-background:\nselect-tag-foreground:\nsidebar-controls-foreground-hover:\nsidebar-muted-foreground-hover:\nsidebar-tab-background: #ded8c5\nsidebar-tiddler-link-foreground-hover:\nstatic-alert-foreground: #aaaaaa\ntab-border: #cccccc\n modal-footer-border: <<colour tab-border>>\n modal-header-border: <<colour tab-border>>\n notification-border: <<colour tab-border>>\n sidebar-tab-border: <<colour tab-border>>\n tab-border-selected: <<colour tab-border>>\n sidebar-tab-border-selected: <<colour tab-border-selected>>\ntab-divider: #d8d8d8\n sidebar-tab-divider: <<colour tab-divider>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-border: #dddddd\ntiddler-subtitle-foreground: #c0c0c0\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"},"$:/palettes/SolarizedDark":{"tags":"$:/tags/Palette","type":"application/x-tiddler-dictionary","description":"Precision dark colors for machines and people","license":"MIT, Ethan Schoonover, https://github.com/altercation/solarized/blob/master/LICENSE","name":"SolarizedDark","text":"alert-background: #073642\nalert-border: #93a1a1\nalert-highlight: #d33682\nalert-muted-foreground: #d33682\nbackground: #073642\nblockquote-bar: #d33682\nbutton-background: #073642\nbutton-border: #586e75\nbutton-foreground: #93a1a1\ncode-background: #073642\ncode-border: #586e75\ncode-foreground: #93a1a1\ndirty-indicator: inherit\ndownload-background: #859900\ndownload-foreground: #073642\ndragger-background: #073642\ndragger-foreground: #839496\ndropdown-background: #073642\ndropdown-border: #93a1a1\ndropdown-tab-background: #002b36\ndropdown-tab-background-selected: #073642\ndropzone-background: #859900\nexternal-link-background: inherit\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-foreground: #268bd2\nexternal-link-foreground-hover:\nexternal-link-foreground-visited: #268bd2\nforeground: #839496\nmessage-background: #002b36\nmessage-border: #586e75\nmessage-foreground: #839496\nmodal-backdrop: #657b83\nmodal-background: #002b36\nmodal-border: #586e75\nmodal-footer-background: #073642\nmodal-footer-border: #586e75\nmodal-header-border: #586e75\nmuted-foreground: #93a1a1\nnotification-background: #002b36\nnotification-border: #586e75\npage-background: #073642\npre-background: inherit\npre-border: #657b83\nprimary: #859900\nselect-tag-background: #002b36\nselect-tag-foreground: #839496\nsidebar-button-foreground: #93a1a1\nsidebar-controls-foreground: #93a1a1\nsidebar-controls-foreground-hover: #eee8d5\nsidebar-foreground: #93a1a1\nsidebar-foreground-shadow: transparent\nsidebar-muted-foreground: #839496\nsidebar-muted-foreground-hover: #93a1a1\nsidebar-tab-background: #002b36\nsidebar-tab-background-selected: #073642\nsidebar-tab-border: #073642\nsidebar-tab-border-selected: #839496\nsidebar-tab-divider: #002b36\nsidebar-tab-foreground: #657b83\nsidebar-tab-foreground-selected: #93a1a1\nsidebar-tiddler-link-foreground: #2aa198\nsidebar-tiddler-link-foreground-hover: #eee8d5\nsite-title-foreground: #d33682\nstatic-alert-foreground: #93a1a1\ntab-background: #073642\ntab-background-selected: #002b36\ntab-border: #586e75\ntab-border-selected: #93a1a1\ntab-divider: #93a1a1\ntab-foreground: #839496\ntab-foreground-selected: #93a1a1\ntable-border: #586e75\ntable-footer-background: #073642\ntable-header-background: #073642\ntag-background: #b58900\ntag-foreground: #002b36\ntiddler-background: #002b36\ntiddler-border: #586e75\ntiddler-controls-foreground: inherit\ntiddler-controls-foreground-hover: #d33682\ntiddler-controls-foreground-selected: #2aa198\ntiddler-editor-background: #002b36\ntiddler-editor-border: #073642\ntiddler-editor-border-image: #002b36\ntiddler-editor-fields-even: #002b36\ntiddler-editor-fields-odd: #073642\ntiddler-info-background: #073642\ntiddler-info-border: #657b83\ntiddler-info-tab-background: #002b36\ntiddler-link-background: #002b36\ntiddler-link-foreground: #2aa198\ntiddler-subtitle-foreground: #839496\ntiddler-title-foreground: #d33682\ntoolbar-cancel-button: #839496\ntoolbar-close-button: #839496\ntoolbar-delete-button: #dc322f\ntoolbar-done-button: #839496\ntoolbar-edit-button: #839496\ntoolbar-info-button: #839496\ntoolbar-new-button: #839496\ntoolbar-options-button: #839496\ntoolbar-save-button: inherit\nuntagged-background: #586e75\nvery-muted-foreground: #586e75\n"},"$:/palettes/SolarizedLight":{"tags":"$:/tags/Palette","type":"application/x-tiddler-dictionary","description":"Precision colors for machines and people","license":"MIT, Ethan Schoonover, https://github.com/altercation/solarized/blob/master/LICENSE","name":"SolarizedLight","text":"alert-background: #eee8d5\nalert-border: #586e75\nalert-highlight: #d33682\nalert-muted-foreground: #d33682\nbackground: #eee8d5\nblockquote-bar: #d33682\nbutton-background: #eee8d5\nbutton-border: #93a1a1\nbutton-foreground: #586e75\ncode-background: #eee8d5\ncode-border: #93a1a1\ncode-foreground: #586e75\ndirty-indicator: inherit\ndownload-background: #859900\ndownload-foreground: #eee8d5\ndragger-background: #eee8d5\ndragger-foreground: #657b83\ndropdown-background: #eee8d5\ndropdown-border: #586e75\ndropdown-tab-background: #fdf6e3\ndropdown-tab-background-selected: #eee8d5\ndropzone-background: #859900\nexternal-link-background: inherit\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-foreground: #268bd2\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #268bd2\nforeground: #657b83\nmessage-background: #fdf6e3\nmessage-border: #93a1a1\nmessage-foreground: #657b83\nmodal-backdrop: #839496\nmodal-background: #fdf6e3\nmodal-border: #93a1a1\nmodal-footer-background: #eee8d5\nmodal-footer-border: #93a1a1\nmodal-header-border: #93a1a1\nmuted-foreground: #586e75\nnotification-background: #fdf6e3\nnotification-border: #93a1a1\npage-background: #eee8d5\npre-background: #eee8d5\npre-border: #839496\nprimary: #859900\nselect-tag-background: #fdf6e3\nselect-tag-foreground: #657b83\nsidebar-button-foreground: #586e75\nsidebar-controls-foreground: #586e75\nsidebar-controls-foreground-hover: #d33682\nsidebar-foreground: #586e75\nsidebar-foreground-shadow: transparent\nsidebar-muted-foreground: #657b83\nsidebar-muted-foreground-hover: #586e75\nsidebar-tab-background: #fdf6e3\nsidebar-tab-background-selected: #eee8d5\nsidebar-tab-border: #eee8d5\nsidebar-tab-border-selected: #657b83\nsidebar-tab-divider: #fdf6e3\nsidebar-tab-foreground: #839496\nsidebar-tab-foreground-selected: #586e75\nsidebar-tiddler-link-foreground: #2aa198\nsidebar-tiddler-link-foreground-hover: #002b36\nsite-title-foreground: #d33682\nstatic-alert-foreground: #586e75\ntab-background: #eee8d5\ntab-background-selected: #fdf6e3\ntab-border: #93a1a1\ntab-border-selected: #586e75\ntab-divider: #586e75\ntab-foreground: #657b83\ntab-foreground-selected: #586e75\ntable-border: #93a1a1\ntable-footer-background: #eee8d5\ntable-header-background: #eee8d5\ntag-background: #b58900\ntag-foreground: #fdf6e3\ntiddler-background: #fdf6e3\ntiddler-border: #93a1a1\ntiddler-controls-foreground: inherit\ntiddler-controls-foreground-hover: #d33682\ntiddler-controls-foreground-selected: #2aa198\ntiddler-editor-background: #fdf6e3\ntiddler-editor-border: #eee8d5\ntiddler-editor-border-image: #fdf6e3\ntiddler-editor-fields-even: #fdf6e3\ntiddler-editor-fields-odd: #eee8d5\ntiddler-info-background: #eee8d5\ntiddler-info-border: #839496\ntiddler-info-tab-background: #fdf6e3\ntiddler-link-background: #fdf6e3\ntiddler-link-foreground: #2aa198\ntiddler-subtitle-foreground: #657b83\ntiddler-title-foreground: #d33682\ntoolbar-cancel-button: #657b83\ntoolbar-close-button: #657b83\ntoolbar-delete-button: #dc322f\ntoolbar-done-button: #657b83\ntoolbar-edit-button: #657b83\ntoolbar-info-button: #657b83\ntoolbar-new-button: #657b83\ntoolbar-options-button: #657b83\ntoolbar-save-button: inherit\nuntagged-background: #586e75\nvery-muted-foreground: #93a1a1\n"},"$:/palettes/SpartanDay":{"tags":"$:/tags/Palette","type":"application/x-tiddler-dictionary","description":"Cold, spartan day colors","name":"Spartan Day","text":"alert-background: <<colour background>>\nalert-border: <<colour very-muted-foreground>>\nalert-highlight: <<colour very-muted-foreground>>\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #FAFAFA\nblockquote-bar: <<colour page-background>>\nbutton-background: transparent\nbutton-foreground: inherit\nbutton-border: <<colour tag-background>>\ncode-background: #ececec\ncode-border: #ececec\ncode-foreground: \ndirty-indicator: #c80000\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #FFFFFF\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: <<colour dropdown-background>>\ndropdown-tab-background: #F5F5F5\ndropzone-background: <<colour tag-background>>\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: \nexternal-link-foreground: \nforeground: rgba(0, 0, 0, 0.87)\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(0, 0, 0, 0.54)\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour very-muted-foreground>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: rgba(0, 0, 0, 0.54)\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #f4f4f4\npre-background: #ececec\npre-border: #ececec\nprimary: #3949ab\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #aeaeae\nsidebar-controls-foreground: #c6c6c6\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(0, 0, 0, 0.54)\nsidebar-muted-foreground-hover: rgba(0, 0, 0, 0.54)\nsidebar-muted-foreground: rgba(0, 0, 0, 0.38)\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: transparent\nsidebar-tab-border-selected: <<colour table-border>>\nsidebar-tab-border: transparent\nsidebar-tab-divider: <<colour table-border>>\nsidebar-tab-foreground-selected: rgba(0, 0, 0, 0.87)\nsidebar-tab-foreground: rgba(0, 0, 0, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(0, 0, 0, 0.87)\nsidebar-tiddler-link-foreground: rgba(0, 0, 0, 0.54)\nsite-title-foreground: rgba(0, 0, 0, 0.87)\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: transparent\ntab-border-selected: <<colour table-border>>\ntab-border: transparent\ntab-divider: <<colour table-border>>\ntab-foreground-selected: rgba(0, 0, 0, 0.87)\ntab-foreground: rgba(0, 0, 0, 0.54)\ntable-border: #d8d8d8\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #ec6\ntag-foreground: <<colour button-foreground>>\ntiddler-background: <<colour background>>\ntiddler-border: #f9f9f9\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: <<colour sidebar-controls-foreground>>\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: #e8e7e7\ntiddler-editor-fields-even: rgba(0, 0, 0, 0.1)\ntiddler-editor-fields-odd: rgba(0, 0, 0, 0.04)\ntiddler-info-background: #F5F5F5\ntiddler-info-border: #F5F5F5\ntiddler-info-tab-background: <<colour tiddler-editor-fields-odd>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #000000\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour very-muted-foreground>>\nvery-muted-foreground: rgba(0, 0, 0, 0.12)\n"},"$:/palettes/SpartanNight":{"tags":"$:/tags/Palette","type":"application/x-tiddler-dictionary","description":"Dark spartan colors","name":"Spartan Night","text":"alert-background: <<colour background>>\nalert-border: <<colour very-muted-foreground>>\nalert-highlight: <<colour very-muted-foreground>>\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #303030\nblockquote-bar: <<colour page-background>>\nbutton-background: transparent\nbutton-foreground: inherit\nbutton-border: <<colour tag-background>>\ncode-background: <<colour pre-background>>\ncode-border: <<colour pre-border>>\ncode-foreground: rgba(255, 255, 255, 0.54)\ndirty-indicator: #c80000\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #424242\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: <<colour dropdown-background>>\ndropdown-tab-background: #050505\ndropzone-background: <<colour tag-background>>\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: #7c318c\nexternal-link-foreground: #9e3eb3\nforeground: rgba(255, 255, 255, 0.7)\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(255, 255, 255, 0.54)\nmodal-backdrop: <<colour page-background>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour background>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: rgba(255, 255, 255, 0.54)\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #212121\npre-background: #2a2a2a\npre-border: transparent\nprimary: #5656f3\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #494949\nsidebar-controls-foreground: #5d5d5d\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground-hover: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground: rgba(255, 255, 255, 0.38)\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: transparent\nsidebar-tab-border-selected: <<colour table-border>>\nsidebar-tab-border: transparent\nsidebar-tab-divider: <<colour table-border>>\nsidebar-tab-foreground-selected: rgba(255, 255, 255, 0.87)\nsidebar-tab-foreground: rgba(255, 255, 255, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(255, 255, 255, 0.7)\nsidebar-tiddler-link-foreground: rgba(255, 255, 255, 0.54)\nsite-title-foreground: rgba(255, 255, 255, 0.7)\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: transparent\ntab-border-selected: <<colour table-border>>\ntab-border: transparent\ntab-divider: <<colour table-border>>\ntab-foreground-selected: rgba(255, 255, 255, 0.87)\ntab-foreground: rgba(255, 255, 255, 0.54)\ntable-border: #3a3a3a\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #ec6\ntag-foreground: <<colour button-foreground>>\ntiddler-background: <<colour background>>\ntiddler-border: rgb(55,55,55)\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: <<colour sidebar-controls-foreground>>\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: rgba(255, 255, 255, 0.08)\ntiddler-editor-fields-even: rgba(255, 255, 255, 0.1)\ntiddler-editor-fields-odd: rgba(255, 255, 255, 0.04)\ntiddler-info-background: #454545\ntiddler-info-border: #454545\ntiddler-info-tab-background: <<colour tiddler-editor-fields-odd>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #FFFFFF\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour very-muted-foreground>>\nvery-muted-foreground: rgba(255, 255, 255, 0.12)\n"},"$:/palettes/Twilight":{"tags":"$:/tags/Palette","author":"Thomas Elmiger","type":"application/x-tiddler-dictionary","name":"Twilight","description":"Delightful, soft darkness.","text":"alert-background: rgb(255, 255, 102)\nalert-border: rgb(232, 232, 125)\nalert-highlight: rgb(255, 51, 51)\nalert-muted-foreground: rgb(224, 82, 82)\nbackground: rgb(38, 38, 38)\nblockquote-bar: rgba(240, 196, 117, 0.7)\nbutton-background: rgb(63, 63, 63)\nbutton-border: rgb(127, 127, 127)\nbutton-foreground: rgb(179, 179, 179)\ncode-background: rgba(0,0,0,0.03)\ncode-border: rgba(0,0,0,0.08)\ncode-foreground: rgb(255, 94, 94)\ndiff-delete-background: #ffc9c9\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #aaefad\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: rgb(255, 94, 94)\ndownload-background: #19a974\ndownload-foreground: rgb(38, 38, 38)\ndragger-background: rgb(179, 179, 179)\ndragger-foreground: rgb(38, 38, 38)\ndropdown-background: rgb(38, 38, 38)\ndropdown-border: rgb(255, 255, 255)\ndropdown-tab-background: rgba(0,0,0,.1)\ndropdown-tab-background-selected: rgba(255,255,255,1)\ndropzone-background: #9eebcf\nexternal-link-background: inherit\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-foreground: rgb(179, 179, 255)\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: rgb(153, 153, 255)\nforeground: rgb(179, 179, 179)\nmessage-background: <<colour tag-foreground>>\nmessage-border: #96ccff\nmessage-foreground: <<colour tag-background>>\nmodal-backdrop: rgb(179, 179, 179)\nmodal-background: rgb(38, 38, 38)\nmodal-border: rgba(0,0,0,.5)\nmodal-footer-background: #f4f4f4\nmodal-footer-border: rgba(0,0,0,.1)\nmodal-header-border: rgba(0,0,0,.2)\nmuted-foreground: rgb(255, 255, 255)\nnotification-background: <<colour tag-foreground>>\nnotification-border: <<colour tag-background>>\npage-background: rgb(26, 26, 26)\npre-background: rgb(25, 25, 25)\npre-border: rgba(0,0,0,.2)\nprimary: rgb(255, 201, 102)\nselect-tag-background: \nselect-tag-foreground: \nsidebar-button-foreground: rgb(179, 179, 179)\nsidebar-controls-foreground: rgb(153, 153, 153)\nsidebar-controls-foreground-hover: <<colour tiddler-controls-foreground-hover>>\nsidebar-foreground: rgb(141, 141, 141)\nsidebar-foreground-shadow: transparent\nsidebar-muted-foreground: rgba(0, 0, 0, 0.5)\nsidebar-muted-foreground-hover: rgb(141, 141, 141)\nsidebar-tab-background: rgba(141, 141, 141, 0.2)\nsidebar-tab-background-selected: rgb(26, 26, 26)\nsidebar-tab-border: rgb(127, 127, 127)\nsidebar-tab-border-selected: rgb(127, 127, 127)\nsidebar-tab-divider: rgb(127, 127, 127)\nsidebar-tab-foreground: rgb(179, 179, 179)\nsidebar-tab-foreground-selected: rgb(179, 179, 179)\nsidebar-tiddler-link-foreground: rgb(179, 179, 179)\nsidebar-tiddler-link-foreground-hover: rgb(115, 115, 115)\nsite-title-foreground: rgb(255, 201, 102)\nstatic-alert-foreground: rgba(0,0,0,.3)\ntab-background: rgba(0,0,0,0.125)\ntab-background-selected: rgb(38, 38, 38)\ntab-border: rgb(255, 201, 102)\ntab-border-selected: rgb(255, 201, 102)\ntab-divider: rgb(255, 201, 102)\ntab-foreground: rgb(179, 179, 179)\ntab-foreground-selected: rgb(179, 179, 179)\ntable-border: rgba(255,255,255,.3)\ntable-footer-background: rgba(0,0,0,.4)\ntable-header-background: rgba(0,0,0,.1)\ntag-background: rgb(255, 201, 102)\ntag-foreground: rgb(25, 25, 25)\ntiddler-background: rgb(38, 38, 38)\ntiddler-border: rgba(240, 196, 117, 0.7)\ntiddler-controls-foreground: rgb(128, 128, 128)\ntiddler-controls-foreground-hover: rgba(255, 255, 255, 0.8)\ntiddler-controls-foreground-selected: rgba(255, 255, 255, 0.9)\ntiddler-editor-background: rgb(33, 33, 33)\ntiddler-editor-border: rgb(63, 63, 63)\ntiddler-editor-border-image: rgb(25, 25, 25)\ntiddler-editor-fields-even: rgb(33, 33, 33)\ntiddler-editor-fields-odd: rgb(28, 28, 28)\ntiddler-info-background: rgb(43, 43, 43)\ntiddler-info-border: rgb(25, 25, 25)\ntiddler-info-tab-background: rgb(43, 43, 43)\ntiddler-link-background: rgb(38, 38, 38)\ntiddler-link-foreground: rgb(204, 204, 255)\ntiddler-subtitle-foreground: rgb(255, 255, 255)\ntiddler-title-foreground: rgb(255, 192, 76)\ntoolbar-cancel-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-done-button: \ntoolbar-edit-button: \ntoolbar-info-button: \ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \nuntagged-background: rgb(255, 255, 255)\nvery-muted-foreground: rgba(240, 196, 117, 0.7)\n"},"$:/palettes/Vanilla":{"name":"Vanilla","description":"Pale and unobtrusive","tags":"$:/tags/Palette","type":"application/x-tiddler-dictionary","text":"alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndiff-delete-background: #ffc9c9\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #aaefad\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #f4f4f4\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselection-background:\nselection-foreground:\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #aaaaaa\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #f4f4f4\nsidebar-tab-background: #e0e0e0\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: #e4e4e4\nsidebar-tab-foreground-selected:\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #999999\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\nwikilist-background: #e5e5e5\nwikilist-item: #fff\nwikilist-info: #000\nwikilist-title: #666\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: #aaa\nwikilist-button-open: #4fb82b\nwikilist-button-open-hover: green\nwikilist-button-reveal: #5778d8\nwikilist-button-reveal-hover: blue\nwikilist-button-remove: #d85778\nwikilist-button-remove-hover: red\nwikilist-toolbar-background: #d3d3d3\nwikilist-toolbar-foreground: #888\nwikilist-droplink-dragover: rgba(255,192,192,0.5)\nwikilist-button-background: #acacac\nwikilist-button-foreground: #000\n"},"$:/core/readme":{"text":"This plugin contains TiddlyWiki's core components, comprising:\n\n* JavaScript code modules\n* Icons\n* Templates needed to create TiddlyWiki's user interface\n* British English (''en-GB'') translations of the localisable strings used by the core\n"},"$:/library/sjcl.js/license":{"type":"text/plain","text":"SJCL is open. You can use, modify and redistribute it under a BSD\nlicense or under the GNU GPL, version 2.0.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/BSD-2-Clause\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n1. Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright\nnotice, this list of conditions and the following disclaimer in the\ndocumentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\nIS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\nTO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\nPARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/GPL-2.0\n\nThe Stanford Javascript Crypto Library (hosted here on GitHub) is a\nproject by the Stanford Computer Security Lab to build a secure,\npowerful, fast, small, easy-to-use, cross-browser library for\ncryptography in Javascript.\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University.\n\nThis program is free software; you can redistribute it and/or modify it\nunder the terms of the GNU General Public License as published by the\nFree Software Foundation; either version 2 of the License, or (at your\noption) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General\nPublic License for more details.\n\nYou should have received a copy of the GNU General Public License along\nwith this program; if not, write to the Free Software Foundation, Inc.,\n59 Temple Place, Suite 330, Boston, MA 02111-1307 USA"},"$:/core/templates/MOTW.html":{"text":"\\rules only filteredtranscludeinline transcludeinline entity\n<!-- The following comment is called a MOTW comment and is necessary for the TiddlyIE Internet Explorer extension -->\n<!-- saved from url=(0021)https://tiddlywiki.com --> "},"$:/core/templates/alltiddlers.template.html":{"type":"text/vnd.tiddlywiki-html","text":"<!-- This template is provided for backwards compatibility with older versions of TiddlyWiki -->\n\n<$set name=\"exportFilter\" value=\"[!is[system]sort[title]]\">\n\n{{$:/core/templates/exporters/StaticRiver}}\n\n</$set>\n"},"$:/core/templates/canonical-uri-external-image":{"text":"<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external images.\n\nChange the `./images/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./images/<$view field=\"title\" format=\"doubleurlencoded\"/>"},"$:/core/templates/canonical-uri-external-raw":{"text":"<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external raw files that are stored in the same directory\n\n-->\n<$view field=\"title\" format=\"doubleurlencoded\"/>"},"$:/core/templates/canonical-uri-external-text":{"text":"<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external text files.\n\nChange the `./text/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./text/<$view field=\"title\" format=\"doubleurlencoded\"/>.tid"},"$:/core/templates/css-tiddler":{"text":"<!--\n\nThis template is used for saving CSS tiddlers as a style tag with data attributes representing the tiddler fields.\n\n-->`<style`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/css\">`<$view field=\"text\" format=\"text\" />`</style>`"},"$:/core/templates/exporters/CsvFile":{"tags":"$:/tags/Exporter","description":"{{$:/language/Exporters/CsvFile}}","extension":".csv","text":"<$macrocall $name=\"csvtiddlers\" filter=<<exportFilter>> format=\"quoted-comma-sep\" $output=\"text/raw\"/>\n"},"$:/core/templates/exporters/JsonFile":{"tags":"$:/tags/Exporter","description":"{{$:/language/Exporters/JsonFile}}","extension":".json","text":"<$macrocall $name=\"jsontiddlers\" filter=<<exportFilter>> $output=\"text/raw\"/>\n"},"$:/core/templates/exporters/StaticRiver":{"tags":"$:/tags/Exporter","description":"{{$:/language/Exporters/StaticRiver}}","extension":".html","text":"\\define tv-wikilink-template() #$uri_encoded$\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n<section class=\"tc-story-river tc-static-story-river\">\n{{$:/core/templates/exporters/StaticRiver/Content||$:/core/templates/html-tiddler}}\n</section>\n</body>\n</html>\n"},"$:/core/templates/exporters/StaticRiver/Content":{"text":"\\define renderContent()\n{{{ $(exportFilter)$ ||$:/core/templates/static-tiddler}}}\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<<renderContent>>\n"},"$:/core/templates/exporters/TidFile":{"tags":"$:/tags/Exporter","description":"{{$:/language/Exporters/TidFile}}","extension":".tid","condition":"[<count>compare:lte[1]]","text":"\\define renderContent()\n{{{ $(exportFilter)$ +[limit[1]] ||$:/core/templates/tid-tiddler}}}\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<<renderContent>>"},"$:/core/save/all-external-js":{"text":"\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[prefix[$:/temp/]] -[prefix[$:/HistoryList]] -[status[pending]plugin-type[import]] -[[$:/core]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\n\\end\n{{$:/core/templates/tiddlywiki5-external-js.html}}\n"},"$:/core/templates/tiddlywiki5.js":{"text":"\\rules only filteredtranscludeinline transcludeinline codeinline\n\n/*\n{{ $:/core/copyright.txt ||$:/core/templates/plain-text-tiddler}}\n`*/\n`<!--~~ Library modules ~~-->\n{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/plain-text-tiddler}}}\n<!--~~ Boot prefix ~~-->\n{{ $:/boot/bootprefix.js ||$:/core/templates/plain-text-tiddler}}\n<!--~~ Core plugin ~~-->\n{{$:/core/templates/tiddlywiki5.js/tiddlers}}\n<!--~~ Boot kernel ~~-->\n{{ $:/boot/boot.js ||$:/core/templates/plain-text-tiddler}}\n"},"$:/core/templates/tiddlywiki5.js/tiddlers":{"text":"`\n$tw.preloadTiddlerArray(`<$text text=<<jsontiddlers \"[[$:/core]]\">>/>`);\n`\n"},"$:/core/templates/tiddlywiki5-external-js.html":{"text":"\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n{{$:/core/templates/MOTW.html}}<html lang=\"`<$text text={{{ [{$:/language}get[name]] }}}/>`\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<!--~~ Raw markup for the top of the head section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"/>\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\" />\n<meta name=\"copyright\" content=\"{{$:/core/copyright.txt}}\" />\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\n\n<!--~~ Raw markup ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/core/wiki/rawmarkup]] [all[shadows+tiddlers]tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}\n</head>\n<body class=\"tc-body\">\n<!--~~ Raw markup for the top of the body section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}\n<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n{{$:/core/templates/static.area}}\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n{{$:/core/templates/store.area.template.html}}\n<!--~~ Raw markup for the bottom of the body section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}\n</body>\n<script src=\"%24%3A%2Fcore%2Ftemplates%2Ftiddlywiki5.js\" onerror=\"alert('Error: Cannot load tiddlywiki.js');\"></script>\n</html>\n"},"$:/core/templates/html-div-skinny-tiddler":{"text":"<!--\n\nThis template is a variant of $:/core/templates/html-div-tiddler used for saving skinny tiddlers (with no text field)\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre></pre>\n</div>`\n"},"$:/core/templates/html-div-tiddler":{"text":"<!--\n\nThis template is used for saving tiddlers as an HTML DIV tag with attributes representing the tiddler fields.\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre>`<$view field=\"text\" format=\"htmltextencoded\" />`</pre>\n</div>`\n"},"$:/core/templates/html-tiddler":{"text":"<!--\n\nThis template is used for saving tiddlers as raw HTML\n\n--><$view field=\"text\" format=\"htmlwikified\" />"},"$:/core/templates/javascript-tiddler":{"text":"<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields.\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\">`<$view field=\"text\" format=\"text\" />`</script>`"},"$:/core/templates/json-tiddler":{"text":"<!--\n\nThis template is used for saving tiddlers as raw JSON\n\n--><$text text=<<jsontiddler>>/>"},"$:/core/templates/module-tiddler":{"text":"<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields. The body of the tiddler is wrapped in a call to the `$tw.modules.define` function in order to define the body of the tiddler as a module\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\" data-module=\"yes\">$tw.modules.define(\"`<$view field=\"title\" format=\"jsencoded\" />`\",\"`<$view field=\"module-type\" format=\"jsencoded\" />`\",function(module,exports,require) {`<$view field=\"text\" format=\"text\" />`});\n</script>`"},"$:/core/templates/plain-text-tiddler":{"text":"<$view field=\"text\" format=\"text\" />"},"$:/core/templates/raw-static-tiddler":{"text":"<!--\n\nThis template is used for saving tiddlers as static HTML\n\n--><$view field=\"text\" format=\"plainwikified\" />"},"$:/core/save/all":{"text":"\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[prefix[$:/temp/]] -[prefix[$:/HistoryList]] -[status[pending]plugin-type[import]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"},"$:/core/save/empty":{"text":"\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"},"$:/core/save/lazy-all":{"text":"\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] \n\\end\n\\define skinnySaveTiddlerFilter()\n[!is[system]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"},"$:/core/save/lazy-images":{"text":"\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] -[!is[system]is[image]] +[sort[title]] \n\\end\n\\define skinnySaveTiddlerFilter()\n[!is[system]is[image]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"},"$:/core/templates/server/static.sidebar.wikitext":{"text":"\\whitespace trim\n<div class=\"tc-sidebar-scrollable\" style=\"overflow: auto;\">\n<div class=\"tc-sidebar-header\">\n<h1 class=\"tc-site-title\">\n<$transclude tiddler=\"$:/SiteTitle\"/>\n</h1>\n<div class=\"tc-site-subtitle\">\n<$transclude tiddler=\"$:/SiteSubtitle\"/>\n</div>\n<h2>\n</h2>\n<div class=\"tc-sidebar-lists\">\n<$list filter={{$:/DefaultTiddlers}}>\n<div class=\"tc-menu-list-subitem\">\n<$link><$text text=<<currentTiddler>>/></$link>\n</div>\n</$list>\n</div>\n<!-- Currently disabled the recent list as it is unweildy when the responsive narrow view kicks in\n<h2>\n{{$:/language/SideBar/Recent/Caption}}\n</h2>\n<div class=\"tc-sidebar-lists\">\n<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n</div>\n</div>\n</div>\n-->\n"},"$:/core/templates/server/static.tiddler.html":{"text":"\\whitespace trim\n\\define tv-wikilink-template() $uri_encoded$\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content={{$:/core/templates/version}} />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"%24%3A%2Fcore%2Ftemplates%2Fstatic.template.css\">\n<title><$view field=\"caption\" format=\"plainwikified\"><$view field=\"title\"/></$view>: <$view tiddler=\"$:/core/wiki/title\" format=\"plainwikified\"/></title>\n</head>\n<body class=\"tc-body\">\n<$transclude tiddler=\"$:/core/templates/server/static.sidebar.wikitext\" mode=\"inline\"/>\n<section class=\"tc-story-river\">\n<div class=\"tc-tiddler-frame\">\n<$transclude tiddler=\"$:/core/templates/server/static.tiddler.wikitext\" mode=\"inline\"/>\n</div>\n</section>\n</body>\n</html>"},"$:/core/templates/server/static.tiddler.wikitext":{"text":"\\whitespace trim\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<h2><$text text=<<currentTiddler>>/></h2>\n</div>\n</div>\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}}>\n<$view field=\"modifier\"/>\n</$link> <$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n<div class=\"tc-tags-wrapper\">\n<$list filter=\"[all[current]tags[]sort[title]]\">\n<a href={{{ [<currentTiddler>encodeuricomponent[]] }}}>\n<$macrocall $name=\"tag-pill\" tag=<<currentTiddler>>/>\n</a>\n</$list>\n</div>\n<div class=\"tc-tiddler-body\">\n<$transclude mode=\"block\"/>\n</div>\n"},"$:/core/templates/single.tiddler.window":{"text":"\\whitespace trim\n\\define containerClasses()\ntc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$vars\n\ttv-config-toolbar-icons={{$:/config/Toolbar/Icons}}\n\ttv-config-toolbar-text={{$:/config/Toolbar/Text}}\n\ttv-config-toolbar-class={{$:/config/Toolbar/ButtonClass}}\n\ttv-show-missing-links={{$:/config/MissingLinks}}\n\tstoryviewTitle={{$:/view}}\n\tlanguageTitle={{{ [{$:/language}get[name]] }}}>\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n\n<$transclude mode=\"block\"/>\n\n</$navigator>\n\n</div>\n\n</$vars>\n"},"$:/core/templates/split-recipe":{"text":"<$list filter=\"[!is[system]]\">\ntiddler: <$view field=\"title\" format=\"urlencoded\"/>.tid\n</$list>\n"},"$:/core/templates/static-tiddler":{"text":"<a name=<<currentTiddler>>>\n<$transclude tiddler=\"$:/core/ui/ViewTemplate\"/>\n</a>"},"$:/core/templates/static.area":{"text":"<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawStaticContent]!has[draft.of]] ||$:/core/templates/raw-static-tiddler}}}\n{{$:/core/templates/static.content||$:/core/templates/html-tiddler}}\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\nThis file contains an encrypted ~TiddlyWiki. Enable ~JavaScript and enter the decryption password when prompted.\n</$reveal>\n<!-- ensure splash screen isn't shown when JS is disabled -->\n`<style>\n.tc-remove-when-wiki-loaded {display: none;}\n</style>`\n"},"$:/core/templates/static.content":{"text":"<!-- For Google, and people without JavaScript-->\nThis [[TiddlyWiki|https://tiddlywiki.com]] contains the following tiddlers:\n\n<ul>\n<$list filter=<<saveTiddlerFilter>>>\n<li><$view field=\"title\" format=\"text\"></$view></li>\n</$list>\n</ul>\n"},"$:/core/templates/static.template.css":{"text":"{{$:/boot/boot.css||$:/core/templates/plain-text-tiddler}}\n\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n"},"$:/core/templates/static.template.html":{"type":"text/vnd.tiddlywiki-html","text":"\\define tv-wikilink-template() static/$uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n{{$:/core/ui/PageTemplate||$:/core/templates/html-tiddler}}\n</body>\n</html>\n"},"$:/core/templates/static.tiddler.html":{"text":"\\define tv-wikilink-template() $uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n`<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"`{{$:/core/templates/version}}`\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"static.css\">\n<title>`<$view field=\"caption\"><$view field=\"title\"/></$view>: {{$:/core/wiki/title}}`</title>\n</head>\n<body class=\"tc-body\">\n`{{$:/StaticBanner||$:/core/templates/html-tiddler}}`\n<section class=\"tc-story-river tc-static-story-river\">\n`<$view tiddler=\"$:/core/ui/ViewTemplate\" format=\"htmlwikified\"/>`\n</section>\n</body>\n</html>\n`\n"},"$:/core/templates/store.area.template.html":{"text":"<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n`<div id=\"storeArea\" style=\"display:none;\">`\n<$list filter=<<saveTiddlerFilter>> template=\"$:/core/templates/html-div-tiddler\"/>\n<$list filter={{{ [<skinnySaveTiddlerFilter>] }}} template=\"$:/core/templates/html-div-skinny-tiddler\"/>\n`</div>`\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n`<!--~~ Encrypted tiddlers ~~-->`\n`<pre id=\"encryptedStoreArea\" type=\"text/plain\" style=\"display:none;\">`\n<$encrypt filter=<<saveTiddlerFilter>>/>\n`</pre>`\n</$reveal>"},"$:/core/templates/tid-tiddler":{"text":"<!--\n\nThis template is used for saving tiddlers in TiddlyWeb *.tid format\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>`\n`<$view field=\"text\" format=\"text\" />"},"$:/core/templates/tiddler-metadata":{"text":"<!--\n\nThis template is used for saving tiddler metadata *.meta files\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>"},"$:/core/templates/tiddlywiki5.html":{"text":"<$set name=\"saveTiddlerAndShadowsFilter\" filter=\"[subfilter<saveTiddlerFilter>] [subfilter<saveTiddlerFilter>plugintiddlers[]]\">\n`<!doctype html>\n`{{$:/core/templates/MOTW.html}}`<html lang=\"`<$text text={{{ [{$:/language}get[name]] }}}/>`\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<!--~~ Raw markup for the top of the head section ~~-->\n`{{{ [<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}`\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"/>\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"`{{$:/core/templates/version}}`\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\" />\n<meta name=\"copyright\" content=\"`{{$:/core/copyright.txt}}`\" />\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>`{{$:/core/wiki/title}}`</title>\n<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\n\n<!--~~ Raw markup ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/core/wiki/rawmarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}`\n</head>\n<body class=\"tc-body\">\n<!--~~ Raw markup for the top of the body section ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}`\n<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n`{{$:/boot/boot.css||$:/core/templates/css-tiddler}}`\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n`{{$:/core/templates/static.area}}`\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n`{{$:/core/templates/store.area.template.html}}`\n<!--~~ Library modules ~~-->\n<div id=\"libraryModules\" style=\"display:none;\">\n`{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/javascript-tiddler}}}`\n</div>\n<!--~~ Boot kernel prologue ~~-->\n<div id=\"bootKernelPrefix\" style=\"display:none;\">\n`{{ $:/boot/bootprefix.js ||$:/core/templates/javascript-tiddler}}`\n</div>\n<!--~~ Boot kernel ~~-->\n<div id=\"bootKernel\" style=\"display:none;\">\n`{{ $:/boot/boot.js ||$:/core/templates/javascript-tiddler}}`\n</div>\n<!--~~ Raw markup for the bottom of the body section ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}`\n</body>\n</html>`\n"},"$:/core/templates/version":{"text":"<<version>>"},"$:/core/templates/wikified-tiddler":{"text":"<$transclude />"},"$:/core/ui/AboveStory/tw2-plugin-check":{"tags":"$:/tags/AboveStory","text":"\\define lingo-base() $:/language/AboveStory/ClassicPlugin/\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]limit[1]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n<ul>\n\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]]\">\n\n<li>\n\n<$link><$view field=\"title\"/></$link>\n\n</li>\n\n</$list>\n\n</ul>\n\n</div>\n\n</$list>\n"},"$:/core/ui/Actions/new-image":{"tags":"$:/tags/Actions","description":"create a new image tiddler","text":"\\define get-type()\nimage/$(imageType)$\n\\end\n\\define get-tags() $(textFieldTags)$ $(tagsFieldTags)$\n<$vars imageType={{$:/config/NewImageType}} textFieldTags={{$:/config/NewJournal/Tags}} tagsFieldTags={{$:/config/NewJournal/Tags!!tags}}>\n<$action-sendmessage $message=\"tm-new-tiddler\" type=<<get-type>> tags=<<get-tags>>/>\n</$vars>\n"},"$:/core/ui/Actions/new-journal":{"tags":"$:/tags/Actions","description":"create a new journal tiddler","text":"\\define get-tags() $(textFieldTags)$ $(tagsFieldTags)$\n<$vars journalTitleTemplate={{$:/config/NewJournal/Title}} textFieldTags={{$:/config/NewJournal/Tags}} tagsFieldTags={{$:/config/NewJournal/Tags!!tags}} journalText={{$:/config/NewJournal/Text}}>\n<$wikify name=\"journalTitle\" text=\"\"\"<$macrocall $name=\"now\" format=<<journalTitleTemplate>>/>\"\"\">\n<$reveal type=\"nomatch\" state=<<journalTitle>> text=\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<get-tags>> text={{{ [<journalTitle>get[]] }}}/>\n</$reveal>\n<$reveal type=\"match\" state=<<journalTitle>> text=\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<get-tags>> text=<<journalText>>/>\n</$reveal>\n</$wikify>\n</$vars>\n"},"$:/core/ui/Actions/new-tiddler":{"tags":"$:/tags/Actions","description":"create a new empty tiddler","text":"\\define get-tags() $(textFieldTags)$ $(tagsFieldTags)$\n<$vars textFieldTags={{$:/config/NewTiddler/Tags}} tagsFieldTags={{$:/config/NewTiddler/Tags!!tags}}>\n<$action-sendmessage $message=\"tm-new-tiddler\" tags=<<get-tags>>/>\n</$vars>\n"},"$:/core/ui/AdvancedSearch/Filter":{"tags":"$:/tags/AdvancedSearch","caption":"{{$:/language/Search/Filter/Caption}}","text":"\\define lingo-base() $:/language/Search/\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch/input}!match{$:/temp/advancedsearch}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo Filter/Hint>>\n\n<div class=\"tc-search tc-advanced-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\" \n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\" type=\"search\" \n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} configTiddlerFilter=\"[[$:/temp/advancedsearch]]\" firstSearchFilterField=\"text\" \n\t\tinputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> \n\t\tinputCancelActions=<<cancel-search-actions>>/>\n</$keyboard>\n</$keyboard>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch/FilterButton]!has[draft.of]]\"><$transclude/></$list>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\n<div class=\"tc-search-results\">\n<<lingo Filter/Matches>>\n<$list filter={{$:/temp/advancedsearch}}>\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n</div>\n</$set>\n</$reveal>\n"},"$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear":{"tags":"$:/tags/AdvancedSearch/FilterButton","text":"<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\" />\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n"},"$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete":{"tags":"$:/tags/AdvancedSearch/FilterButton","text":"<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button popup=<<qualify \"$:/state/filterDeleteDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/delete-button}}\n</$button>\n</$reveal>\n\n<$reveal state=<<qualify \"$:/state/filterDeleteDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<div class=\"tc-dropdown-item-plain\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\nAre you sure you wish to delete <<resultCount>> tiddler(s)?\n</$set>\n</div>\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn\">\n<$action-deletetiddler $filter={{$:/temp/advancedsearch}}/>\nDelete these tiddlers\n</$button>\n</div>\n</div>\n</div>\n</$reveal>\n"},"$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown":{"tags":"$:/tags/AdvancedSearch/FilterButton","text":"<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/filterDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</span>\n\n<$reveal state=<<qualify \"$:/state/filterDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher actions=\"\"\"<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text=<<navigateTo>>/><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text=<<navigateTo>>/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/><$action-sendmessage $message=\"tm-focus-selector\" $param='.tc-advanced-search input' />\"\"\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Filter]]\"><$link to={{!!filter}}><$transclude field=\"description\"/></$link>\n</$list>\n</div>\n</div>\n</$linkcatcher>\n</$set>\n</$reveal>\n"},"$:/core/ui/AdvancedSearch/Filter/FilterButtons/export":{"tags":"$:/tags/AdvancedSearch/FilterButton","text":"<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$macrocall $name=\"exportButton\" exportFilter={{$:/temp/advancedsearch}} lingoBase=\"$:/language/Buttons/ExportTiddlers/\"/>\n</$reveal>\n"},"$:/core/ui/AdvancedSearch/Shadows":{"tags":"$:/tags/AdvancedSearch","caption":"{{$:/language/Search/Shadows/Caption}}","first-search-filter":"[all[shadows]search<userInput>sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]","text":"\\define lingo-base() $:/language/Search/\n\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\"/>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo Shadows/Hint>>\n\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\"\n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\" type=\"search\"\n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} configTiddlerFilter=\"[[$:/core/ui/AdvancedSearch/Shadows]]\"\n\t\tinputCancelActions=<<cancel-search-actions>> inputAcceptActions=<<input-accept-actions>> \n\t\tinputAcceptVariantActions=<<input-accept-variant-actions>> filterMinLength={{$:/config/Search/MinLength}}/>\n</$keyboard>\n</$keyboard>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[all[shadows]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo Shadows/Matches>>\n\n<$list filter=\"[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]\">\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"},"$:/core/ui/AdvancedSearch/Standard":{"tags":"$:/tags/AdvancedSearch","caption":"{{$:/language/Search/Standard/Caption}}","text":"\\define lingo-base() $:/language/Search/\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define next-search-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab/search-results/advancedsearch\" tag=\"$:/tags/SearchResults\" beforeafter=\"$beforeafter$\" defaultState={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/standard/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\"/>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo Standard/Hint>>\n\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$keyboard key=\"shift-alt-Right\" actions=<<next-search-tab>>>\n<$keyboard key=\"shift-alt-Left\" actions=<<next-search-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\"\n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\" type=\"search\"\n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} inputCancelActions=<<cancel-search-actions>> \n\t\tinputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> \n\t\tconfigTiddlerFilter=\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\"\n\t\tfilterMinLength={{$:/config/Search/MinLength}}/>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$vars userInput={{{ [[$:/temp/advancedsearch]get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}} searchListState=\"$:/temp/advancedsearch/selected-item\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude/>\n</$list>\n\"\"\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/standard/currentTab\" text=<<currentTab>>/>\"\"\" explicitState=\"$:/state/tab/search-results/advancedsearch\" />\n</$list>\n</$vars>\n</$list>\n</$reveal>\n"},"$:/core/ui/AdvancedSearch/System":{"tags":"$:/tags/AdvancedSearch","caption":"{{$:/language/Search/System/Caption}}","first-search-filter":"[is[system]search<userInput>sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]","text":"\\define lingo-base() $:/language/Search/\n\\define set-next-input-tab(beforeafter:\"after\",stateTitle,tag,defaultState,currentTabTiddler) <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\"/>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo System/Hint>>\n\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\"\n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\"\n\t\ttype=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}} configTiddlerFilter=\"[[$:/core/ui/AdvancedSearch/System]]\"\n\t\tinputCancelActions=<<cancel-search-actions>> inputAcceptActions=<<input-accept-actions>> \n\t\tinputAcceptVariantActions=<<input-accept-variant-actions>> filterMinLength={{$:/config/Search/MinLength}}/>\n</$keyboard>\n</$keyboard>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[is[system]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo System/Matches>>\n\n<$list filter=\"[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]\">\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"},"$:/AdvancedSearch":{"icon":"$:/core/images/advanced-search-button","color":"#bbb","text":"<div class=\"tc-advanced-search\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch]!has[draft.of]]\" default=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<currentTab>>/>\"\"\" explicitState=\"$:/state/tab--1498284803\"/>\n</div>\n"},"$:/core/ui/AlertTemplate":{"text":"<div class=\"tc-alert\">\n<div class=\"tc-alert-toolbar\">\n<$button class=\"tc-btn-invisible\"><$action-deletetiddler $tiddler=<<currentTiddler>>/>{{$:/core/images/cancel-button}}</$button>\n</div>\n<div class=\"tc-alert-subtitle\">\n<$wikify name=\"format\" text=<<lingo Tiddler/DateFormat>>>\n<$view field=\"component\"/> - <$view field=\"modified\" format=\"date\" template=<<format>>/> <$reveal type=\"nomatch\" state=\"!!count\" text=\"\"><span class=\"tc-alert-highlight\">({{$:/language/Count}}: <$view field=\"count\"/>)</span></$reveal>\n</$wikify>\n</div>\n<div class=\"tc-alert-body\">\n\n<$transclude/>\n\n</div>\n</div>\n"},"$:/core/ui/BinaryWarning":{"text":"\\define lingo-base() $:/language/BinaryWarning/\n<<lingo Prompt>>\n"},"$:/core/ui/Components/plugin-info":{"text":"\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define popup-state-macro()\n$(qualified-state)$-$(currentTiddler)$\n\\end\n\n\\define tabs-state-macro()\n$(popup-state)$-$(pluginInfoType)$\n\\end\n\n\\define plugin-icon-title()\n$(currentTiddler)$/icon\n\\end\n\n\\define plugin-disable-title()\n$:/config/Plugins/Disabled/$(currentTiddler)$\n\\end\n\n\\define plugin-table-body(type,disabledMessage,default-popup-state)\n<div class=\"tc-plugin-info-chunk tc-plugin-info-toggle\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/chevron-right}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-icon\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<plugin-icon-title>>>\n<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\n</$transclude>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-description\">\n<h1>\n''<$text text={{{ [<currentTiddler>get[name]] ~[<currentTiddler>split[/]last[1]] }}}/>'': <$view field=\"description\"><$view field=\"title\"/></$view> $disabledMessage$\n</h1>\n<h2>\n<$view field=\"title\"/>\n</h2>\n<h2>\n<div><em><$view field=\"version\"/></em></div>\n</h2>\n</div>\n\\end\n\n\\define plugin-info(type,default-popup-state)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info tc-plugin-info-disabled\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\" disabledMessage:\"<$macrocall $name='lingo' title='Disabled/Status'/>\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>> default=\"\"\"$default-popup-state$\"\"\">\n<div class=\"tc-plugin-info-dropdown\">\n<div class=\"tc-plugin-info-dropdown-body\">\n<$list filter=\"[all[current]] -[[$:/core]]\">\n<div style=\"float:right;\">\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"yes\" tooltip={{$:/language/ControlPanel/Plugins/Disable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Disable/Caption}}>\n<<lingo Disable/Caption>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"no\" tooltip={{$:/language/ControlPanel/Plugins/Enable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Enable/Caption}}>\n<<lingo Enable/Caption>>\n</$button>\n</$reveal>\n</div>\n</$list>\n<$set name=\"tabsList\" filter=\"[<currentTiddler>list[]] contents\">\n<$macrocall $name=\"tabs\" state=<<tabs-state-macro>> tabsList=<<tabsList>> default={{{ [enlist<tabsList>] }}} template=\"$:/core/ui/PluginInfo\"/>\n</$set>\n</div>\n</div>\n</$reveal>\n</$set>\n\\end\n\n<$macrocall $name=\"plugin-info\" type=<<plugin-type>> default-popup-state=<<default-popup-state>>/>\n"},"$:/core/ui/Components/tag-link":{"text":"<$link>\n<$set name=\"backgroundColor\" value={{!!color}}>\n<span style=<<tag-styles>> class=\"tc-tag-label\">\n<$view field=\"title\" format=\"text\"/>\n</span>\n</$set>\n</$link>"},"$:/core/ui/ControlPanel/Advanced":{"tags":"$:/tags/ControlPanel/Info","caption":"{{$:/language/ControlPanel/Advanced/Caption}}","text":"{{$:/language/ControlPanel/Advanced/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Advanced]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/TiddlerFields\" explicitState=\"$:/state/tab--959111941\"/>\n</div>\n"},"$:/core/ui/ControlPanel/Appearance":{"tags":"$:/tags/ControlPanel","caption":"{{$:/language/ControlPanel/Appearance/Caption}}","text":"{{$:/language/ControlPanel/Appearance/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Appearance]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Theme\" explicitState=\"$:/state/tab--1963855381\"/>\n</div>\n"},"$:/core/ui/ControlPanel/Basics":{"tags":"$:/tags/ControlPanel/Info","caption":"{{$:/language/ControlPanel/Basics/Caption}}","text":"\\define lingo-base() $:/language/ControlPanel/Basics/\n\n\\define show-filter-count(filter)\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $value=\"\"\"$filter$\"\"\"/>\n<$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" $value=\"\"\"$filter$\"\"\"/>\n<$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/>\n<$action-setfield $tiddler=\"$:/state/tab--1498284803\" $value=\"$:/core/ui/AdvancedSearch/Filter\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=\".tc-advanced-search input\"/>\n''<$count filter=\"\"\"$filter$\"\"\"/>''\n{{$:/core/images/advanced-search-button}}\n</$button>\n\\end\n\n|<<lingo Version/Prompt>> |''<<version>>'' |\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/status/UserName\"><<lingo Username/Prompt>></$link> |<$edit-text tiddler=\"$:/status/UserName\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/AnimationDuration\"><<lingo AnimDuration/Prompt>></$link> |<$edit-text tiddler=\"$:/config/AnimationDuration\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\" class=\"tc-edit-texteditor\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n|<$link to=\"$:/language/DefaultNewTiddlerTitle\"><<lingo NewTiddler/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/language/DefaultNewTiddlerTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Title\"><<lingo NewJournal/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/config/NewJournal/Title\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Text\"><<lingo NewJournal/Text/Prompt>></$link> |<$edit tiddler=\"$:/config/NewJournal/Text\" tag=\"textarea\" class=\"tc-edit-texteditor\" default=\"\"/> |\n|<$link to=\"$:/config/NewTiddler/Tags\"><<lingo NewTiddler/Tags/Prompt>></$link> |<$vars currentTiddler=\"$:/config/NewTiddler/Tags\" tagField=\"text\">{{||$:/core/ui/EditTemplate/tags}}<$list filter=\"[<currentTiddler>tags[]] +[limit[1]]\" variable=\"ignore\"><$button tooltip={{$:/language/ControlPanel/Basics/RemoveTags/Hint}}><<lingo RemoveTags>><$action-listops $tiddler=<<currentTiddler>> $field=\"text\" $subfilter={{{ [<currentTiddler>get[tags]] }}}/><$action-setfield $tiddler=<<currentTiddler>> tags=\"\"/></$button></$list></$vars> |\n|<$link to=\"$:/config/NewJournal/Tags\"><<lingo NewJournal/Tags/Prompt>></$link> |<$vars currentTiddler=\"$:/config/NewJournal/Tags\" tagField=\"text\">{{||$:/core/ui/EditTemplate/tags}}<$list filter=\"[<currentTiddler>tags[]] +[limit[1]]\" variable=\"ignore\"><$button tooltip={{$:/language/ControlPanel/Basics/RemoveTags/Hint}}><<lingo RemoveTags>><$action-listops $tiddler=<<currentTiddler>> $field=\"text\" $subfilter={{{ [<currentTiddler>get[tags]] }}}/><$action-setfield $tiddler=<<currentTiddler>> tags=\"\"/></$button></$list></$vars> |\n|<$link to=\"$:/config/AutoFocus\"><<lingo AutoFocus/Prompt>></$link> |{{$:/snippets/minifocusswitcher}} |\n|<<lingo Language/Prompt>> |{{$:/snippets/minilanguageswitcher}} |\n|<<lingo Tiddlers/Prompt>> |<<show-filter-count \"[!is[system]sort[title]]\">> |\n|<<lingo Tags/Prompt>> |<<show-filter-count \"[tags[]sort[title]]\">> |\n|<<lingo SystemTiddlers/Prompt>> |<<show-filter-count \"[is[system]sort[title]]\">> |\n|<<lingo ShadowTiddlers/Prompt>> |<<show-filter-count \"[all[shadows]sort[title]]\">> |\n|<<lingo OverriddenShadowTiddlers/Prompt>> |<<show-filter-count \"[is[tiddler]is[shadow]sort[title]]\">> |\n"},"$:/core/ui/ControlPanel/EditorTypes":{"tags":"$:/tags/ControlPanel/Advanced","caption":"{{$:/language/ControlPanel/EditorTypes/Caption}}","text":"\\define lingo-base() $:/language/ControlPanel/EditorTypes/\n\n<<lingo Hint>>\n\n<table>\n<tbody>\n<tr>\n<th><<lingo Type/Caption>></th>\n<th><<lingo Editor/Caption>></th>\n</tr>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/config/EditorTypeMappings/]sort[title]]\">\n<tr>\n<td>\n<$link>\n<$list filter=\"[all[current]removeprefix[$:/config/EditorTypeMappings/]]\">\n<$text text={{!!title}}/>\n</$list>\n</$link>\n</td>\n<td>\n<$view field=\"text\"/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"},"$:/core/ui/ControlPanel/Info":{"tags":"$:/tags/ControlPanel","caption":"{{$:/language/ControlPanel/Info/Caption}}","text":"{{$:/language/ControlPanel/Info/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Info]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Basics\" explicitState=\"$:/state/tab--2112689675\"/>\n</div>\n"},"$:/core/ui/ControlPanel/KeyboardShortcuts":{"tags":"$:/tags/ControlPanel","caption":"{{$:/language/ControlPanel/KeyboardShortcuts/Caption}}","text":"\\define lingo-base() $:/language/ControlPanel/KeyboardShortcuts/\n\n\\define new-shortcut(title)\n<div class=\"tc-dropdown-item-plain\">\n<$edit-shortcut tiddler=\"$title$\" placeholder={{$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt}} focus=\"true\" style=\"width:auto;\"/> <$button>\n<<lingo Add/Caption>>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"[{$title$}]\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"$title$\"\n/>\n</$button>\n</div>\n\\end\n\n\\define shortcut-list-item(caption)\n<td>\n</td>\n<td style=\"text-align:right;font-size:0.7em;\">\n<<lingo Platform/$caption$>>\n</td>\n<td>\n<div style=\"position:relative;\">\n<$button popup=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> class=\"tc-btn-invisible\">\n{{$:/core/images/edit-button}}\n</$button>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutTitle)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\n<$reveal state=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown tc-popup-keep\">\n<$list filter=\"[list[$(shortcutTitle)$!!text]sort[title]]\" variable=\"shortcut\" emptyMessage=\"\"\"\n<div class=\"tc-dropdown-item-plain\">\n//<<lingo NoShortcuts/Caption>>//\n</div>\n\"\"\">\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint}}>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"+[remove<shortcut>]\"\n/>\n<small>{{$:/core/images/close-button}}</small>\n</$button>\n<kbd>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts=<<shortcut>>/>\n</kbd>\n</div>\n</$list>\n<hr/>\n<$macrocall $name=\"new-shortcut\" title=<<qualify \"$:/state/new-shortcut/$(shortcutTitle)$\">>/>\n</div>\n</div>\n</$reveal>\n</div>\n</td>\n\\end\n\n\\define shortcut-list(caption,prefix)\n<tr>\n<$list filter=\"[[$prefix$$(shortcutName)$]]\" variable=\"shortcutTitle\">\n<<shortcut-list-item \"$caption$\">>\n</$list>\n</tr>\n\\end\n\n\\define shortcut-editor()\n<<shortcut-list \"All\" \"$:/config/shortcuts/\">>\n<<shortcut-list \"Mac\" \"$:/config/shortcuts-mac/\">>\n<<shortcut-list \"NonMac\" \"$:/config/shortcuts-not-mac/\">>\n<<shortcut-list \"Linux\" \"$:/config/shortcuts-linux/\">>\n<<shortcut-list \"NonLinux\" \"$:/config/shortcuts-not-linux/\">>\n<<shortcut-list \"Windows\" \"$:/config/shortcuts-windows/\">>\n<<shortcut-list \"NonWindows\" \"$:/config/shortcuts-not-windows/\">>\n\\end\n\n\\define shortcut-preview()\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutPrefix)$$(shortcutName)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\\end\n\n\\define shortcut-item-inner()\n<tr>\n<td>\n<$reveal type=\"nomatch\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"open\"\n/>\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"close\"\n/>\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n''<$text text=<<shortcutName>>/>''\n</td>\n<td>\n<$transclude tiddler=\"$:/config/ShortcutInfo/$(shortcutName)$\"/>\n</td>\n<td>\n<$list filter=\"$:/config/shortcuts/ $:/config/shortcuts-mac/ $:/config/shortcuts-not-mac/ $:/config/shortcuts-linux/ $:/config/shortcuts-not-linux/ $:/config/shortcuts-windows/ $:/config/shortcuts-not-windows/\" variable=\"shortcutPrefix\">\n<<shortcut-preview>>\n</$list>\n</td>\n</tr>\n<$set name=\"dropdownState\" value={{$(dropdownStateTitle)$}}>\n<$list filter=\"[<dropdownState>match[open]]\" variable=\"listItem\">\n<<shortcut-editor>>\n</$list>\n</$set>\n\\end\n\n\\define shortcut-item()\n<$set name=\"dropdownStateTitle\" value=<<qualify \"$:/state/dropdown/keyboardshortcut/$(shortcutName)$\">>>\n<<shortcut-item-inner>>\n</$set>\n\\end\n\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]removeprefix[$:/config/ShortcutInfo/]]\" variable=\"shortcutName\">\n<<shortcut-item>>\n</$list>\n</tbody>\n</table>\n"},"$:/core/ui/ControlPanel/LoadedModules":{"tags":"$:/tags/ControlPanel/Advanced","caption":"{{$:/language/ControlPanel/LoadedModules/Caption}}","text":"\\define lingo-base() $:/language/ControlPanel/\n<<lingo LoadedModules/Hint>>\n\n{{$:/snippets/modules}}\n"},"$:/core/ui/ControlPanel/Modals/AddPlugins":{"subtitle":"{{$:/core/images/download-button}} {{$:/language/ControlPanel/Plugins/Add/Caption}}","text":"\\define install-plugin-actions()\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url={{!!url}} title={{$(assetInfo)$!!original-title}}/>\n<$set name=\"url\" value={{!!url}}>\n<$set name=\"currentTiddler\" value=<<assetInfo>>>\n<$list filter=\"[enlist{!!dependents}] [{!!parent-plugin}] +[sort[name]]\" variable=\"dependency\">\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url=<<url>> title=<<dependency>>/>\n</$list>\n</$set>\n</$set>\n\\end\n\n\\define install-plugin-button()\n<div>\n<$set name=\"libraryVersion\" value={{{ [<assetInfo>get[version]] }}}>\n<$set name=\"installedVersion\" value={{{ [<assetInfo>get[original-title]get[version]] }}}>\n<$set name=\"reinstall-type\" value={{{ [<libraryVersion>compare:version:eq<installedVersion>then[tc-reinstall]] [<libraryVersion>compare:version:gt<installedVersion>then[tc-reinstall-upgrade]] [<libraryVersion>compare:version:lt<installedVersion>then[tc-reinstall-downgrade]] }}}>\n<$button actions=<<install-plugin-actions>> class={{{ [<assetInfo>get[original-title]has[version]then<reinstall-type>] tc-btn-invisible tc-install-plugin +[join[ ]] }}}>\n{{$:/core/images/download-button}}\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"ignore\" emptyMessage=\"{{$:/language/ControlPanel/Plugins/Install/Caption}}\">\n<$list filter=\"[<libraryVersion>compare:version:gt<installedVersion>]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$list filter=\"[<libraryVersion>compare:version:lt<installedVersion>]\" variable=\"ignore\" emptyMessage=\"{{$:/language/ControlPanel/Plugins/Reinstall/Caption}}\">\n{{$:/language/ControlPanel/Plugins/Downgrade/Caption}}\n</$list>\n\"\"\">\n{{$:/language/ControlPanel/Plugins/Update/Caption}}\n</$list>\n</$list>\n</$button>\n<div>\n</div>\n<$reveal stateTitle=<<assetInfo>> stateField=\"requires-reload\" type=\"match\" text=\"yes\">{{$:/language/ControlPanel/Plugins/PluginWillRequireReload}}</$reveal>\n</$set>\n</$set>\n</$set>\n</div>\n\\end\n\n\\define popup-state-macro()\n$:/state/add-plugin-info/$(connectionTiddler)$/$(assetInfo)$\n\\end\n\n\\define display-plugin-info(type)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<div class=\"tc-plugin-info\">\n<div class=\"tc-plugin-info-chunk tc-plugin-info-toggle\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/chevron-right}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-icon\">\n<$list filter=\"[<assetInfo>has[icon]]\" emptyMessage=\"\"\"<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\"\"\">\n<img src={{$(assetInfo)$!!icon}}/>\n</$list>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-description\">\n<h1><strong><$text text={{{ [<assetInfo>get[name]] ~[<assetInfo>get[original-title]split[/]last[1]] }}}/></strong>: <$view tiddler=<<assetInfo>> field=\"description\"/></h1>\n<h2><$view tiddler=<<assetInfo>> field=\"original-title\"/></h2>\n<div><em><$view tiddler=<<assetInfo>> field=\"version\"/></em></div>\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"installedVersion\"><div><em>{{$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint}}</em></div></$list>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-buttons\">\n<<install-plugin-button>>\n</div>\n</div>\n<$set name=\"original-title\" value={{{ [<assetInfo>get[original-title]] }}}>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>>>\n<div class=\"tc-plugin-info-dropdown\">\n<$list filter=\"[enlist{!!dependents}] [<currentTiddler>get[parent-plugin]] +[limit[1]] ~[<assetInfo>get[original-title]!is[tiddler]]\" variable=\"ignore\">\n<div class=\"tc-plugin-info-dropdown-message\">\n<$list filter=\"[<assetInfo>get[original-title]!is[tiddler]]\">\n{{$:/language/ControlPanel/Plugins/NotInstalled/Hint}}\n</$list>\n<$set name=\"currentTiddler\" value=<<assetInfo>>>\n<$list filter=\"[enlist{!!dependents}] [<currentTiddler>get[parent-plugin]] +[limit[1]]\" variable=\"ignore\">\n<div>\n{{$:/language/ControlPanel/Plugins/AlsoRequires}}\n<$list filter=\"[enlist{!!dependents}] [{!!parent-plugin}] +[sort[name]]\" variable=\"dependency\">\n<$text text=<<dependency>>/>\n</$list>\n</div>\n</$list>\n</$set>\n</div>\n</$list>\n<div class=\"tc-plugin-info-dropdown-body\">\n<$transclude tiddler=<<assetInfo>> field=\"readme\" mode=\"block\"/>\n</div>\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>limit[1]]\" variable=\"ignore\">\n<div class=\"tc-plugin-info-sub-plugins\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>sort[name]]\" variable=\"assetInfo\">\n<<display-plugin-info \"$type$\">>\n</$list>\n</div>\n</$list>\n</div>\n</$reveal>\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>limit[1]]\" variable=\"ignore\">\n<$reveal type=\"nomatch\" text=\"yes\" state=<<popup-state>> tag=\"div\" class=\"tc-plugin-info-sub-plugin-indicator\">\n<$wikify name=\"count\" text=\"\"\"<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>]\"/>\"\"\">\n<$button class=\"tc-btn-invisible\" set=<<popup-state>> setTo=\"yes\">\n{{$:/language/ControlPanel/Plugins/SubPluginPrompt}}\n</$button>\n</$wikify>\n</$reveal>\n</$list>\n</$set>\n</$set>\n\\end\n\n\\define load-plugin-library-button()\n<$list filter=\"[<currentTiddler>get[enabled]else[yes]match[yes]]\" variable=\"ignore\">\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-load-plugin-library\" url={{!!url}} infoTitlePrefix=\"$:/temp/RemoteAssetInfo/\"/>\n{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Plugins/OpenPluginLibrary}}\n</$button>\n</$list>\n\\end\n\n\\define display-server-assets(type)\n{{$:/language/Search/Search}}: <$edit-text tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" default=\"\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n<div class=\"tc-plugin-library-listing\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]search:author,description,original-title,readme,title{$:/temp/RemoteAssetSearch/$(currentTiddler)$}sort[name]]\" variable=\"assetInfo\">\n<$list filter=\"[[$:/temp/RemoteAssetSearch/$(currentTiddler)$]has[text]] ~[<assetInfo>!has[parent-plugin]]\" variable=\"ignore\"><!-- Hide sub-plugins if we're not searching -->\n<<display-plugin-info \"$type$\">>\n</$list>\n</$list>\n</div>\n\\end\n\n\\define display-server-connection()\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/ServerConnection]suffix{!!url}]\" variable=\"connectionTiddler\" emptyMessage=<<load-plugin-library-button>>>\n\n<$set name=\"transclusion\" value=<<connectionTiddler>>>\n\n<<tabs \"[[$:/core/ui/ControlPanel/Plugins/Add/Updates]] [[$:/core/ui/ControlPanel/Plugins/Add/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Add/Themes]] [[$:/core/ui/ControlPanel/Plugins/Add/Languages]]\" \"$:/core/ui/ControlPanel/Plugins/Add/Plugins\">>\n\n</$set>\n\n</$list>\n\\end\n\n\\define close-library-button()\n<$reveal type='nomatch' state='$:/temp/ServerConnection/$(PluginLibraryURL)$' text=''>\n<$button class='tc-btn-big-green'>\n<$action-sendmessage $message=\"tm-unload-plugin-library\" url={{!!url}}/>\n{{$:/core/images/chevron-left}} {{$:/language/ControlPanel/Plugins/ClosePluginLibrary}}\n<$action-deletetiddler $filter=\"[prefix[$:/temp/ServerConnection/$(PluginLibraryURL)$]][prefix[$:/temp/RemoteAssetInfo/$(PluginLibraryURL)$]]\"/>\n</$button>\n</$reveal>\n\\end\n\n\\define plugin-library-listing()\n<div class=\"tc-tab-set\">\n<$set name=\"defaultTab\" value={{{ [all[tiddlers+shadows]tag[$:/tags/PluginLibrary]] }}}>\n<div class=\"tc-tab-buttons\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<$button set=<<qualify \"$:/state/addplugins/tab\">> setTo=<<currentTiddler>> default=<<defaultTab>> selectedClass=\"tc-tab-selected\">\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude field=\"caption\"/>\n</$set>\n</$button>\n</$list>\n</div>\n<div class=\"tc-tab-divider\"/>\n<div class=\"tc-tab-content\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<$reveal type=\"match\" state=<<qualify \"$:/state/addplugins/tab\">> text=<<currentTiddler>> default=<<defaultTab>>>\n<h2><$link><$transclude field=\"caption\"><$view field=\"title\"/></$transclude></$link></h2>\n//<$view field=\"url\"/>//\n<$transclude mode=\"block\"/>\n<$set name=PluginLibraryURL value={{!!url}}>\n<<close-library-button>>\n</$set>\n<<display-server-connection>>\n</$reveal>\n</$list>\n</div>\n</$set>\n</div>\n\\end\n\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<div>\n<<plugin-library-listing>>\n</div>\n"},"$:/core/ui/ControlPanel/Palette":{"tags":"$:/tags/ControlPanel/Appearance","caption":"{{$:/language/ControlPanel/Palette/Caption}}","text":"\\define lingo-base() $:/language/ControlPanel/Palette/\n\n{{$:/snippets/paletteswitcher}}\n\n<$reveal type=\"nomatch\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"yes\"><<lingo ShowEditor/Caption>></$button>\n\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"no\"><<lingo HideEditor/Caption>></$button>\n{{$:/PaletteManager}}\n\n</$reveal>\n\n"},"$:/core/ui/ControlPanel/Parsing":{"tags":"$:/tags/ControlPanel/Advanced","caption":"{{$:/language/ControlPanel/Parsing/Caption}}","text":"\\define lingo-base() $:/language/ControlPanel/Parsing/\n\n\\define toggle(Type)\n<$checkbox\ntiddler=\"\"\"$:/config/WikiParserRules/$Type$/$(rule)$\"\"\"\nfield=\"text\"\nchecked=\"enable\"\nunchecked=\"disable\"\ndefault=\"enable\">\n<<rule>>\n</$checkbox>\n\\end\n\n\\define rules(type,Type)\n<$list filter=\"[wikiparserrules[$type$]]\" variable=\"rule\">\n<dd><<toggle $Type$>></dd>\n</$list>\n\\end\n\n<<lingo Hint>>\n\n<dl>\n<dt><<lingo Pragma/Caption>></dt>\n<<rules pragma Pragma>>\n<dt><<lingo Inline/Caption>></dt>\n<<rules inline Inline>>\n<dt><<lingo Block/Caption>></dt>\n<<rules block Block>>\n</dl>"},"$:/core/ui/ControlPanel/Plugins/Add/Languages":{"caption":"{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[language]]\"/>)","text":"<<display-server-assets language>>\n"},"$:/core/ui/ControlPanel/Plugins/Add/Plugins":{"caption":"{{$:/language/ControlPanel/Plugins/Plugins/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[plugin]]\"/>)","text":"<<display-server-assets plugin>>\n"},"$:/core/ui/ControlPanel/Plugins/Add/Themes":{"caption":"{{$:/language/ControlPanel/Plugins/Themes/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[theme]]\"/>)","text":"<<display-server-assets theme>>\n"},"$:/core/ui/ControlPanel/Plugins/Add/Updates":{"caption":"<$importvariables filter=\"$:/core/ui/ControlPanel/Plugins/Add/Updates\">{{$:/language/ControlPanel/Plugins/Updates/Caption}} (<<update-count>>)</$importvariables>","text":"\\define each-updateable-plugin(body)\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}sort[title]]\" variable=\"assetInfo\">\n<$set name=\"libraryVersion\" value={{{ [<assetInfo>get[version]] }}}>\n<$list filter=\"[<assetInfo>get[original-title]has[version]!version<libraryVersion>]\" variable=\"ignore\">\n<$set name=\"installedVersion\" value={{{ [<assetInfo>get[original-title]get[version]] }}}>\n<$list filter=\"[<installedversion>!match<libraryVersion>]\" variable=\"ignore\">\n$body$\n</$list>\n</$set>\n</$list>\n</$set>\n</$list>\n\\end\n\n\\define update-all-actions()\n<$macrocall $name=\"each-updateable-plugin\" body=\"\"\"\n<<install-plugin-actions>>\n\"\"\"/>\n\\end\n\n\\define update-count()\n<$wikify name=\"count-filter\" text=<<each-updateable-plugin \"[[<$text text=<<assetInfo>>/>]]\">>><$count filter=<<count-filter>>/></$wikify>\n\\end\n\n<$button actions=<<update-all-actions>> class=\"tc-btn-invisible tc-install-plugin tc-reinstall-upgrade\">\n{{$:/core/images/download-button}} {{||$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption}}\n</$button>\n\n<div class=\"tc-plugin-library-listing\">\n<$macrocall $name=\"each-updateable-plugin\" body=\"\"\"\n<$macrocall $name=\"display-plugin-info\" type={{{ [<assetInfo>get[original-plugin-type]] }}}/>\n\"\"\"/>\n</div>\n"},"$:/core/ui/ControlPanel/Plugins/AddPlugins":{"text":"\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n<$button message=\"tm-modal\" param=\"$:/core/ui/ControlPanel/Modals/AddPlugins\" tooltip={{$:/language/ControlPanel/Plugins/Add/Hint}} class=\"tc-btn-big-green tc-primary-btn\">\n{{$:/core/images/download-button}} <<lingo Add/Caption>>\n</$button>\n"},"$:/core/ui/ControlPanel/Plugins/Installed/Languages":{"caption":"{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[language]]\"/>)","text":"<<plugin-table language>>\n"},"$:/core/ui/ControlPanel/Plugins/Installed/Plugins":{"caption":"{{$:/language/ControlPanel/Plugins/Plugins/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[plugin]]\"/>)","text":"<<plugin-table plugin>>\n"},"$:/core/ui/ControlPanel/Plugins/Installed/Themes":{"caption":"{{$:/language/ControlPanel/Plugins/Themes/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[theme]]\"/>)","text":"<<plugin-table theme>>\n"},"$:/core/ui/ControlPanel/Plugins":{"tags":"$:/tags/ControlPanel","caption":"{{$:/language/ControlPanel/Plugins/Caption}}","text":"\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define plugin-table(type)\n<$set name=\"plugin-type\" value=\"\"\"$type$\"\"\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n<$list filter=\"[!has[draft.of]plugin-type[$type$]sort[name]]\" emptyMessage=<<lingo \"Empty/Hint\">> template=\"$:/core/ui/Components/plugin-info\"/>\n</$set>\n</$set>\n\\end\n\n{{$:/core/ui/ControlPanel/Plugins/AddPlugins}}\n\n<<lingo Installed/Hint>>\n\n<$macrocall $name=\"tabs\" tabsList=\"[[$:/core/ui/ControlPanel/Plugins/Installed/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Installed/Themes]] [[$:/core/ui/ControlPanel/Plugins/Installed/Languages]]\" default=\"$:/core/ui/ControlPanel/Plugins/Installed/Plugins\" explicitState=\"$:/state/tab--86143343\"/>\n"},"$:/core/ui/ControlPanel/Saving/DownloadSaver":{"tags":"$:/tags/ControlPanel/Saving","caption":"{{$:/language/ControlPanel/Saving/DownloadSaver/Caption}}","text":"\\define lingo-base() $:/language/ControlPanel/Saving/DownloadSaver/\n\n<<lingo Hint>>\n\n!! <$link to=\"$:/config/DownloadSaver/AutoSave\"><<lingo AutoSave/Hint>></$link>\n\n<$checkbox tiddler=\"$:/config/DownloadSaver/AutoSave\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <<lingo AutoSave/Description>> </$checkbox>\n"},"$:/core/ui/ControlPanel/Saving/General":{"tags":"$:/tags/ControlPanel/Saving","caption":"{{$:/language/ControlPanel/Saving/General/Caption}}","list-before":"","text":"\\define lingo-base() $:/language/ControlPanel/Settings/\n\n{{$:/language/ControlPanel/Saving/General/Hint}}\n\n!! <$link to=\"$:/config/AutoSave\"><<lingo AutoSave/Caption>></$link>\n\n<<lingo AutoSave/Hint>>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"yes\"> <<lingo AutoSave/Enabled/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"no\"> <<lingo AutoSave/Disabled/Description>> </$radio>\n"},"$:/core/ui/ControlPanel/Saving/GitHub":{"tags":"$:/tags/ControlPanel/Saving","caption":"{{$:/language/ControlPanel/Saving/GitService/GitHub/Caption}}","text":"\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~GitHub\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/GitHub/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo GitHub/Password>> |<$password name=\"github\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/GitHub/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/GitHub/Branch\" default=\"main\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/GitHub/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/GitHub/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/GitHub/ServerURL\" default=\"https://api.github.com\" tag=\"input\"/> |"},"$:/core/ui/ControlPanel/Saving/GitLab":{"tags":"$:/tags/ControlPanel/Saving","caption":"{{$:/language/ControlPanel/Saving/GitService/GitLab/Caption}}","text":"\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~GitLab\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/GitLab/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo GitLab/Password>> |<$password name=\"gitlab\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/GitLab/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/GitLab/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/GitLab/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/GitLab/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/GitLab/ServerURL\" default=\"https://gitlab.com/api/v4\" tag=\"input\"/> |"},"$:/core/ui/ControlPanel/Saving/TiddlySpot":{"tags":"$:/tags/ControlPanel/Saving","caption":"{{$:/language/ControlPanel/Saving/TiddlySpot/Caption}}","text":"\\define lingo-base() $:/language/ControlPanel/Saving/TiddlySpot/\n\n\\define siteURL(path)\nhttp://$(userName)$.tiddlyspot.com/$path$/\n\\end\n\\define siteLink(path)\n<$reveal type=\"nomatch\" state=\"$:/UploadName\" text=\"\">\n<$set name=\"userName\" value={{$:/UploadName}}>\n<$reveal type=\"match\" state=\"$:/UploadURL\" text=\"\">\n<<siteURL $path$>>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/UploadURL\" text=\"\">\n<$macrocall $name=resolvePath source={{$:/UploadBackupDir}} root={{$:/UploadURL}}>>\n</$reveal>\n</$set>\n</$reveal>\n\\end\n\n<div class=\"tc-message-box\">\n\n<<lingo ReadOnly>>\n\n</div>\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/UploadName\" default=\"\" tag=\"input\"/> |\n|<<lingo Password>> |<$password name=\"upload\"/> |\n\n''<<lingo Advanced/Heading>>''\n\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/UploadURL\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/UploadFilename\" default=\"index.html\" tag=\"input\"/> |\n|<<lingo UploadDir>> |<$edit-text tiddler=\"$:/UploadDir\" default=\".\" tag=\"input\"/> |\n|<<lingo BackupDir>> |<$edit-text tiddler=\"$:/UploadBackupDir\" default=\".\" tag=\"input\"/> |\n\n<<lingo TiddlySpot/Hint>>\n"},"$:/core/ui/ControlPanel/Saving/Gitea":{"tags":"$:/tags/ControlPanel/Saving","caption":"{{$:/language/ControlPanel/Saving/GitService/Gitea/Caption}}","text":"\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~Gitea\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/Gitea/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo Gitea/Password>> |<$password name=\"Gitea\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/Gitea/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/Gitea/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/Gitea/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/Gitea/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/Gitea/ServerURL\" default=\"https://gitea/api/v1\" tag=\"input\"/> |\n"},"$:/core/ui/ControlPanel/Saving":{"tags":"$:/tags/ControlPanel","caption":"{{$:/language/ControlPanel/Saving/Caption}}","text":"{{$:/language/ControlPanel/Saving/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Saving]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Saving/General\" explicitState=\"$:/state/tab-2065006209\"/>\n</div>\n"},"$:/core/buttonstyles/Borderless":{"tags":"$:/tags/ToolbarButtonStyle","caption":"{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless}}","text":"tc-btn-invisible"},"$:/core/buttonstyles/Boxed":{"tags":"$:/tags/ToolbarButtonStyle","caption":"{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed}}","text":"tc-btn-boxed"},"$:/core/buttonstyles/Rounded":{"tags":"$:/tags/ToolbarButtonStyle","caption":"{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded}}","text":"tc-btn-rounded"},"$:/core/ui/ControlPanel/Settings/CamelCase":{"tags":"$:/tags/ControlPanel/Settings","caption":"{{$:/language/ControlPanel/Settings/CamelCase/Caption}}","text":"\\define lingo-base() $:/language/ControlPanel/Settings/CamelCase/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/WikiParserRules/Inline/wikilink\" field=\"text\" checked=\"enable\" unchecked=\"disable\" default=\"enable\"> <$link to=\"$:/config/WikiParserRules/Inline/wikilink\"><<lingo Description>></$link> </$checkbox>\n"},"$:/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab":{"caption":"{{$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption}}","tags":"$:/tags/ControlPanel/Settings","text":"\\define lingo-base() $:/language/ControlPanel/Settings/DefaultMoreSidebarTab/\n\n<$link to=\"$:/config/DefaultMoreSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultMoreSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"},"$:/core/ui/ControlPanel/Settings/DefaultSidebarTab":{"caption":"{{$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption}}","tags":"$:/tags/ControlPanel/Settings","text":"\\define lingo-base() $:/language/ControlPanel/Settings/DefaultSidebarTab/\n\n<$link to=\"$:/config/DefaultSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"},"$:/core/ui/ControlPanel/Settings/EditorToolbar":{"tags":"$:/tags/ControlPanel/Settings","caption":"{{$:/language/ControlPanel/Settings/EditorToolbar/Caption}}","text":"\\define lingo-base() $:/language/ControlPanel/Settings/EditorToolbar/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/TextEditor/EnableToolbar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/TextEditor/EnableToolbar\"><<lingo Description>></$link> </$checkbox>\n\n"},"$:/core/ui/ControlPanel/Settings/InfoPanelMode":{"tags":"$:/tags/ControlPanel/Settings","caption":"{{$:/language/ControlPanel/Settings/InfoPanelMode/Caption}}","text":"\\define lingo-base() $:/language/ControlPanel/Settings/InfoPanelMode/\n<$link to=\"$:/config/TiddlerInfo/Mode\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"popup\"> <<lingo Popup/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"sticky\"> <<lingo Sticky/Description>> </$radio>\n"},"$:/core/ui/ControlPanel/Settings/LinkToBehaviour":{"tags":"$:/tags/ControlPanel/Settings","caption":"{{$:/language/ControlPanel/Settings/LinkToBehaviour/Caption}}","text":"\\define lingo-base() $:/language/ControlPanel/Settings/LinkToBehaviour/\n\n<$link to=\"$:/config/Navigation/openLinkFromInsideRiver\"><<lingo \"InsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromInsideRiver\">\n <option value=\"above\"><<lingo \"OpenAbove\">></option>\n <option value=\"below\"><<lingo \"OpenBelow\">></option>\n <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n\n<$link to=\"$:/config/Navigation/openLinkFromOutsideRiver\"><<lingo \"OutsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromOutsideRiver\">\n <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n"},"$:/core/ui/ControlPanel/Settings/MissingLinks":{"tags":"$:/tags/ControlPanel/Settings","caption":"{{$:/language/ControlPanel/Settings/MissingLinks/Caption}}","text":"\\define lingo-base() $:/language/ControlPanel/Settings/MissingLinks/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/MissingLinks\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/MissingLinks\"><<lingo Description>></$link> </$checkbox>\n\n"},"$:/core/ui/ControlPanel/Settings/NavigationAddressBar":{"tags":"$:/tags/ControlPanel/Settings","caption":"{{$:/language/ControlPanel/Settings/NavigationAddressBar/Caption}}","text":"\\define lingo-base() $:/language/ControlPanel/Settings/NavigationAddressBar/\n\n<$link to=\"$:/config/Navigation/UpdateAddressBar\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permaview\"> <<lingo Permaview/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permalink\"> <<lingo Permalink/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"no\"> <<lingo No/Description>> </$radio>\n"},"$:/core/ui/ControlPanel/Settings/NavigationHistory":{"tags":"$:/tags/ControlPanel/Settings","caption":"{{$:/language/ControlPanel/Settings/NavigationHistory/Caption}}","text":"\\define lingo-base() $:/language/ControlPanel/Settings/NavigationHistory/\n<$link to=\"$:/config/Navigation/UpdateHistory\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"no\"> <<lingo No/Description>> </$radio>\n"},"$:/core/ui/ControlPanel/Settings/NavigationPermalinkviewMode":{"tags":"$:/tags/ControlPanel/Settings","caption":"{{$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption}}","text":"\\define lingo-base() $:/language/ControlPanel/Settings/NavigationPermalinkviewMode/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Navigation/Permalinkview/CopyToClipboard\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Navigation/Permalinkview/CopyToClipboard\"><<lingo CopyToClipboard/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Navigation/Permalinkview/UpdateAddressBar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Navigation/Permalinkview/UpdateAddressBar\"><<lingo UpdateAddressBar/Description>></$link> </$checkbox>\n"},"$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation":{"tags":"$:/tags/ControlPanel/Settings","caption":"{{$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption}}","text":"\\define lingo-base() $:/language/ControlPanel/Settings/PerformanceInstrumentation/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Performance/Instrumentation\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Performance/Instrumentation\"><<lingo Description>></$link> </$checkbox>\n"},"$:/core/ui/ControlPanel/Settings/TitleLinks":{"tags":"$:/tags/ControlPanel/Settings","caption":"{{$:/language/ControlPanel/Settings/TitleLinks/Caption}}","text":"\\define lingo-base() $:/language/ControlPanel/Settings/TitleLinks/\n<$link to=\"$:/config/Tiddlers/TitleLinks\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"no\"> <<lingo No/Description>> </$radio>\n"},"$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle":{"tags":"$:/tags/ControlPanel/Settings","caption":"{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption}}","text":"\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtonStyle/\n<$link to=\"$:/config/Toolbar/ButtonClass\"><<lingo \"Hint\">></$link>\n\n<$select tiddler=\"$:/config/Toolbar/ButtonClass\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ToolbarButtonStyle]]\">\n<option value={{!!text}}>{{!!caption}}</option>\n</$list>\n</$select>\n"},"$:/core/ui/ControlPanel/Settings/ToolbarButtons":{"tags":"$:/tags/ControlPanel/Settings","caption":"{{$:/language/ControlPanel/Settings/ToolbarButtons/Caption}}","text":"\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtons/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Icons\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Toolbar/Icons\"><<lingo Icons/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Text\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Toolbar/Text\"><<lingo Text/Description>></$link> </$checkbox>\n"},"$:/core/ui/ControlPanel/Settings":{"tags":"$:/tags/ControlPanel","caption":"{{$:/language/ControlPanel/Settings/Caption}}","text":"\\define lingo-base() $:/language/ControlPanel/Settings/\n\n<<lingo Hint>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Settings]]\">\n\n<div style=\"border-top:1px solid #eee;\">\n\n!! <$link><$transclude field=\"caption\"/></$link>\n\n<$transclude/>\n\n</div>\n\n</$list>\n"},"$:/core/ui/ControlPanel/StoryView":{"tags":"$:/tags/ControlPanel/Appearance","caption":"{{$:/language/ControlPanel/StoryView/Caption}}","text":"{{$:/snippets/viewswitcher}}\n"},"$:/core/ui/ControlPanel/Stylesheets":{"tags":"$:/tags/ControlPanel/Advanced","caption":"{{$:/language/ControlPanel/Stylesheets/Caption}}","text":"\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo Stylesheets/Hint>>\n\n{{$:/snippets/peek-stylesheets}}\n"},"$:/core/ui/ControlPanel/Theme":{"tags":"$:/tags/ControlPanel/Appearance","caption":"{{$:/language/ControlPanel/Theme/Caption}}","text":"{{$:/snippets/themeswitcher}}\n"},"$:/core/ui/ControlPanel/TiddlerFields":{"tags":"$:/tags/ControlPanel/Advanced","caption":"{{$:/language/ControlPanel/TiddlerFields/Caption}}","text":"\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo TiddlerFields/Hint>>\n\n{{$:/snippets/allfields}}"},"$:/core/ui/ControlPanel/Toolbars/EditToolbar":{"tags":"$:/tags/ControlPanel/Toolbars","caption":"{{$:/language/ControlPanel/Toolbars/EditToolbar/Caption}}","text":"\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>"},"$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate":{"text":"\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"><$transclude tiddler={{!!icon}}/></span> <$transclude field=\"caption\"/> -- <i class=\"tc-muted\"><$transclude field=\"description\"/></i>\n</$draggable>\n"},"$:/core/ui/ControlPanel/Toolbars/EditorToolbar":{"tags":"$:/tags/ControlPanel/Toolbars","caption":"{{$:/language/ControlPanel/Toolbars/EditorToolbar/Caption}}","text":"\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditorToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditorToolbar/Hint}}\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditorToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate\"/>\n"},"$:/core/ui/ControlPanel/Toolbars/ItemTemplate":{"text":"\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"> <$transclude field=\"caption\"/> <i class=\"tc-muted\">-- <$transclude field=\"description\"/></i></span>\n</$draggable>\n"},"$:/core/ui/ControlPanel/Toolbars/PageControls":{"tags":"$:/tags/ControlPanel/Toolbars","caption":"{{$:/language/ControlPanel/Toolbars/PageControls/Caption}}","text":"\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/PageControlButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/PageControls/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/PageControls\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"},"$:/core/ui/ControlPanel/Toolbars/ViewToolbar":{"tags":"$:/tags/ControlPanel/Toolbars","caption":"{{$:/language/ControlPanel/Toolbars/ViewToolbar/Caption}}","text":"\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/ViewToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/ViewToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/ViewToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"},"$:/core/ui/ControlPanel/Toolbars":{"tags":"$:/tags/ControlPanel/Appearance","caption":"{{$:/language/ControlPanel/Toolbars/Caption}}","text":"{{$:/language/ControlPanel/Toolbars/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Toolbars]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Toolbars/ViewToolbar\" class=\"tc-vertical\" explicitState=\"$:/state/tabs/controlpanel/toolbars-1345989671\"/>\n</div>\n"},"$:/ControlPanel":{"icon":"$:/core/images/options-button","color":"#bbb","text":"<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Info\" explicitState=\"$:/state/tab-1749438307\"/>\n</div>\n"},"$:/core/ui/DefaultSearchResultList":{"tags":"$:/tags/SearchResults","caption":"{{$:/language/Search/DefaultResults/Caption}}","first-search-filter":"[!is[system]search:title<userInput>sort[title]limit[250]]","second-search-filter":"[!is[system]search<userInput>sort[title]limit[250]]","text":"\\define searchResultList()\n//<small>{{$:/language/Search/Matches/Title}}</small>//\n\n<$list filter=\"[<userInput>minlength[1]]\" variable=\"ignore\">\n<$list filter={{{ [<configTiddler>get[first-search-filter]] }}}>\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[<searchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n</$list>\n\n//<small>{{$:/language/Search/Matches/All}}</small>//\n\n<$list filter=\"[<userInput>minlength[1]]\" variable=\"ignore\">\n<$list filter={{{ [<configTiddler>get[second-search-filter]] }}}>\n<span class={{{[<currentTiddler>addsuffix[-secondaryList]] -[<searchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n</$list>\n\n\\end\n<<searchResultList>>\n"},"$:/core/ui/EditTemplate/body/preview/diffs-current":{"tags":"$:/tags/EditPreview","caption":"differences from current","list-after":"$:/core/ui/EditTemplate/body/preview/output","text":"<$list filter=\"[<currentTiddler>!is[image]]\" emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}>\n\n<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle={{!!draft.of}} destTiddlerTitle=<<currentTiddler>>/>\n\n</$list>\n\n"},"$:/core/ui/EditTemplate/body/preview/diffs-shadow":{"tags":"$:/tags/EditPreview","caption":"differences from shadow (if any)","list-after":"$:/core/ui/EditTemplate/body/preview/output","text":"<$list filter=\"[<currentTiddler>!is[image]]\" emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}>\n\n<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle={{{ [{!!draft.of}shadowsource[]] }}} sourceSubTiddlerTitle={{!!draft.of}} destTiddlerTitle=<<currentTiddler>>/>\n\n</$list>\n\n"},"$:/core/ui/EditTemplate/body/preview/output":{"tags":"$:/tags/EditPreview","caption":"{{$:/language/EditTemplate/Body/Preview/Type/Output}}","text":"\\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!has[draft.of]]\n<$set name=\"tv-tiddler-preview\" value=\"yes\">\n\n<$transclude />\n\n</$set>\n"},"$:/state/showeditpreview":{"text":"no"},"$:/core/ui/EditTemplate/body/editor":{"text":"<$edit\n\n field=\"text\"\n class=\"tc-edit-texteditor tc-edit-texteditor-body\"\n placeholder={{$:/language/EditTemplate/Body/Placeholder}}\n tabindex={{$:/config/EditTabIndex}}\n focus={{{ [{$:/config/AutoFocus}match[text]then[true]] ~[[false]] }}}\n cancelPopups=\"yes\"\n\n><$set\n\n name=\"targetTiddler\"\n value=<<currentTiddler>>\n\n><$list\n\n filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]]\"\n\n><$reveal\n\n type=\"nomatch\"\n state=<<config-visibility-title>>\n text=\"hide\"\n class=\"tc-text-editor-toolbar-item-wrapper\"\n\n><$transclude\n\n tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\"\n mode=\"inline\"\n\n/></$reveal></$list></$set></$edit>\n"},"$:/core/ui/EditTemplate/body/toolbar/button":{"text":"\\define toolbar-button-icon()\n<$list\n\n filter=\"[all[current]!has[custom-icon]]\"\n variable=\"no-custom-icon\"\n\n><$transclude\n\n tiddler={{!!icon}}\n\n/></$list>\n\\end\n\n\\define toolbar-button-tooltip()\n{{!!description}}<$macrocall $name=\"displayshortcuts\" $output=\"text/plain\" shortcuts={{!!shortcuts}} prefix=\"` - [\" separator=\"] [\" suffix=\"]`\"/>\n\\end\n\n\\define toolbar-button()\n<$list\n\n filter={{!!condition}}\n variable=\"list-condition\"\n\n><$wikify\n\n name=\"tooltip-text\"\n text=<<toolbar-button-tooltip>>\n mode=\"inline\"\n output=\"text\"\n\n><$list\n\n filter=\"[all[current]!has[dropdown]]\"\n variable=\"no-dropdown\"\n\n><$button\n\n class=\"tc-btn-invisible $(buttonClasses)$\"\n tooltip=<<tooltip-text>>\n actions={{!!actions}}\n\n><span\n\n data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n tiddler=<<currentTiddler>>\n field=\"text\"\n\n/></$button></$list><$list\n\n filter=\"[all[current]has[dropdown]]\"\n variable=\"dropdown\"\n\n><$set\n\n name=\"dropdown-state\"\n value=<<qualify \"$:/state/EditorToolbarDropdown\">>\n\n><$button\n\n popup=<<dropdown-state>>\n class=\"tc-popup-keep tc-btn-invisible $(buttonClasses)$\"\n selectedClass=\"tc-selected\"\n tooltip=<<tooltip-text>>\n actions={{!!actions}}\n\n><span\n\n data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n tiddler=<<currentTiddler>>\n field=\"text\"\n\n/></$button><$reveal\n\n state=<<dropdown-state>>\n type=\"popup\"\n position=\"below\"\n animate=\"yes\"\n tag=\"span\"\n\n><div\n\n class=\"tc-drop-down tc-popup-keep\"\n\n><$transclude\n\n tiddler={{!!dropdown}}\n mode=\"block\"\n\n/></div></$reveal></$set></$list></$wikify></$list>\n\\end\n\n\\define toolbar-button-outer()\n<$set\n\n name=\"buttonClasses\"\n value={{!!button-classes}}\n\n><<toolbar-button>></$set>\n\\end\n\n<<toolbar-button-outer>>"},"$:/core/ui/EditTemplate/body":{"tags":"$:/tags/EditTemplate","text":"\\define lingo-base() $:/language/EditTemplate/Body/\n\\define config-visibility-title()\n$:/config/EditorToolbarButtons/Visibility/$(currentTiddler)$\n\\end\n<$list filter=\"[all[current]has[_canonical_uri]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo External/Hint>>\n\n<a href={{!!_canonical_uri}}><$text text={{!!_canonical_uri}}/></a>\n\n<$edit-text field=\"_canonical_uri\" class=\"tc-edit-fields\" tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"></$edit-text>\n\n</div>\n\n</$list>\n\n<$list filter=\"[all[current]!has[_canonical_uri]]\">\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\">\n\n<div class=\"tc-tiddler-preview\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n<div class=\"tc-tiddler-preview-preview\">\n\n<$transclude tiddler={{$:/state/editpreviewtype}} mode=\"inline\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/preview/output\" mode=\"inline\"/>\n\n</$transclude>\n\n</div>\n\n</div>\n\n</$reveal>\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n</$reveal>\n\n</$list>\n"},"$:/core/ui/EditTemplate/controls":{"tags":"$:/tags/EditTemplate","text":"\\define config-title()\n$:/config/EditToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title tc-tiddler-edit-title\">\n<$view field=\"title\"/>\n<span class=\"tc-tiddler-controls tc-titlebar\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$transclude tiddler=<<listItem>>/></$reveal></$list></span>\n<div style=\"clear: both;\"></div>\n</div>\n"},"$:/core/ui/EditTemplate/fields":{"tags":"$:/tags/EditTemplate","text":"\\define lingo-base() $:/language/EditTemplate/\n\\define config-title()\n$:/config/EditTemplateFields/Visibility/$(currentField)$\n\\end\n\n\\define config-filter()\n[[hide]] -[title{$(config-title)$}]\n\\end\n\n\\define current-tiddler-new-field-selector()\n[data-tiddler-title=\"$(currentTiddlerCSSescaped)$\"] .tc-edit-field-add-name-wrapper input\n\\end\n\n\\define new-field-actions()\n<$action-sendmessage $message=\"tm-add-field\" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<storeTitle>] [<searchListState>]\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=<<current-tiddler-new-field-selector>>/>\n\\end\n\n\\define delete-state-tiddlers() <$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<storeTitle>] [<searchListState>]\"/>\n\n\\define cancel-search-actions-inner()\n<$list filter=\"[<storeTitle>has[text]] [<newFieldNameTiddler>has[text]]\" variable=\"ignore\" emptyMessage=\"\"\"<<cancel-delete-tiddler-actions \"cancel\">>\"\"\">\n<<delete-state-tiddlers>>\n</$list>\n\\end\n\n\\define cancel-search-actions()\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[<newFieldNameTiddler>get[text]!match<userInput>]\" emptyMessage=\"\"\"<<cancel-search-actions-inner>>\"\"\">\n<$action-setfield $tiddler=<<newFieldNameTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n</$list>\n</$set>\n\\end\n\n\\define new-field()\n<$vars name={{{ [<newFieldNameTiddler>get[text]] }}}>\n<$reveal type=\"nomatch\" text=\"\" default=<<name>>>\n<$button tooltip=<<lingo Fields/Add/Button/Hint>>>\n<$action-sendmessage $message=\"tm-add-field\"\n$name=<<name>>\n$value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<storeTitle>] [<searchListState>]\"/>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" text=\"\" default=<<name>>>\n<$button>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n</$vars>\n\\end\n\\whitespace trim\n\n<div class=\"tc-edit-fields\">\n<table class={{{ [all[current]fields[]] :filter[lookup[$:/config/EditTemplateFields/Visibility/]!match[hide]] +[count[]!match[0]] +[then[tc-edit-fields]] ~[[tc-edit-fields tc-edit-fields-small]] }}}>\n<tbody>\n<$list filter=\"[all[current]fields[]] +[sort[title]]\" variable=\"currentField\" storyview=\"pop\">\n<$list filter=<<config-filter>> variable=\"temp\">\n<tr class=\"tc-edit-field\">\n<td class=\"tc-edit-field-name\">\n<$text text=<<currentField>>/>:</td>\n<td class=\"tc-edit-field-value\">\n<$keyboard key=\"((delete-field))\" actions=\"\"\"<$action-deletefield $field=<<currentField>>/><$set name=\"currentTiddlerCSSescaped\" value={{{ [<currentTiddler>escapecss[]] }}}><$action-sendmessage $message=\"tm-focus-selector\" $param=<<current-tiddler-new-field-selector>>/></$set>\"\"\">\n<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"/>\n</$keyboard>\n</td>\n<td class=\"tc-edit-field-remove\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\n<$action-deletefield $field=<<currentField>>/><$set name=\"currentTiddlerCSSescaped\" value={{{ [<currentTiddler>escapecss[]] }}}><$action-sendmessage $message=\"tm-focus-selector\" $param=<<current-tiddler-new-field-selector>>/></$set>\n{{$:/core/images/delete-button}}\n</$button>\n</td>\n</tr>\n</$list>\n</$list>\n</tbody>\n</table>\n</div>\n\n<$fieldmangler>\n<div class=\"tc-edit-field-add\">\n<em class=\"tc-edit tc-small-gap-right\">\n<<lingo Fields/Add/Prompt>>\n</em>\n<$vars refreshTitle=<<qualify \"$:/temp/fieldname/refresh\">> storeTitle=<<newFieldNameInputTiddler>> searchListState=<<newFieldNameSelectionTiddler>>>\n<div class=\"tc-edit-field-add-name-wrapper\">\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<newFieldNameTiddler>> storeTitle=<<storeTitle>> refreshTitle=<<refreshTitle>>\n\t\tselectionStateTitle=<<searchListState>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}}\n\t\tfocusPopup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-edit-texteditor tc-popup-handle\" tabindex={{$:/config/EditTabIndex}}\n\t\tfocus={{{ [{$:/config/AutoFocus}match[fields]then[true]] ~[[false]] }}} cancelPopups=\"yes\"\n\t\tconfigTiddlerFilter=\"[[$:/config/EditMode/fieldname-filter]]\" inputCancelActions=<<cancel-search-actions>> />\n<$button popup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown tc-small-gap\" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/field-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher to=<<newFieldNameTiddler>>>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/User>>\n</div>\n<$set name=\"newFieldName\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[!is[shadow]!is[system]fields[]search:title<newFieldName>sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type\" variable=\"currentField\">\n<$list filter=\"[<currentField>addsuffix[-primaryList]] -[<searchListState>get[text]]\" emptyMessage=\"\"\"<$link to=<<currentField>> class=\"tc-list-item-selected\"><$text text=<<currentField>>/></$link>\"\"\">\n<$link to=<<currentField>>>\n<$text text=<<currentField>>/>\n</$link>\n</$list>\n</$list>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/System>>\n</div>\n<$list filter=\"[fields[]search:title<newFieldName>sort[]] -[!is[shadow]!is[system]fields[]]\" variable=\"currentField\">\n<$list filter=\"[<currentField>addsuffix[-secondaryList]] -[<searchListState>get[text]]\" emptyMessage=\"\"\"<$link to=<<currentField>> class=\"tc-list-item-selected\"><$text text=<<currentField>>/></$link>\"\"\">\n<$link to=<<currentField>>>\n<$text text=<<currentField>>/>\n</$link>\n</$list>\n</$list>\n</$set>\n</$linkcatcher>\n</$set>\n</div>\n</$reveal>\n</div>\n<span class=\"tc-edit-field-add-value tc-small-gap-right\">\n<$set name=\"currentTiddlerCSSescaped\" value={{{ [<currentTiddler>escapecss[]] }}}>\n<$keyboard key=\"((add-field))\" actions=<<new-field-actions>>>\n<$edit-text tiddler=<<newFieldValueTiddler>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class=\"tc-edit-texteditor\" tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"/>\n</$keyboard>\n</$set>\n</span>\n<span class=\"tc-edit-field-add-button\">\n<$macrocall $name=\"new-field\"/>\n</span>\n</$vars>\n</div>\n</$fieldmangler>\n"},"$:/core/ui/EditTemplate/shadow":{"tags":"$:/tags/EditTemplate","text":"\\define lingo-base() $:/language/EditTemplate/Shadow/\n\\define pluginLinkBody()\n<$link to=\"\"\"$(pluginTitle)$\"\"\">\n<$text text=\"\"\"$(pluginTitle)$\"\"\"/>\n</$link>\n\\end\n<$list filter=\"[all[current]get[draft.of]is[shadow]!is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>\n\n<$list filter=\"[all[current]get[draft.of]is[shadow]is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo OverriddenWarning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>"},"$:/core/ui/EditTemplate/tags":{"tags":"$:/tags/EditTemplate","text":"\\whitespace trim\n\n\\define lingo-base() $:/language/EditTemplate/\n\n\\define tag-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-body-inner(colour,fallbackTarget,colourA,colourB,icon,tagField:\"tags\")\n\\whitespace trim\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<span style=<<tag-styles>> class=\"tc-tag-label tc-tag-list-item\">\n<$transclude tiddler=\"\"\"$icon$\"\"\"/><$view field=\"title\" format=\"text\" />\n<$button class=\"tc-btn-invisible tc-remove-tag-button\" style=<<tag-styles>>><$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"-[{!!title}]\"/>{{$:/core/images/close-button}}</$button>\n</span>\n</$vars>\n\\end\n\n\\define tag-body(colour,palette,icon,tagField:\"tags\")\n<$macrocall $name=\"tag-body-inner\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} icon=\"\"\"$icon$\"\"\" tagField=<<__tagField__>>/>\n\\end\n\n\\define edit-tags-template(tagField:\"tags\")\n\\whitespace trim\n<div class=\"tc-edit-tags\">\n<$list filter=\"[list[!!$tagField$]sort[title]]\" storyview=\"pop\">\n<$macrocall $name=\"tag-body\" colour={{!!color}} palette={{$:/palette}} icon={{!!icon}} tagField=<<__tagField__>>/>\n</$list>\n<$vars tabIndex={{$:/config/EditTabIndex}} cancelPopups=\"yes\">\n<$macrocall $name=\"tag-picker\" tagField=<<__tagField__>>/>\n</$vars>\n</div>\n\\end\n<$set name=\"saveTiddler\" value=<<currentTiddler>>>\n<$macrocall $name=\"edit-tags-template\" tagField=<<tagField>>/>\n</$set>\n"},"$:/core/ui/EditTemplate/title":{"tags":"$:/tags/EditTemplate","text":"<$edit-text field=\"draft.title\" class=\"tc-titlebar tc-edit-texteditor\" focus={{{ [{$:/config/AutoFocus}match[title]then[true]] ~[[false]] }}} tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"/>\n\n<$vars pattern=\"\"\"[\\|\\[\\]{}]\"\"\" bad-chars=\"\"\"`| [ ] { }`\"\"\">\n\n<$list filter=\"[all[current]regexp:draft.title<pattern>]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/BadCharacterWarning}}\n\n</div>\n\n</$list>\n\n</$vars>\n\n<$reveal state=\"!!draft.title\" type=\"nomatch\" text={{!!draft.of}} tag=\"div\">\n\n<$list filter=\"[{!!draft.title}!is[missing]]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/Exists/Prompt}}\n\n</div>\n\n</$list>\n\n<$list filter=\"[{!!draft.of}!is[missing]]\" variable=\"listItem\">\n\n<$vars fromTitle={{!!draft.of}} toTitle={{!!draft.title}}>\n\n<$checkbox tiddler=\"$:/config/RelinkOnRename\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> {{$:/language/EditTemplate/Title/Relink/Prompt}}</$checkbox>\n\n<$list filter=\"[title<fromTitle>backlinks[]limit[1]]\" variable=\"listItem\">\n\n<$vars stateTiddler=<<qualify \"$:/state/edit/references\">> >\n\n<$reveal type=\"nomatch\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"show\" class=\"tc-btn-invisible\">{{$:/core/images/right-arrow}} \n<<lingo EditTemplate/Title/References/Prompt>></$button>\n</$reveal>\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"hide\" class=\"tc-btn-invisible\">{{$:/core/images/down-arrow}} \n<<lingo EditTemplate/Title/References/Prompt>></$button>\n</$reveal>\n\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$tiddler tiddler=<<fromTitle>> >\n<$transclude tiddler=\"$:/core/ui/TiddlerInfo/References\"/>\n</$tiddler>\n</$reveal>\n\n</$vars>\n\n</$list>\n\n</$vars>\n\n</$list>\n\n</$reveal>\n"},"$:/core/ui/EditTemplate/type":{"tags":"$:/tags/EditTemplate","first-search-filter":"[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]sort[description]sort[group-sort]removeprefix[$:/language/Docs/Types/]search<userInput>]","text":"\\define lingo-base() $:/language/EditTemplate/\n\\define input-cancel-actions() <$list filter=\"[<storeTitle>get[text]] [<currentTiddler>get[type]] +[limit[1]]\" emptyMessage=\"\"\"<<cancel-delete-tiddler-actions \"cancel\">>\"\"\"><$action-sendmessage $message=\"tm-remove-field\" $param=\"type\"/><$action-deletetiddler $filter=\"[<typeInputTiddler>] [<refreshTitle>] [<typeSelectionTiddler>]\"/></$list>\n\\whitespace trim\n<$set name=\"refreshTitle\" value=<<qualify \"$:/temp/type-search/refresh\">>>\n<div class=\"tc-edit-type-selector-wrapper\">\n<em class=\"tc-edit tc-small-gap-right\"><<lingo Type/Prompt>></em>\n<div class=\"tc-type-selector-dropdown-wrapper\">\n<div class=\"tc-type-selector\"><$fieldmangler>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<currentTiddler>> storeTitle=<<typeInputTiddler>> refreshTitle=<<refreshTitle>> selectionStateTitle=<<typeSelectionTiddler>> field=\"type\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-edit-typeeditor tc-edit-texteditor tc-popup-handle\" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[type]then[true]] ~[[false]] }}} cancelPopups=\"yes\" configTiddlerFilter=\"[[$:/core/ui/EditTemplate/type]]\" inputCancelActions=<<input-cancel-actions>>/><$button popup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown tc-small-gap\" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button><$button message=\"tm-remove-field\" param=\"type\" class=\"tc-btn-invisible tc-btn-icon\" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}>{{$:/core/images/delete-button}}<$action-deletetiddler $filter=\"[<storeTitle>] [<refreshTitle>] [<selectionStateTitle>]\"/></$button>\n</$fieldmangler></div>\n\n<div class=\"tc-block-dropdown-wrapper\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$reveal state=<<qualify \"$:/state/popup/type-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$linkcatcher to=\"!!type\">\n<$list filter='[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]each[group]sort[group-sort]]'>\n<div class=\"tc-dropdown-item\">\n<$text text={{!!group}}/>\n</div>\n<$set name=\"userInput\" value={{{ [<typeInputTiddler>get[text]] }}}>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] +[sort[description]] +[removeprefix[$:/language/Docs/Types/]] +[search<userInput>]\"><span class={{{ [<currentTiddler>addsuffix[-primaryList]] -[<typeSelectionTiddler>get[text]] +[then[]else[tc-list-item-selected]] }}}><$link to={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]get[name]] }}}><$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field=\"description\"/> (<$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field=\"name\"/>)</$link></span>\n</$list>\n</$set>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>\n</$set>\n</div>\n</div>\n</div>\n</$set>\n"},"$:/core/ui/EditTemplate":{"text":"\\define delete-edittemplate-state-tiddlers() <$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<newFieldNameInputTiddler>] [<newFieldNameSelectionTiddler>] [<newTagNameTiddler>] [<newTagNameInputTiddler>] [<newTagNameSelectionTiddler>] [<typeInputTiddler>] [<typeSelectionTiddler>]\"/>\n\\define save-tiddler-actions()\n<$action-sendmessage $message=\"tm-add-tag\" $param={{{ [<newTagNameTiddler>get[text]] }}}/>\n<$action-sendmessage $message=\"tm-add-field\" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<<delete-edittemplate-state-tiddlers>>\n<$action-sendmessage $message=\"tm-save-tiddler\"/>\n\\end\n\\define cancel-delete-tiddler-actions(message)\n<<delete-edittemplate-state-tiddlers>>\n<$action-sendmessage $message=\"tm-$message$-tiddler\"/>\n\\end\n<div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class={{{ tc-tiddler-frame tc-tiddler-edit-frame [<currentTiddler>is[tiddler]then[tc-tiddler-exists]] [<currentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [<currentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [<currentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [<currentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}>\n<$fieldmangler>\n<$vars storyTiddler=<<currentTiddler>> newTagNameTiddler=<<qualify \"$:/temp/NewTagName\">> newFieldNameTiddler=<<qualify \"$:/temp/NewFieldName\">> newFieldValueTiddler=<<qualify \"$:/temp/NewFieldValue\">> newFieldNameInputTiddler=<<qualify \"$:/temp/NewFieldName/input\">> newFieldNameSelectionTiddler=<<qualify \"$:/temp/NewFieldName/selected-item\">> newTagNameInputTiddler=<<qualify \"$:/temp/NewTagName/input\">> newTagNameSelectionTiddler=<<qualify \"$:/temp/NewTagName/selected-item\">> typeInputTiddler=<<qualify \"$:/temp/Type/input\">> typeSelectionTiddler=<<qualify \"$:/temp/Type/selected-item\">>>\n<$keyboard key=\"((cancel-edit-tiddler))\" actions=<<cancel-delete-tiddler-actions \"cancel\">>>\n<$keyboard key=\"((save-tiddler))\" actions=<<save-tiddler-actions>>>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditTemplate]!has[draft.of]]\" variable=\"listItem\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>>/>\n</$set>\n</$list>\n</$keyboard>\n</$keyboard>\n</$vars>\n</$fieldmangler>\n</div>\n"},"$:/core/ui/Buttons/cancel":{"tags":"$:/tags/EditToolbar","caption":"{{$:/core/images/cancel-button}} {{$:/language/Buttons/Cancel/Caption}}","description":"{{$:/language/Buttons/Cancel/Hint}}","text":"\\whitespace trim\n<$button actions=<<cancel-delete-tiddler-actions \"cancel\">> tooltip={{$:/language/Buttons/Cancel/Hint}} aria-label={{$:/language/Buttons/Cancel/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/cancel-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Cancel/Caption}}/></span>\n</$list>\n</$button>\n"},"$:/core/ui/Buttons/delete":{"tags":"$:/tags/EditToolbar $:/tags/ViewToolbar","caption":"{{$:/core/images/delete-button}} {{$:/language/Buttons/Delete/Caption}}","description":"{{$:/language/Buttons/Delete/Hint}}","text":"\\whitespace trim\n<$button actions=<<cancel-delete-tiddler-actions \"delete\">> tooltip={{$:/language/Buttons/Delete/Hint}} aria-label={{$:/language/Buttons/Delete/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/delete-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Delete/Caption}}/></span>\n</$list>\n</$button>\n"},"$:/core/ui/Buttons/save":{"tags":"$:/tags/EditToolbar","caption":"{{$:/core/images/done-button}} {{$:/language/Buttons/Save/Caption}}","description":"{{$:/language/Buttons/Save/Hint}}","text":"\\define save-tiddler-button()\n\\whitespace trim\n<$fieldmangler><$button tooltip={{$:/language/Buttons/Save/Hint}} aria-label={{$:/language/Buttons/Save/Caption}} class=<<tv-config-toolbar-class>>>\n<<save-tiddler-actions>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/done-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Save/Caption}}/></span>\n</$list>\n</$button></$fieldmangler>\n\\end\n<<save-tiddler-button>>\n"},"$:/core/ui/EditorToolbar/bold":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/bold","caption":"{{$:/language/Buttons/Bold/Caption}}","description":"{{$:/language/Buttons/Bold/Hint}}","condition":"[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]","shortcuts":"((bold))","text":"<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"''\"\n\tsuffix=\"''\"\n/>\n"},"$:/core/ui/EditorToolbar/clear-dropdown":{"text":"''{{$:/language/Buttons/Clear/Hint}}''\n\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"clear\"\n\tcolour=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n\n</div>\n"},"$:/core/ui/EditorToolbar/clear":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/erase","caption":"{{$:/language/Buttons/Clear/Caption}}","description":"{{$:/language/Buttons/Clear/Hint}}","condition":"[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]","dropdown":"$:/core/ui/EditorToolbar/clear-dropdown","text":""},"$:/core/ui/EditorToolbar/editor-height-dropdown":{"text":"\\define lingo-base() $:/language/Buttons/EditorHeight/\n''<<lingo Hint>>''\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"auto\"> {{$:/core/images/auto-height}} <<lingo Caption/Auto>></$radio>\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"fixed\"> {{$:/core/images/fixed-height}} <<lingo Caption/Fixed>> <$edit-text tag=\"input\" tiddler=\"$:/config/TextEditor/EditorHeight/Height\" default=\"100px\"/></$radio>\n"},"$:/core/ui/EditorToolbar/editor-height":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/fixed-height","custom-icon":"yes","caption":"{{$:/language/Buttons/EditorHeight/Caption}}","description":"{{$:/language/Buttons/EditorHeight/Hint}}","condition":"[<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/]] [<targetTiddler>get[type]match[application/javascript]] [<targetTiddler>get[type]match[application/json]] [<targetTiddler>get[type]match[application/x-tiddler-dictionary]] [<targetTiddler>get[type]match[image/svg+xml]] +[first[]]","dropdown":"$:/core/ui/EditorToolbar/editor-height-dropdown","text":"<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n{{$:/core/images/fixed-height}}\n</$reveal>\n<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n{{$:/core/images/auto-height}}\n</$reveal>\n"},"$:/core/ui/EditorToolbar/excise-dropdown":{"text":"\\define lingo-base() $:/language/Buttons/Excise/\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<<lingo Caption/NewTitle>> <$edit-text tag=\"input\" tiddler=\"$config-title$/new-title\" default=\"\" focus=\"true\"/>\n\n<$set name=\"new-title\" value={{$config-title$/new-title}}>\n<$list filter=\"\"\"[<new-title>is[tiddler]]\"\"\">\n<div class=\"tc-error\">\n<<lingo Caption/TiddlerExists>>\n</div>\n</$list>\n</$set>\n\n<$checkbox tiddler=\"\"\"$config-title$/tagnew\"\"\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"false\"> <<lingo Caption/Tag>></$checkbox>\n\n<<lingo Caption/Replace>> <$select tiddler=\"\"\"$config-title$/type\"\"\" default=\"transclude\">\n<option value=\"link\"><<lingo Caption/Replace/Link>></option>\n<option value=\"transclude\"><<lingo Caption/Replace/Transclusion>></option>\n<option value=\"macro\"><<lingo Caption/Replace/Macro>></option>\n</$select>\n\n<$reveal state=\"\"\"$config-title$/type\"\"\" type=\"match\" text=\"macro\">\n<<lingo Caption/MacroName>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/macro-title\"\"\" default=\"translink\"/>\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"excise\"\n\ttitle={{$config-title$/new-title}}\n\ttype={{$config-title$/type}}\n\tmacro={{$config-title$/macro-title}}\n\ttagnew={{$config-title$/tagnew}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"$config-title$/new-title\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Excise>>\n</$button>\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Excise/\">>/>\n"},"$:/core/ui/EditorToolbar/excise":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/excise","caption":"{{$:/language/Buttons/Excise/Caption}}","description":"{{$:/language/Buttons/Excise/Hint}}","condition":"[<targetTiddler>type[]] [<targetTiddler>type[text/vnd.tiddlywiki]] +[first[]]","shortcuts":"((excise))","dropdown":"$:/core/ui/EditorToolbar/excise-dropdown","text":""},"$:/core/ui/EditorToolbar/heading-1":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/heading-1","caption":"{{$:/language/Buttons/Heading1/Caption}}","description":"{{$:/language/Buttons/Heading1/Hint}}","condition":"[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]","button-classes":"tc-text-editor-toolbar-item-start-group","shortcuts":"((heading-1))","text":"<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"1\"\n/>\n"},"$:/core/ui/EditorToolbar/heading-2":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/heading-2","caption":"{{$:/language/Buttons/Heading2/Caption}}","description":"{{$:/language/Buttons/Heading2/Hint}}","condition":"[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]","shortcuts":"((heading-2))","text":"<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"2\"\n/>\n"},"$:/core/ui/EditorToolbar/heading-3":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/heading-3","caption":"{{$:/language/Buttons/Heading3/Caption}}","description":"{{$:/language/Buttons/Heading3/Hint}}","condition":"[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]","shortcuts":"((heading-3))","text":"<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"3\"\n/>\n"},"$:/core/ui/EditorToolbar/heading-4":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/heading-4","caption":"{{$:/language/Buttons/Heading4/Caption}}","description":"{{$:/language/Buttons/Heading4/Hint}}","condition":"[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]","shortcuts":"((heading-4))","text":"<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"4\"\n/>\n"},"$:/core/ui/EditorToolbar/heading-5":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/heading-5","caption":"{{$:/language/Buttons/Heading5/Caption}}","description":"{{$:/language/Buttons/Heading5/Hint}}","condition":"[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]","shortcuts":"((heading-5))","text":"<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"5\"\n/>\n"},"$:/core/ui/EditorToolbar/heading-6":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/heading-6","caption":"{{$:/language/Buttons/Heading6/Caption}}","description":"{{$:/language/Buttons/Heading6/Hint}}","condition":"[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]","shortcuts":"((heading-6))","text":"<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"6\"\n/>\n"},"$:/core/ui/EditorToolbar/italic":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/italic","caption":"{{$:/language/Buttons/Italic/Caption}}","description":"{{$:/language/Buttons/Italic/Hint}}","condition":"[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]","shortcuts":"((italic))","text":"<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"//\"\n\tsuffix=\"//\"\n/>\n"},"$:/core/ui/EditorToolbar/line-width-dropdown":{"text":"\\define lingo-base() $:/language/Buttons/LineWidth/\n\n\\define toolbar-line-width-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(line-width)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/LineWidth\"\n\t$value=\"$(line-width)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; margin: 4px calc(80px - $(line-width)$); background-color: #000; width: calc(100px + $(line-width)$ * 2); height: $(line-width)$; border-radius: 120px; vertical-align: middle;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(line-width)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/LineWidth\" type=\"match\" text=\"\"\"$(line-width)$\"\"\" tag=\"span\">\n\n<$entity entity=\" \"/>\n\n<$entity entity=\"✓\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/LineWidths}} variable=\"line-width\">\n\n<<toolbar-line-width-inner>>\n\n</$list>\n"},"$:/core/ui/EditorToolbar/line-width":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/line-width","caption":"{{$:/language/Buttons/LineWidth/Caption}}","description":"{{$:/language/Buttons/LineWidth/Hint}}","condition":"[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]","dropdown":"$:/core/ui/EditorToolbar/line-width-dropdown","text":"<$text text={{$:/config/BitmapEditor/LineWidth}}/>\n"},"$:/core/ui/EditorToolbar/link-dropdown":{"text":"\\define lingo-base() $:/language/Buttons/Link/\n\n\\define add-link-actions()\n<$action-sendmessage $message=\"tm-edit-text-operation\" $param=\"make-link\" text={{$(linkTiddler)$}} />\n<$action-deletetiddler $filter=\"[<dropdown-state>] [<searchTiddler>] [<linkTiddler>] [<storeTitle>] [<searchListState>]\"/>\n\\end\n\n\\define get-focus-selector() [data-tiddler-title=\"$(cssEscapedTitle)$\"] .tc-create-wikitext-link input\n\n\\define cancel-search-actions-inner()\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}><$list filter=\"[<searchTiddler>get[text]!match<userInput>]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[<searchTiddler>] [<linkTiddler>] [<storeTitle>] [<searchListState>]\"/>\"\"\"><$action-setfield $tiddler=<<searchTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/></$list></$set>\n\\end\n\n\\define cancel-search-actions() <$list filter=\"[<storeTitle>!has[text]] +[<searchTiddler>!has[text]]\" emptyMessage=\"\"\"<<cancel-search-actions-inner>>\"\"\"><$action-sendmessage $message=\"tm-edit-text-operation\" $param=\"wrap-selection\" prefix=\"\" suffix=\"\"/></$list>\n\n\\define external-link()\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\" actions=<<add-link-actions>>>\n{{$:/core/images/chevron-right}}\n</$button>\n\\end\n\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab/search-results/sidebar\" tag=\"$:/tags/SearchResults\" beforeafter=\"$beforeafter$\" defaultState={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/search/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<$vars searchTiddler=\"\"\"$config-title$/search\"\"\" linkTiddler=\"\"\"$config-title$/link\"\"\" linktext=\"\" searchListState=<<qualify \"$:/temp/link-search/selected-item\">> refreshTitle=<<qualify \"$:/temp/link-search/refresh\">> storeTitle=<<qualify \"$:/temp/link-search/input\">>>\n\n<$vars linkTiddler=<<searchTiddler>>>\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">> class=\"tc-create-wikitext-link\">\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<searchTiddler>> storeTitle=<<storeTitle>>\n\t\tselectionStateTitle=<<searchListState>> refreshTitle=<<refreshTitle>> type=\"search\" filterMinLength=\"1\"\n\t\ttag=\"input\" focus=\"true\" class=\"tc-popup-handle\" inputCancelActions=<<cancel-search-actions>> \n\t\tinputAcceptActions=<<add-link-actions>> placeholder={{$:/language/Search/Search}} default=\"\" \n\t\tconfigTiddlerFilter=\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\" />\n</$keyboard>\n</$keyboard>\n<$reveal tag=\"span\" state=<<storeTitle>> type=\"nomatch\" text=\"\">\n<<external-link>>\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\">\n<<cancel-search-actions>><$set name=\"cssEscapedTitle\" value={{{ [<storyTiddler>escapecss[]] }}}><$action-sendmessage $message=\"tm-focus-selector\" $param=<<get-focus-selector>>/></$set>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</$vars>\n\n<$reveal tag=\"div\" state=<<storeTitle>> type=\"nomatch\" text=\"\">\n\n<$linkcatcher actions=<<add-link-actions>> to=<<linkTiddler>>>\n\n<$vars userInput={{{ [<storeTitle>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}}>\n\n{{$:/core/ui/SearchResults}}\n\n</$vars>\n\n</$linkcatcher>\n\n</$reveal>\n\n</$vars>\n\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Link/\">>/>\n"},"$:/core/ui/EditorToolbar/link":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/link","caption":"{{$:/language/Buttons/Link/Caption}}","description":"{{$:/language/Buttons/Link/Hint}}","condition":"[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]","button-classes":"tc-text-editor-toolbar-item-start-group","shortcuts":"((link))","dropdown":"$:/core/ui/EditorToolbar/link-dropdown","text":""},"$:/core/ui/EditorToolbar/linkify":{"caption":"{{$:/language/Buttons/Linkify/Caption}}","condition":"[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]","description":"{{$:/language/Buttons/Linkify/Hint}}","icon":"$:/core/images/linkify","list-before":"$:/core/ui/EditorToolbar/mono-block","shortcuts":"((linkify))","tags":"$:/tags/EditorToolbar","text":"<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"[[\"\n\tsuffix=\"]]\"\n/>\n"},"$:/core/ui/EditorToolbar/list-bullet":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/list-bullet","caption":"{{$:/language/Buttons/ListBullet/Caption}}","description":"{{$:/language/Buttons/ListBullet/Hint}}","condition":"[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]","shortcuts":"((list-bullet))","text":"<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"*\"\n\tcount=\"1\"\n/>\n"},"$:/core/ui/EditorToolbar/list-number":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/list-number","caption":"{{$:/language/Buttons/ListNumber/Caption}}","description":"{{$:/language/Buttons/ListNumber/Hint}}","condition":"[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]","shortcuts":"((list-number))","text":"<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"1\"\n/>\n"},"$:/core/ui/EditorToolbar/mono-block":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/mono-block","caption":"{{$:/language/Buttons/MonoBlock/Caption}}","description":"{{$:/language/Buttons/MonoBlock/Hint}}","condition":"[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]","button-classes":"tc-text-editor-toolbar-item-start-group","shortcuts":"((mono-block))","text":"<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n```\"\n\tsuffix=\"```\"\n/>\n"},"$:/core/ui/EditorToolbar/mono-line":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/mono-line","caption":"{{$:/language/Buttons/MonoLine/Caption}}","description":"{{$:/language/Buttons/MonoLine/Hint}}","condition":"[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]","shortcuts":"((mono-line))","text":"<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"`\"\n\tsuffix=\"`\"\n/>\n"},"$:/core/ui/EditorToolbar/more-dropdown":{"text":"\\define config-title()\n$:/config/EditorToolbarButtons/Visibility/$(toolbarItem)$\n\\end\n\n\\define conditional-button()\n<$list filter={{$(toolbarItem)$!!condition}} variable=\"condition\">\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\" mode=\"inline\"/> <$transclude tiddler=<<toolbarItem>> field=\"description\"/>\n</$list>\n\\end\n\n<div class=\"tc-text-editor-toolbar-more\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]] -[[$:/core/ui/EditorToolbar/more]]\">\n<$reveal type=\"match\" state=<<config-visibility-title>> text=\"hide\" tag=\"div\">\n<<conditional-button>>\n</$reveal>\n</$list>\n</div>\n"},"$:/core/ui/EditorToolbar/more":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/down-arrow","caption":"{{$:/language/Buttons/More/Caption}}","description":"{{$:/language/Buttons/More/Hint}}","condition":"[<targetTiddler>]","dropdown":"$:/core/ui/EditorToolbar/more-dropdown","text":""},"$:/core/ui/EditorToolbar/opacity-dropdown":{"text":"\\define lingo-base() $:/language/Buttons/Opacity/\n\n\\define toolbar-opacity-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(opacity)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Opacity\"\n\t$value=\"$(opacity)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(current-paint-colour)$; opacity: $(opacity)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(opacity)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/Opacity\" type=\"match\" text=\"\"\"$(opacity)$\"\"\" tag=\"span\">\n\n<$entity entity=\" \"/>\n\n<$entity entity=\"✓\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n\\define toolbar-opacity()\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/Opacities}} variable=\"opacity\">\n\n<<toolbar-opacity-inner>>\n\n</$list>\n\\end\n\n<$set name=\"current-paint-colour\" value={{$:/config/BitmapEditor/Colour}}>\n\n<$set name=\"current-opacity\" value={{$:/config/BitmapEditor/Opacity}}>\n\n<<toolbar-opacity>>\n\n</$set>\n\n</$set>\n"},"$:/core/ui/EditorToolbar/opacity":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/opacity","caption":"{{$:/language/Buttons/Opacity/Caption}}","description":"{{$:/language/Buttons/Opacity/Hint}}","condition":"[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]","dropdown":"$:/core/ui/EditorToolbar/opacity-dropdown","text":"<$text text={{$:/config/BitmapEditor/Opacity}}/>\n"},"$:/core/ui/EditorToolbar/paint-dropdown":{"text":"''{{$:/language/Buttons/Paint/Hint}}''\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Colour\"\n\t$value=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"},"$:/core/ui/EditorToolbar/paint":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/paint","caption":"{{$:/language/Buttons/Paint/Caption}}","description":"{{$:/language/Buttons/Paint/Hint}}","condition":"[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]","dropdown":"$:/core/ui/EditorToolbar/paint-dropdown","text":"\\define toolbar-paint()\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(colour-picker-value)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\\end\n<$set name=\"colour-picker-value\" value={{$:/config/BitmapEditor/Colour}}>\n<<toolbar-paint>>\n</$set>\n"},"$:/core/ui/EditorToolbar/picture-dropdown":{"text":"\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n''{{$:/language/Buttons/Picture/Hint}}''\n\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext=<<replacement-text>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"},"$:/core/ui/EditorToolbar/picture":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/picture","caption":"{{$:/language/Buttons/Picture/Caption}}","description":"{{$:/language/Buttons/Picture/Hint}}","condition":"[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]","shortcuts":"((picture))","dropdown":"$:/core/ui/EditorToolbar/picture-dropdown","text":""},"$:/core/ui/EditorToolbar/preview-type-dropdown":{"text":"\\define preview-type-button()\n<$button tag=\"a\">\n\n<$action-setfield $tiddler=\"$:/state/editpreviewtype\" $value=\"$(previewType)$\"/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$transclude tiddler=<<previewType>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<previewType>> field=\"title\" mode=\"inline\"/>\n\n</$transclude> \n\n<$reveal tag=\"span\" state=\"$:/state/editpreviewtype\" type=\"match\" text=<<previewType>> default=\"$:/core/ui/EditTemplate/body/preview/output\">\n\n<$entity entity=\" \"/>\n\n<$entity entity=\"✓\"/>\n\n</$reveal>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]]\" variable=\"previewType\">\n\n<<preview-type-button>>\n\n</$list>\n"},"$:/core/ui/EditorToolbar/preview-type":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/chevron-down","caption":"{{$:/language/Buttons/PreviewType/Caption}}","description":"{{$:/language/Buttons/PreviewType/Hint}}","condition":"[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]butfirst[]limit[1]]","button-classes":"tc-text-editor-toolbar-item-adjunct","dropdown":"$:/core/ui/EditorToolbar/preview-type-dropdown"},"$:/core/ui/EditorToolbar/preview":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/preview-open","custom-icon":"yes","caption":"{{$:/language/Buttons/Preview/Caption}}","description":"{{$:/language/Buttons/Preview/Hint}}","condition":"[<targetTiddler>]","button-classes":"tc-text-editor-toolbar-item-start-group","shortcuts":"((preview))","text":"<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-open}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"no\"/>\n</$reveal>\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-closed}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"yes\"/>\n</$reveal>\n"},"$:/core/ui/EditorToolbar/quote":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/quote","caption":"{{$:/language/Buttons/Quote/Caption}}","description":"{{$:/language/Buttons/Quote/Hint}}","condition":"[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]","shortcuts":"((quote))","text":"<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n<<<\"\n\tsuffix=\"<<<\"\n/>\n"},"$:/core/ui/EditorToolbar/rotate-left":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/rotate-left","caption":"{{$:/language/Buttons/RotateLeft/Caption}}","description":"{{$:/language/Buttons/RotateLeft/Hint}}","condition":"[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]","text":"<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"rotate-left\"\n/>\n"},"$:/core/ui/EditorToolbar/size-dropdown":{"text":"\\define lingo-base() $:/language/Buttons/Size/\n\n\\define toolbar-button-size-preset(config-title)\n<$set name=\"width\" filter=\"$(sizePair)$ +[first[]]\">\n\n<$set name=\"height\" filter=\"$(sizePair)$ +[last[]]\">\n\n<$button tag=\"a\">\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n\t$value=<<width>>\n/>\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n\t$value=<<height>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/presets-popup\"\"\"\n/>\n\n<$text text=<<width>>/> × <$text text=<<height>>/>\n\n</$button>\n\n</$set>\n\n</$set>\n\\end\n\n\\define toolbar-button-size(config-title)\n''{{$:/language/Buttons/Size/Hint}}''\n\n<<lingo Caption/Width>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-width\"\"\" default=<<tv-bitmap-editor-width>> focus=\"true\" size=\"8\"/> <<lingo Caption/Height>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-height\"\"\" default=<<tv-bitmap-editor-height>> size=\"8\"/> <$button popup=\"\"\"$config-title$/presets-popup\"\"\" class=\"tc-btn-invisible tc-popup-keep\" style=\"width: auto; display: inline-block; background-colour: inherit;\" selectedClass=\"tc-selected\">\n{{$:/core/images/down-arrow}}\n</$button>\n\n<$reveal tag=\"span\" state=\"\"\"$config-title$/presets-popup\"\"\" type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down tc-popup-keep\">\n\n<$list filter={{$:/config/BitmapEditor/ImageSizes}} variable=\"sizePair\">\n\n<$macrocall $name=\"toolbar-button-size-preset\" config-title=\"$config-title$\"/>\n\n</$list>\n\n</div>\n\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"resize\"\n\twidth={{$config-title$/new-width}}\n\theight={{$config-title$/new-height}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Resize>>\n</$button>\n\\end\n\n<$macrocall $name=\"toolbar-button-size\" config-title=<<qualify \"$:/state/Size/\">>/>\n"},"$:/core/ui/EditorToolbar/size":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/size","caption":"{{$:/language/Buttons/Size/Caption}}","description":"{{$:/language/Buttons/Size/Hint}}","condition":"[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]","dropdown":"$:/core/ui/EditorToolbar/size-dropdown","text":""},"$:/core/ui/EditorToolbar/stamp-dropdown":{"text":"\\define toolbar-button-stamp-inner()\n<$button tag=\"a\">\n\n<$list filter=\"[[$(snippetTitle)$]addsuffix[/prefix]is[missing]removesuffix[/prefix]addsuffix[/suffix]is[missing]]\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext={{$(snippetTitle)$}}\n/>\n\n</$list>\n\n\n<$list filter=\"[[$(snippetTitle)$]addsuffix[/prefix]is[missing]removesuffix[/prefix]addsuffix[/suffix]!is[missing]] [[$(snippetTitle)$]addsuffix[/prefix]!is[missing]removesuffix[/prefix]addsuffix[/suffix]is[missing]] [[$(snippetTitle)$]addsuffix[/prefix]!is[missing]removesuffix[/prefix]addsuffix[/suffix]!is[missing]]\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix={{{ [[$(snippetTitle)$]addsuffix[/prefix]get[text]] }}}\nsuffix={{{ [[$(snippetTitle)$]addsuffix[/suffix]get[text]] }}}\n/>\n\n</$list>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$transclude tiddler=<<snippetTitle>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<snippetTitle>> field=\"title\" />\n\n</$transclude>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TextEditor/Snippet]!has[draft.of]sort[caption]]\" variable=\"snippetTitle\">\n\n<<toolbar-button-stamp-inner>>\n\n</$list>\n\n----\n\n<$button tag=\"a\">\n\n<$action-sendmessage\n\t$message=\"tm-new-tiddler\"\n\ttags=\"$:/tags/TextEditor/Snippet\"\n\tcaption={{$:/language/Buttons/Stamp/New/Title}}\n\ttext={{$:/language/Buttons/Stamp/New/Text}}\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<em>\n\n<$text text={{$:/language/Buttons/Stamp/Caption/New}}/>\n\n</em>\n\n</$button>\n"},"$:/core/ui/EditorToolbar/stamp":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/stamp","caption":"{{$:/language/Buttons/Stamp/Caption}}","description":"{{$:/language/Buttons/Stamp/Hint}}","condition":"[<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/]] [<targetTiddler>get[type]match[application/javascript]] [<targetTiddler>get[type]match[application/json]] [<targetTiddler>get[type]match[application/x-tiddler-dictionary]] [<targetTiddler>get[type]match[image/svg+xml]] +[first[]]","shortcuts":"((stamp))","dropdown":"$:/core/ui/EditorToolbar/stamp-dropdown","text":""},"$:/core/ui/EditorToolbar/strikethrough":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/strikethrough","caption":"{{$:/language/Buttons/Strikethrough/Caption}}","description":"{{$:/language/Buttons/Strikethrough/Hint}}","condition":"[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]","shortcuts":"((strikethrough))","text":"<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"~~\"\n\tsuffix=\"~~\"\n/>\n"},"$:/core/ui/EditorToolbar/subscript":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/subscript","caption":"{{$:/language/Buttons/Subscript/Caption}}","description":"{{$:/language/Buttons/Subscript/Hint}}","condition":"[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]","shortcuts":"((subscript))","text":"<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\",,\"\n\tsuffix=\",,\"\n/>\n"},"$:/core/ui/EditorToolbar/superscript":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/superscript","caption":"{{$:/language/Buttons/Superscript/Caption}}","description":"{{$:/language/Buttons/Superscript/Hint}}","condition":"[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]","shortcuts":"((superscript))","text":"<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"^^\"\n\tsuffix=\"^^\"\n/>\n"},"$:/core/ui/EditorToolbar/transcludify":{"caption":"{{$:/language/Buttons/Transcludify/Caption}}","condition":"[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]","description":"{{$:/language/Buttons/Transcludify/Hint}}","icon":"$:/core/images/transcludify","list-before":"$:/core/ui/EditorToolbar/mono-block","shortcuts":"((transcludify))","tags":"$:/tags/EditorToolbar","text":"<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"{{\"\n\tsuffix=\"}}\"\n/>\n"},"$:/core/ui/EditorToolbar/underline":{"tags":"$:/tags/EditorToolbar","icon":"$:/core/images/underline","caption":"{{$:/language/Buttons/Underline/Caption}}","description":"{{$:/language/Buttons/Underline/Hint}}","condition":"[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]","shortcuts":"((underline))","text":"<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"__\"\n\tsuffix=\"__\"\n/>\n"},"$:/core/Filters/AllTags":{"tags":"$:/tags/Filter","filter":"[tags[]!is[system]sort[title]]","description":"{{$:/language/Filters/AllTags}}","text":""},"$:/core/Filters/AllTiddlers":{"tags":"$:/tags/Filter","filter":"[!is[system]sort[title]]","description":"{{$:/language/Filters/AllTiddlers}}","text":""},"$:/core/Filters/Drafts":{"tags":"$:/tags/Filter","filter":"[has[draft.of]sort[title]]","description":"{{$:/language/Filters/Drafts}}","text":""},"$:/core/Filters/Missing":{"tags":"$:/tags/Filter","filter":"[all[missing]sort[title]]","description":"{{$:/language/Filters/Missing}}","text":""},"$:/core/Filters/Orphans":{"tags":"$:/tags/Filter","filter":"[all[orphans]sort[title]]","description":"{{$:/language/Filters/Orphans}}","text":""},"$:/core/Filters/OverriddenShadowTiddlers":{"tags":"$:/tags/Filter","filter":"[is[shadow]]","description":"{{$:/language/Filters/OverriddenShadowTiddlers}}","text":""},"$:/core/Filters/RecentSystemTiddlers":{"tags":"$:/tags/Filter","filter":"[has[modified]!sort[modified]limit[50]]","description":"{{$:/language/Filters/RecentSystemTiddlers}}","text":""},"$:/core/Filters/RecentTiddlers":{"tags":"$:/tags/Filter","filter":"[!is[system]has[modified]!sort[modified]limit[50]]","description":"{{$:/language/Filters/RecentTiddlers}}","text":""},"$:/core/Filters/SessionTiddlers":{"tags":"$:/tags/Filter","filter":"[haschanged[]]","description":"{{$:/language/Filters/SessionTiddlers}}","text":""},"$:/core/Filters/ShadowTiddlers":{"tags":"$:/tags/Filter","filter":"[all[shadows]sort[title]]","description":"{{$:/language/Filters/ShadowTiddlers}}","text":""},"$:/core/Filters/StoryList":{"tags":"$:/tags/Filter","filter":"[list[$:/StoryList]] -$:/AdvancedSearch","description":"{{$:/language/Filters/StoryList}}","text":""},"$:/core/Filters/SystemTags":{"tags":"$:/tags/Filter","filter":"[all[shadows+tiddlers]tags[]is[system]sort[title]]","description":"{{$:/language/Filters/SystemTags}}","text":""},"$:/core/Filters/SystemTiddlers":{"tags":"$:/tags/Filter","filter":"[is[system]sort[title]]","description":"{{$:/language/Filters/SystemTiddlers}}","text":""},"$:/core/Filters/TypedTiddlers":{"tags":"$:/tags/Filter","filter":"[!is[system]has[type]each[type]sort[type]] -[type[text/vnd.tiddlywiki]]","description":"{{$:/language/Filters/TypedTiddlers}}","text":""},"$:/core/ui/ImportListing":{"text":"\\define lingo-base() $:/language/Import/\n\n\\define messageField() message-$(payloadTiddler)$\n\n\\define payloadTitleFilter() [<currentTiddler>get<renameField>minlength[1]else<payloadTiddler>]\n\n\\define overWriteWarning()\n<$list filter=\"[<currentTiddler>!has<suppressedField>]\">\n<$text text={{{[subfilter<payloadTitleFilter>!is[tiddler]then[]] ~[<lingo-base>addsuffix[Listing/Rename/OverwriteWarning]get[text]]}}}/>\n</$list>\n\\end\n\n\\define selectionField() selection-$(payloadTiddler)$\n\n\\define renameField() rename-$(payloadTiddler)$\n\n\\define suppressedField() suppressed-$(payloadTiddler)$\n\n\\define newImportTitleTiddler() $:/temp/NewImportTitle-$(payloadTiddler)$\n\n\\define previewPopupState() $(currentTiddler)$!!popup-$(payloadTiddler)$\n\n\\define renameFieldState() $(currentTiddler)$!!state-rename-$(payloadTiddler)$\n\n\\define select-all-actions()\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<$action-setfield $field={{{ [<payloadTiddler>addprefix[selection-]] }}} $value={{$:/state/import/select-all}}/>\n</$list>\n\\end\n\n<table class=\"tc-import-table\">\n<tbody>\n<tr>\n<th align=\"left\">\n<$checkbox tiddler=\"$:/state/import/select-all\" field=\"text\" checked=\"checked\" unchecked=\"unchecked\" default=\"checked\" actions=<<select-all-actions>>>\n<<lingo Listing/Select/Caption>>\n</$checkbox>\n</th>\n<th>\n<<lingo Listing/Title/Caption>>\n</th>\n<th>\n<<lingo Listing/Status/Caption>>\n</th>\n</tr>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<tr class={{{[<currentTiddler>has<suppressedField>then[tc-row-disabled]] ~[subfilter<payloadTitleFilter>is[tiddler]then[tc-row-warning]] }}}>\n<td>\n<$checkbox field=<<selectionField>> checked=\"checked\" unchecked=\"unchecked\" default=\"checked\" disabled={{{[<currentTiddler>has<suppressedField>then[yes]else[no]]}}}/>\n</td>\n<td>\n<$reveal type=\"nomatch\" state=<<renameFieldState>> text=\"yes\" tag=\"div\">\n<$reveal type=\"nomatch\" state=<<previewPopupState>> text=\"yes\" tag=\"div\" class=\"tc-flex\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown tc-flex-grow-1 tc-word-break\" set=<<previewPopupState>> setTo=\"yes\" disabled={{{[<currentTiddler>has<suppressedField>then[yes]else[no]]}}}>\n<span class=\"tc-small-gap-right\">{{$:/core/images/right-arrow}}</span><$text text={{{[subfilter<payloadTitleFilter>]}}}/>\n</$button>\n<$list filter=\"[<currentTiddler>!has<suppressedField>]\"><$button class=\"tc-btn-invisible\" set=<<renameFieldState>> setTo=\"yes\" tooltip={{{[<lingo-base>addsuffix[Listing/Rename/Tooltip]get[text]]}}}>{{$:/core/images/edit-button}}</$button></$list>\n</$reveal>\n<$reveal type=\"match\" state=<<previewPopupState>> text=\"yes\" tag=\"div\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<previewPopupState>> setTo=\"no\">\n<span class=\"tc-small-gap-right\">{{$:/core/images/down-arrow}}</span><$text text={{{[subfilter<payloadTitleFilter>]}}}/>\n</$button>\n</$reveal>\n</$reveal>\n<$reveal type=\"match\" state=<<renameFieldState>> text=\"yes\" tag=\"div\">\n<$text text={{{[<lingo-base>addsuffix[Listing/Rename/Prompt]get[text]]}}}/>\n</$reveal>\n</td>\n<td>\n<$view field=<<messageField>>/>\n<<overWriteWarning>>\n</td>\n</tr>\n<$reveal type=\"match\" state=<<renameFieldState>> text=\"yes\" tag=\"tr\">\n<td colspan=\"3\">\n<div class=\"tc-flex\">\n<$edit-text tiddler=<<newImportTitleTiddler>> default={{{[subfilter<payloadTitleFilter>]}}} tag=\"input\" class=\"tc-import-rename tc-flex-grow-1\"/><span class=\"tc-small-gap-left\"><$button class=\"tc-btn-invisible\" set=<<renameFieldState>> setTo=\"no\" tooltip={{{[<lingo-base>addsuffix[Listing/Rename/CancelRename]get[text]]}}}>{{$:/core/images/close-button}}<$action-deletetiddler $tiddler=<<newImportTitleTiddler>>/></$button><span class=\"tc-small-gap-right\"/></span><$button class=\"tc-btn-invisible\" set=<<renameFieldState>> setTo=\"no\" tooltip={{{[<lingo-base>addsuffix[Listing/Rename/ConfirmRename]get[text]]}}}>{{$:/core/images/done-button}}<$action-setfield $field=<<renameField>> $value={{{[<newImportTitleTiddler>get[text]minlength[1]else<payloadTiddler>]}}} /><$action-deletetiddler $tiddler=<<newImportTitleTiddler>>/></$button>\n</div>\n</td>\n</$reveal>\n<tr>\n<td colspan=\"3\">\n<$reveal type=\"match\" text=\"yes\" state=<<previewPopupState>> tag=\"div\">\n<$list filter=\"[{$:/state/importpreviewtype}has[text]]\" variable=\"listItem\" emptyMessage={{$:/core/ui/ImportPreviews/Text}}>\n<$transclude tiddler={{$:/state/importpreviewtype}}/>\n</$list>\n</$reveal>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"},"$:/core/ui/ImportPreviews/Diff":{"tags":"$:/tags/ImportPreview","caption":"{{$:/language/Import/Listing/Preview/Diff}}","text":"<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>>/>\n"},"$:/core/ui/ImportPreviews/DiffFields":{"tags":"$:/tags/ImportPreview","caption":"{{$:/language/Import/Listing/Preview/DiffFields}}","text":"<$macrocall $name=\"compareTiddlers\" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>> exclude=\"text\"/>\n"},"$:/core/ui/ImportPreviews/Fields":{"tags":"$:/tags/ImportPreview","caption":"{{$:/language/Import/Listing/Preview/Fields}}","text":"<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[<payloadTiddler>subtiddlerfields<currentTiddler>sort[]] -text\" variable=\"fieldName\">\n<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<fieldName>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<fieldName>> tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>>/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"},"$:/core/ui/ImportPreviews/Text":{"tags":"$:/tags/ImportPreview","caption":"{{$:/language/Import/Listing/Preview/Text}}","text":"<$transclude tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>> mode=\"block\"/>\n"},"$:/core/ui/ImportPreviews/TextRaw":{"tags":"$:/tags/ImportPreview","caption":"{{$:/language/Import/Listing/Preview/TextRaw}}","text":"<pre><code><$view tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>> /></code></pre>"},"$:/core/ui/KeyboardShortcuts/advanced-search":{"tags":"$:/tags/KeyboardShortcut","key":"((advanced-search))","text":"<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\"[data-tiddler-title=\"$:/AdvancedSearch\"] .tc-search input\"\"\" preventScroll=\"true\"/>\n</$navigator>\n"},"$:/core/ui/KeyboardShortcuts/change-sidebar-layout":{"tags":"$:/tags/KeyboardShortcut","key":"((change-sidebar-layout))","text":"<$list filter=\"[{$:/themes/tiddlywiki/vanilla/options/sidebarlayout}match[fixed-fluid]]\" \nemptyMessage=\"\"\"<$action-setfield $tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" text=\"fixed-fluid\"/>\"\"\">\n<$action-setfield $tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" text=\"fluid-fixed\"/>\n</$list>\n"},"$:/core/ui/KeyboardShortcuts/new-image":{"tags":"$:/tags/KeyboardShortcut","key":"((new-image))","text":"<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-image}}\n</$navigator>\n"},"$:/core/ui/KeyboardShortcuts/new-journal":{"tags":"$:/tags/KeyboardShortcut","key":"((new-journal))","text":"<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-journal}}\n</$navigator>\n"},"$:/core/ui/KeyboardShortcuts/new-tiddler":{"tags":"$:/tags/KeyboardShortcut","key":"((new-tiddler))","text":"<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-tiddler}}\n</$navigator>\n"},"$:/core/ui/KeyboardShortcuts/save-wiki":{"tags":"$:/tags/KeyboardShortcut","key":"((save-wiki))","text":"<$wikify name=\"site-title\" text={{$:/config/SaveWikiButton/Filename}}>\n<$action-sendmessage $message=\"tm-save-wiki\" $param={{$:/config/SaveWikiButton/Template}} filename=<<site-title>>/>\n</$wikify>\n"},"$:/core/ui/KeyboardShortcuts/sidebar-search":{"tags":"$:/tags/KeyboardShortcut","key":"((sidebar-search))","text":"<$action-sendmessage $message=\"tm-focus-selector\" $param=\".tc-search input\"/>\n"},"$:/core/ui/KeyboardShortcuts/switcher":{"tags":"$:/tags/KeyboardShortcut","key":"((layout-switcher))","text":"<$action-sendmessage $message=\"tm-show-switcher\" switch=\"layout\"/>"},"$:/core/ui/KeyboardShortcuts/toggle-sidebar":{"tags":"$:/tags/KeyboardShortcut","key":"((toggle-sidebar))","text":"<$list filter=\"[[$:/state/sidebar]is[missing]] [{$:/state/sidebar}removeprefix[yes]]\" emptyMessage=\"\"\"\n<$action-setfield $tiddler=\"$:/state/sidebar\" text=\"yes\"/>\n\"\"\">\n<$action-setfield $tiddler=\"$:/state/sidebar\" text=\"no\"/>\n</$list>\n"},"$:/snippets/LayoutSwitcher":{"tags":"$:/tags/ControlPanel/Appearance","caption":"{{$:/language/ControlPanel/LayoutSwitcher/Caption}}","text":"<$linkcatcher to=\"$:/layout\">\n<div class=\"tc-chooser\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/Layout]] [[$:/core/ui/PageTemplate]] +[!is[draft]sort[name]]\">\n<$list filter=\"[{$:/layout}!has[text]]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$set name=\"cls\" filter=\"[all[current]field:title{$:/layout}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$transclude field=\"name\"/>'' - <$transclude field=\"description\"/></$link></div>\n</$set>\n\"\"\">\n<$set name=\"cls\" filter=\"[all[current]field:title[$:/core/ui/PageTemplate]]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$transclude field=\"name\"/>'' - <$transclude field=\"description\"/></$link></div>\n</$set>\n</$list>\n</$list>\n</div>\n</$linkcatcher>\n"},"$:/core/ui/ListItemTemplate":{"text":"<div class=\"tc-menu-list-item\">\n<$link />\n</div>"},"$:/Manager/ItemMain/Fields":{"tags":"$:/tags/Manager/ItemMain","caption":"{{$:/language/Manager/Item/Fields}}","text":"<table>\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"},"$:/Manager/ItemMain/RawText":{"tags":"$:/tags/Manager/ItemMain","caption":"{{$:/language/Manager/Item/RawText}}","text":"<pre><code><$view/></code></pre>\n"},"$:/Manager/ItemMain/WikifiedText":{"tags":"$:/tags/Manager/ItemMain","caption":"{{$:/language/Manager/Item/WikifiedText}}","text":"<$transclude mode=\"block\"/>\n"},"$:/Manager/ItemSidebar/Colour":{"tags":"$:/tags/Manager/ItemSidebar","caption":"{{$:/language/Manager/Item/Colour}}","text":"\\define swatch-styles()\nheight: 1em;\nbackground-color: $(colour)$\n\\end\n\n<$vars colour={{!!color}}>\n<p style=<<swatch-styles>>/>\n</$vars>\n<p>\n<$edit-text field=\"color\" tag=\"input\" type=\"color\"/> / <$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/>\n</p>\n"},"$:/Manager/ItemSidebar/Icon":{"tags":"$:/tags/Manager/ItemSidebar","caption":"{{$:/language/Manager/Item/Icon}}","text":"<p>\n<div class=\"tc-manager-icon-editor\">\n<$button popup=<<qualify \"$:/state/popup/image-picker\">> class=\"tc-btn-invisible\">\n<$transclude tiddler={{!!icon}}>\n{{$:/language/Manager/Item/Icon/None}}\n</$transclude>\n</$button>\n<div class=\"tc-block-dropdown-wrapper\" style=\"position: static;\">\n<$reveal state=<<qualify \"$:/state/popup/image-picker\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-popup\">\n<div class=\"tc-block-dropdown tc-popup-keep\" style=\"width: 80%; left: 10%; right: 10%; padding: 0.5em;\">\n<$macrocall $name=\"image-picker-include-tagged-images\" actions=\"\"\"\n<$action-setfield $field=\"icon\" $value=<<imageTitle>>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/image-picker\">>/>\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n</div>\n</p>\n"},"$:/Manager/ItemSidebar/Tags":{"tags":"$:/tags/Manager/ItemSidebar","caption":"{{$:/language/Manager/Item/Tags}}","text":"\\whitespace trim\n\\define tag-checkbox-actions()\n<$action-listops\n\t$tiddler=\"$:/config/Manager/RecentTags\"\n\t$subfilter=\"[<tag>] [list[$:/config/Manager/RecentTags]] +[limit[12]]\"\n/>\n\\end\n\n\\define tag-picker-actions()\n<<tag-checkbox-actions>>\n\\end\n\n<p>\n<$list filter=\"[all[current]tags[]] [list[$:/config/Manager/RecentTags]] +[sort[title]] \" variable=\"tag\" storyview=\"pop\">\n<div>\n<$checkbox tiddler=<<currentTiddler>> tag=<<tag>> actions=<<tag-checkbox-actions>>>\n<$macrocall $name=\"tag-pill\" tag=<<tag>>/>\n</$checkbox>\n</div>\n</$list>\n</p>\n<p>\n<$fieldmangler>\n<$macrocall $name=\"tag-picker\" actions=<<tag-picker-actions>>/>\n</$fieldmangler>\n</p>\n"},"$:/Manager/ItemSidebar/Tools":{"tags":"$:/tags/Manager/ItemSidebar","caption":"{{$:/language/Manager/Item/Tools}}","text":"<p>\n<$button to=<<currentTiddler>>>{{$:/core/images/link}} open</$button>\n</p>\n<p>\n<$button message=\"tm-edit-tiddler\" param=<<currentTiddler>>>{{$:/core/images/edit-button}} edit</$button>\n</p>\n"},"$:/Manager":{"icon":"$:/core/images/list","color":"#bbb","text":"\\define lingo-base() $:/language/Manager/\n\n\\define list-item-content-item()\n<div class=\"tc-manager-list-item-content-item\">\n\t<$vars state-title=\"\"\"$:/state/popup/manager/item/$(listItem)$\"\"\">\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"hide\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/down-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"nomatch\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"show\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/right-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\" class=\"tc-manager-list-item-content-item-body\">\n\t\t\t<$transclude tiddler=<<listItem>>/>\n\t\t</$reveal>\n\t</$vars>\n</div>\n\\end\n\n<div class=\"tc-manager-wrapper\">\n\t<div class=\"tc-manager-controls\">\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Show/Prompt>> <$select tiddler=\"$:/config/Manager/Show\" default=\"tiddlers\">\n\t\t\t\t<option value=\"tiddlers\"><<lingo Controls/Show/Option/Tiddlers>></option>\n\t\t\t\t<option value=\"tags\"><<lingo Controls/Show/Option/Tags>></option>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Search/Prompt>> <$edit-text tiddler=\"$:/config/Manager/Filter\" tag=\"input\" default=\"\" placeholder={{$:/language/Manager/Controls/Search/Placeholder}}/>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/FilterByTag/Prompt>> <$select tiddler=\"$:/config/Manager/Tag\" default=\"\">\n\t\t\t\t<option value=\"\"><<lingo Controls/FilterByTag/None>></option>\n\t\t\t\t<$list filter=\"[!is{$:/config/Manager/System}tags[]!is[system]sort[title]]\" variable=\"tag\">\n\t\t\t\t\t<option value=<<tag>>><$text text=<<tag>>/></option>\n\t\t\t\t</$list>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Sort/Prompt>> <$select tiddler=\"$:/config/Manager/Sort\" default=\"title\">\n\t\t\t\t<optgroup label=\"Common\">\n\t\t\t\t\t<$list filter=\"title modified modifier created creator created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t\t<optgroup label=\"All\">\n\t\t\t\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}fields[]sort[title]] -title -modified -modifier -created -creator -created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t</$select>\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/Order\" field=\"text\" checked=\"reverse\" unchecked=\"forward\" default=\"forward\">\n\t\t\t\t<<lingo Controls/Order/Prompt>>\n\t\t\t</$checkbox>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/System\" field=\"text\" checked=\"\" unchecked=\"system\" default=\"system\">\n\t\t\t\t{{$:/language/SystemTiddlers/Include/Prompt}}\n\t\t\t</$checkbox>\n\t\t</div>\n\t</div>\n\t<div class=\"tc-manager-list\">\n\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/Tag}sort{$:/config/Manager/Sort}order{$:/config/Manager/Order}]\">\n\t\t\t<$vars transclusion=<<currentTiddler>>>\n\t\t\t\t<div style=\"tc-manager-list-item\">\n\t\t\t\t\t<$button popup=<<qualify \"$:/state/manager/popup\">> class=\"tc-btn-invisible tc-manager-list-item-heading\" selectedClass=\"tc-manager-list-item-heading-selected\">\n\t\t\t\t\t\t<$text text=<<currentTiddler>>/>\n\t\t\t\t\t</$button>\n\t\t\t\t\t<$reveal state=<<qualify \"$:/state/manager/popup\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-manager-list-item-content tc-popup-handle\">\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-tiddler\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemMain]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-sidebar\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemSidebar]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</$reveal>\n\t\t\t\t</div>\n\t\t\t</$vars>\n\t\t</$list>\n\t</div>\n</div>\n"},"$:/core/ui/MissingTemplate":{"text":"<div class=\"tc-tiddler-missing\">\n<$button popup=<<qualify \"$:/state/popup/missing\">> class=\"tc-btn-invisible tc-missing-tiddler-label\">\n<$view field=\"title\" format=\"text\" />\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/missing\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n<hr>\n<$list filter=\"[all[current]backlinks[]sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n</div>\n"},"$:/core/ui/MoreSideBar/All":{"tags":"$:/tags/MoreSideBar","caption":"{{$:/language/SideBar/All/Caption}}","text":"<$list filter={{$:/core/Filters/AllTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"},"$:/core/ui/MoreSideBar/Drafts":{"tags":"$:/tags/MoreSideBar","caption":"{{$:/language/SideBar/Drafts/Caption}}","text":"<$list filter={{$:/core/Filters/Drafts!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"},"$:/core/ui/MoreSideBar/Explorer":{"tags":"$:/tags/MoreSideBar","caption":"{{$:/language/SideBar/Explorer/Caption}}","text":"<<tree \"$:/\">>\n"},"$:/core/ui/MoreSideBar/Missing":{"tags":"$:/tags/MoreSideBar","caption":"{{$:/language/SideBar/Missing/Caption}}","text":"<$list filter={{$:/core/Filters/Missing!!filter}} template=\"$:/core/ui/MissingTemplate\"/>\n"},"$:/core/ui/MoreSideBar/Orphans":{"tags":"$:/tags/MoreSideBar","caption":"{{$:/language/SideBar/Orphans/Caption}}","text":"<$list filter={{$:/core/Filters/Orphans!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"},"$:/core/ui/MoreSideBar/Plugins":{"tags":"$:/tags/MoreSideBar","caption":"{{$:/language/ControlPanel/Plugins/Caption}}","text":"\n{{$:/language/ControlPanel/Plugins/Installed/Hint}}\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar/Plugins]!has[draft.of]]\" default=\"$:/core/ui/MoreSideBar/Plugins/Plugins\" explicitState=\"$:/state/tab-1163638994\"/>\n"},"$:/core/ui/MoreSideBar/Recent":{"tags":"$:/tags/MoreSideBar","caption":"{{$:/language/SideBar/Recent/Caption}}","text":"<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"},"$:/core/ui/MoreSideBar/Shadows":{"tags":"$:/tags/MoreSideBar","caption":"{{$:/language/SideBar/Shadows/Caption}}","text":"<$list filter={{$:/core/Filters/ShadowTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"},"$:/core/ui/MoreSideBar/System":{"tags":"$:/tags/MoreSideBar","caption":"{{$:/language/SideBar/System/Caption}}","text":"<$list filter={{$:/core/Filters/SystemTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"},"$:/core/ui/MoreSideBar/Tags":{"tags":"$:/tags/MoreSideBar","caption":"{{$:/language/SideBar/Tags/Caption}}","text":"<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n{{$:/core/ui/Buttons/tag-manager}}\n\n</$set>\n\n</$set>\n\n</$set>\n\n<$list filter={{$:/core/Filters/AllTags!!filter}}>\n\n<$transclude tiddler=\"$:/core/ui/TagTemplate\"/>\n\n</$list>\n\n<hr class=\"tc-untagged-separator\">\n\n{{$:/core/ui/UntaggedTemplate}}\n"},"$:/core/ui/MoreSideBar/Types":{"tags":"$:/tags/MoreSideBar","caption":"{{$:/language/SideBar/Types/Caption}}","text":"<$list filter={{$:/core/Filters/TypedTiddlers!!filter}}>\n<div class=\"tc-menu-list-item\">\n<$view field=\"type\"/>\n<$list filter=\"[type{!!type}!is[system]sort[title]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}><$view field=\"title\"/></$link>\n</div>\n</$list>\n</div>\n</$list>\n"},"$:/core/ui/MoreSideBar/Plugins/Languages":{"tags":"$:/tags/MoreSideBar/Plugins","caption":"{{$:/language/ControlPanel/Plugins/Languages/Caption}}","text":"<$list filter=\"[!has[draft.of]plugin-type[language]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"},"$:/core/ui/MoreSideBar/Plugins/Plugins":{"tags":"$:/tags/MoreSideBar/Plugins","caption":"{{$:/language/ControlPanel/Plugins/Plugins/Caption}}","text":"<$list filter=\"[!has[draft.of]plugin-type[plugin]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}>>/>\n"},"$:/core/ui/MoreSideBar/Plugins/Theme":{"tags":"$:/tags/MoreSideBar/Plugins","caption":"{{$:/language/ControlPanel/Plugins/Themes/Caption}}","text":"<$list filter=\"[!has[draft.of]plugin-type[theme]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"},"$:/core/ui/Buttons/advanced-search":{"tags":"$:/tags/PageControls","caption":"{{$:/core/images/advanced-search-button}} {{$:/language/Buttons/AdvancedSearch/Caption}}","description":"{{$:/language/Buttons/AdvancedSearch/Hint}}","text":"\\whitespace trim\n\\define advanced-search-button(class)\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/advanced-search-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/AdvancedSearch/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/AdvancedSearch]]\" emptyMessage=<<advanced-search-button>>>\n<<advanced-search-button \"tc-selected\">>\n</$list>\n"},"$:/core/ui/Buttons/close-all":{"tags":"$:/tags/PageControls","caption":"{{$:/core/images/close-all-button}} {{$:/language/Buttons/CloseAll/Caption}}","description":"{{$:/language/Buttons/CloseAll/Hint}}","text":"<$button message=\"tm-close-all-tiddlers\" tooltip={{$:/language/Buttons/CloseAll/Hint}} aria-label={{$:/language/Buttons/CloseAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/CloseAll/Caption}}/></span>\n</$list>\n</$button>"},"$:/core/ui/Buttons/control-panel":{"tags":"$:/tags/PageControls","caption":"{{$:/core/images/options-button}} {{$:/language/Buttons/ControlPanel/Caption}}","description":"{{$:/language/Buttons/ControlPanel/Hint}}","text":"\\whitespace trim\n\\define control-panel-button(class)\n<$button to=\"$:/ControlPanel\" tooltip={{$:/language/Buttons/ControlPanel/Hint}} aria-label={{$:/language/Buttons/ControlPanel/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/options-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/ControlPanel/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/ControlPanel]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"},"$:/core/ui/Buttons/encryption":{"tags":"$:/tags/PageControls","caption":"{{$:/core/images/locked-padlock}} {{$:/language/Buttons/Encryption/Caption}}","description":"{{$:/language/Buttons/Encryption/Hint}}","text":"\\whitespace trim\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-clear-password\" tooltip={{$:/language/Buttons/Encryption/ClearPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/ClearPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/locked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/ClearPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-set-password\" tooltip={{$:/language/Buttons/Encryption/SetPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/SetPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/unlocked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/SetPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n"},"$:/core/ui/Buttons/export-page":{"tags":"$:/tags/PageControls","caption":"{{$:/core/images/export-button}} {{$:/language/Buttons/ExportPage/Caption}}","description":"{{$:/language/Buttons/ExportPage/Hint}}","text":"<$macrocall $name=\"exportButton\" exportFilter=\"[!is[system]sort[title]]\" lingoBase=\"$:/language/Buttons/ExportPage/\"/>"},"$:/core/ui/Buttons/fold-all":{"tags":"$:/tags/PageControls","caption":"{{$:/core/images/fold-all-button}} {{$:/language/Buttons/FoldAll/Caption}}","description":"{{$:/language/Buttons/FoldAll/Hint}}","text":"<$button tooltip={{$:/language/Buttons/FoldAll/Hint}} aria-label={{$:/language/Buttons/FoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FoldAll/Caption}}/></span>\n</$list>\n</$button>"},"$:/core/ui/Buttons/full-screen":{"tags":"$:/tags/PageControls","caption":"{{$:/core/images/full-screen-button}} {{$:/language/Buttons/FullScreen/Caption}}","description":"{{$:/language/Buttons/FullScreen/Hint}}","text":"<$button message=\"tm-full-screen\" tooltip={{$:/language/Buttons/FullScreen/Hint}} aria-label={{$:/language/Buttons/FullScreen/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/full-screen-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FullScreen/Caption}}/></span>\n</$list>\n</$button>"},"$:/core/ui/Buttons/home":{"tags":"$:/tags/PageControls","caption":"{{$:/core/images/home-button}} {{$:/language/Buttons/Home/Caption}}","description":"{{$:/language/Buttons/Home/Hint}}","text":"<$button message=\"tm-home\" tooltip={{$:/language/Buttons/Home/Hint}} aria-label={{$:/language/Buttons/Home/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/home-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Home/Caption}}/></span>\n</$list>\n</$button>"},"$:/core/ui/Buttons/import":{"tags":"$:/tags/PageControls","caption":"{{$:/core/images/import-button}} {{$:/language/Buttons/Import/Caption}}","description":"{{$:/language/Buttons/Import/Hint}}","text":"<div class=\"tc-file-input-wrapper\">\n<$button tooltip={{$:/language/Buttons/Import/Hint}} aria-label={{$:/language/Buttons/Import/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/import-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Import/Caption}}/></span>\n</$list>\n</$button>\n<$browse tooltip={{$:/language/Buttons/Import/Hint}}/>\n</div>"},"$:/core/ui/Buttons/language":{"tags":"$:/tags/PageControls","caption":"{{$:/core/images/globe}} {{$:/language/Buttons/Language/Caption}}","description":"{{$:/language/Buttons/Language/Hint}}","text":"\\whitespace trim\n\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/language\">> tooltip={{$:/language/Buttons/Language/Hint}} aria-label={{$:/language/Buttons/Language/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value={{$:/language}}>\n<$image source=<<flag-title>>/>\n</$set>\n</span>\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Language/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/language\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n{{$:/snippets/languageswitcher}}\n</div>\n</$reveal>\n"},"$:/core/ui/Buttons/manager":{"tags":"$:/tags/PageControls","caption":"{{$:/core/images/list}} {{$:/language/Buttons/Manager/Caption}}","description":"{{$:/language/Buttons/Manager/Hint}}","text":"\\whitespace trim\n\\define manager-button(class)\n<$button to=\"$:/Manager\" tooltip={{$:/language/Buttons/Manager/Hint}} aria-label={{$:/language/Buttons/Manager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/list}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Manager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/Manager]]\" emptyMessage=<<manager-button>>>\n<<manager-button \"tc-selected\">>\n</$list>\n"},"$:/core/ui/Buttons/more-page-actions":{"tags":"$:/tags/PageControls","caption":"{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}","description":"{{$:/language/Buttons/More/Hint}}","text":"\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/More/Caption}}/></span>\n</$list>\n</$button><$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"below\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]] -[[$:/core/ui/Buttons/more-page-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$set>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"},"$:/core/ui/Buttons/new-image":{"tags":"$:/tags/PageControls","caption":"{{$:/core/images/new-image-button}} {{$:/language/Buttons/NewImage/Caption}}","description":"{{$:/language/Buttons/NewImage/Hint}}","text":"\\whitespace trim\n<$button tooltip={{$:/language/Buttons/NewImage/Hint}} aria-label={{$:/language/Buttons/NewImage/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-image}}>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-image-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewImage/Caption}}/></span>\n</$list>\n</$button>\n"},"$:/core/ui/Buttons/new-journal":{"tags":"$:/tags/PageControls","caption":"{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournal/Caption}}","description":"{{$:/language/Buttons/NewJournal/Hint}}","text":"\\whitespace trim\n\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournal/Hint}} aria-label={{$:/language/Buttons/NewJournal/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-journal}}>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewJournal/Caption}}/></span>\n</$list>\n</$button>\n\\end\n<<journalButton>>\n"},"$:/core/ui/Buttons/new-tiddler":{"tags":"$:/tags/PageControls","caption":"{{$:/core/images/new-button}} {{$:/language/Buttons/NewTiddler/Caption}}","description":"{{$:/language/Buttons/NewTiddler/Hint}}","text":"\\whitespace trim\n<$button actions={{$:/core/ui/Actions/new-tiddler}} tooltip={{$:/language/Buttons/NewTiddler/Hint}} aria-label={{$:/language/Buttons/NewTiddler/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewTiddler/Caption}}/></span>\n</$list>\n</$button>\n"},"$:/core/ui/Buttons/palette":{"tags":"$:/tags/PageControls","caption":"{{$:/core/images/palette}} {{$:/language/Buttons/Palette/Caption}}","description":"{{$:/language/Buttons/Palette/Hint}}","text":"\\whitespace trim\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/palette\">> tooltip={{$:/language/Buttons/Palette/Hint}} aria-label={{$:/language/Buttons/Palette/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/palette}}\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Palette/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/palette\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\" style=\"font-size:0.7em;\">\n{{$:/snippets/paletteswitcher}}\n</div>\n</$reveal>\n"},"$:/core/ui/Buttons/print":{"tags":"$:/tags/PageControls","caption":"{{$:/core/images/print-button}} {{$:/language/Buttons/Print/Caption}}","description":"{{$:/language/Buttons/Print/Hint}}","text":"<$button message=\"tm-print\" tooltip={{$:/language/Buttons/Print/Hint}} aria-label={{$:/language/Buttons/Print/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/print-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Print/Caption}}/></span>\n</$list>\n</$button>"},"$:/core/ui/Buttons/refresh":{"tags":"$:/tags/PageControls","caption":"{{$:/core/images/refresh-button}} {{$:/language/Buttons/Refresh/Caption}}","description":"{{$:/language/Buttons/Refresh/Hint}}","text":"<$button message=\"tm-browser-refresh\" tooltip={{$:/language/Buttons/Refresh/Hint}} aria-label={{$:/language/Buttons/Refresh/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/refresh-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Refresh/Caption}}/></span>\n</$list>\n</$button>"},"$:/core/ui/Buttons/save-wiki":{"tags":"$:/tags/PageControls","caption":"{{$:/core/images/save-button}} {{$:/language/Buttons/SaveWiki/Caption}}","description":"{{$:/language/Buttons/SaveWiki/Hint}}","text":"<$button tooltip={{$:/language/Buttons/SaveWiki/Hint}} aria-label={{$:/language/Buttons/SaveWiki/Caption}} class=<<tv-config-toolbar-class>>>\n<$wikify name=\"site-title\" text={{$:/config/SaveWikiButton/Filename}}>\n<$action-sendmessage $message=\"tm-save-wiki\" $param={{$:/config/SaveWikiButton/Template}} filename=<<site-title>>/>\n</$wikify>\n<span class=\"tc-dirty-indicator\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/save-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/SaveWiki/Caption}}/></span>\n</$list>\n</span>\n</$button>"},"$:/core/ui/Buttons/storyview":{"tags":"$:/tags/PageControls","caption":"{{$:/core/images/storyview-classic}} {{$:/language/Buttons/StoryView/Caption}}","description":"{{$:/language/Buttons/StoryView/Hint}}","text":"\\whitespace trim\n\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/storyview\">> tooltip={{$:/language/Buttons/StoryView/Hint}} aria-label={{$:/language/Buttons/StoryView/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n<$set name=\"storyview\" value={{$:/view}}>\n<$transclude tiddler=<<icon>>/>\n</$set>\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/StoryView/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/storyview\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n{{$:/snippets/viewswitcher}}\n</div>\n</$reveal>\n"},"$:/core/ui/Buttons/tag-manager":{"tags":"$:/tags/PageControls","caption":"{{$:/core/images/tag-button}} {{$:/language/Buttons/TagManager/Caption}}","description":"{{$:/language/Buttons/TagManager/Hint}}","text":"\\whitespace trim\n\\define control-panel-button(class)\n<$button to=\"$:/TagManager\" tooltip={{$:/language/Buttons/TagManager/Hint}} aria-label={{$:/language/Buttons/TagManager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/tag-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/TagManager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/TagManager]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"},"$:/core/ui/Buttons/theme":{"tags":"$:/tags/PageControls","caption":"{{$:/core/images/theme-button}} {{$:/language/Buttons/Theme/Caption}}","description":"{{$:/language/Buttons/Theme/Hint}}","text":"\\whitespace trim\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/theme\">> tooltip={{$:/language/Buttons/Theme/Hint}} aria-label={{$:/language/Buttons/Theme/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/theme-button}}\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Theme/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/theme\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$linkcatcher to=\"$:/theme\">\n{{$:/snippets/themeswitcher}}\n</$linkcatcher>\n</div>\n</$reveal>\n"},"$:/core/ui/Buttons/timestamp":{"tags":"$:/tags/PageControls","caption":"{{$:/core/images/timestamp-on}} {{$:/language/Buttons/Timestamp/Caption}}","description":"{{$:/language/Buttons/Timestamp/Hint}}","text":"\\whitespace trim\n<$reveal type=\"nomatch\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/On/Hint}} aria-label={{$:/language/Buttons/Timestamp/On/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"yes\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/timestamp-on}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/On/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/Off/Hint}} aria-label={{$:/language/Buttons/Timestamp/Off/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"no\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/timestamp-off}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/Off/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n"},"$:/core/ui/Buttons/unfold-all":{"tags":"$:/tags/PageControls","caption":"{{$:/core/images/unfold-all-button}} {{$:/language/Buttons/UnfoldAll/Caption}}","description":"{{$:/language/Buttons/UnfoldAll/Hint}}","text":"<$button tooltip={{$:/language/Buttons/UnfoldAll/Hint}} aria-label={{$:/language/Buttons/UnfoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-unfold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/UnfoldAll/Caption}}/></span>\n</$list>\n</$button>"},"$:/core/ui/PageTemplate/pagecontrols":{"text":"\\whitespace trim\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-page-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n<$set name=\"hidden\" value=<<config-title>>>\n<$list filter=\"[<hidden>!text[hide]]\" storyview=\"pop\" variable=\"ignore\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n</$set>\n</$list>\n</$set>\n</$list>\n</div>\n"},"$:/core/ui/PageStylesheet":{"text":"\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$set name=\"currentTiddler\" value={{$:/language}}>\n\n<$set name=\"languageTitle\" value={{!!name}}>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\n</$set>\n\n</$set>\n"},"$:/core/ui/PageTemplate/alerts":{"tags":"$:/tags/PageTemplate","text":"<div class=\"tc-alerts\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Alert]!has[draft.of]]\" template=\"$:/core/ui/AlertTemplate\" storyview=\"pop\"/>\n\n</div>\n"},"$:/core/ui/PageTemplate/drafts":{"tags":"$:/tags/PageTemplate","text":"\\whitespace trim\n<$reveal state=\"$:/status/IsReadOnly\" type=\"nomatch\" text=\"yes\" tag=\"div\" class=\"tc-drafts-list\">\n<$list filter=\"[has[draft.of]!sort[modified]] -[list[$:/StoryList]]\">\n<$link>\n{{$:/core/images/edit-button}} <$text text=<<currentTiddler>>/>\n</$link>\n</$list>\n</$reveal>\n"},"$:/core/ui/PageTemplate/pluginreloadwarning":{"tags":"$:/tags/PageTemplate","text":"\\define lingo-base() $:/language/\n\n<$list filter=\"[{$:/status/RequireReloadDueToPluginChange}match[yes]]\">\n\n<$reveal type=\"nomatch\" state=\"$:/temp/HidePluginWarning\" text=\"yes\">\n\n<div class=\"tc-plugin-reload-warning\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<<lingo PluginReloadWarning>> <$button set=\"$:/temp/HidePluginWarning\" setTo=\"yes\" class=\"tc-btn-invisible\">{{$:/core/images/close-button}}</$button>\n\n</$set>\n\n</div>\n\n</$reveal>\n\n</$list>\n"},"$:/core/ui/PageTemplate/sidebar":{"tags":"$:/tags/PageTemplate","text":"\\whitespace trim\n\\define config-title()\n$:/config/SideBarSegments/Visibility/$(listItem)$\n\\end\n\n<$scrollable fallthrough=\"no\" class=\"tc-sidebar-scrollable\">\n\n<div class=\"tc-sidebar-header\">\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBarSegment]!has[draft.of]]\" variable=\"listItem\">\n\n<$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\" tag=\"div\">\n\n<$transclude tiddler=<<listItem>> mode=\"block\"/>\n\n</$reveal>\n\n</$list>\n\n</$reveal>\n\n</div>\n\n</$scrollable>\n"},"$:/core/ui/PageTemplate/story":{"tags":"$:/tags/PageTemplate","text":"\\whitespace trim\n<section class=\"tc-story-river\">\n\n<section class=\"story-backdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AboveStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n<$list filter=\"[list[$:/StoryList]]\" history=\"$:/HistoryList\" template={{$:/config/ui/ViewTemplate}} editTemplate={{$:/config/ui/EditTemplate}} storyview={{$:/view}} emptyMessage={{$:/config/EmptyStoryMessage}}/>\n\n<section class=\"story-frontdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/BelowStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n</section>\n"},"$:/core/ui/PageTemplate/topleftbar":{"tags":"$:/tags/PageTemplate","text":"<span class=\"tc-topbar tc-topbar-left\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopLeftBar]!has[draft.of]]\" variable=\"listItem\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"},"$:/core/ui/PageTemplate/toprightbar":{"tags":"$:/tags/PageTemplate","text":"<span class=\"tc-topbar tc-topbar-right\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopRightBar]!has[draft.of]]\" variable=\"listItem\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"},"$:/core/ui/PageTemplate":{"name":"{{$:/language/PageTemplate/Name}}","description":"{{$:/language/PageTemplate/Description}}","text":"\\whitespace trim\n\\define containerClasses()\ntc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$vars\n\ttv-config-toolbar-icons={{$:/config/Toolbar/Icons}}\n\ttv-config-toolbar-text={{$:/config/Toolbar/Text}}\n\ttv-config-toolbar-class={{$:/config/Toolbar/ButtonClass}}\n\ttv-enable-drag-and-drop={{$:/config/DragAndDrop/Enable}}\n\ttv-show-missing-links={{$:/config/MissingLinks}}\n\tstoryviewTitle={{$:/view}}\n\tlanguageTitle={{{ [{$:/language}get[name]] }}}>\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n\n<$dropzone enable=<<tv-enable-drag-and-drop>>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageTemplate]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n\n</$dropzone>\n\n</$navigator>\n\n</div>\n\n</$vars>\n"},"$:/PaletteManager":{"text":"\\define lingo-base() $:/language/ControlPanel/Palette/Editor/\n\\define describePaletteColour(colour)\n<$transclude tiddler=\"$:/language/Docs/PaletteColours/$colour$\"><$text text=\"$colour$\"/></$transclude>\n\\end\n\\define edit-colour-placeholder()\n edit $(colourName)$\n\\end\n\\define colour-tooltip(showhide) $showhide$ editor for $(newColourName)$ \n\\define resolve-colour(macrocall)\n\\import $:/core/macros/utils\n\\whitespace trim\n<$wikify name=\"name\" text=\"\"\"$macrocall$\"\"\">\n<<name>>\n</$wikify>\n\\end\n\\define delete-colour-index-actions() <$action-setfield $index=<<colourName>>/>\n\\define palette-manager-colour-row-segment()\n\\whitespace trim\n<$edit-text index=<<colourName>> tag=\"input\" placeholder=<<edit-colour-placeholder>> default=\"\"/>\n<br>\n<$edit-text index=<<colourName>> type=\"color\" tag=\"input\" class=\"tc-palette-manager-colour-input\"/>\n<$list filter=\"[<currentTiddler>getindex<colourName>removeprefix[<<]removesuffix[>>]] [<currentTiddler>getindex<colourName>removeprefix[<$]removesuffix[/>]]\" variable=\"ignore\">\n<$set name=\"state\" value={{{ [[$:/state/palettemanager/]addsuffix<currentTiddler>addsuffix[/]addsuffix<colourName>] }}}>\n<$wikify name=\"newColourName\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall={{{ [<currentTiddler>getindex<colourName>] }}}/>\"\"\">\n<$reveal state=<<state>> type=\"nomatch\" text=\"show\">\n<$button tooltip=<<colour-tooltip show>> aria-label=<<colour-tooltip show>> class=\"tc-btn-invisible\" set=<<state>> setTo=\"show\">{{$:/core/images/down-arrow}}<$text text=<<newColourName>> class=\"tc-small-gap-left\"/></$button><br>\n</$reveal>\n<$reveal state=<<state>> type=\"match\" text=\"show\">\n<$button tooltip=<<colour-tooltip hide>> aria-label=<<colour-tooltip show>> class=\"tc-btn-invisible\" actions=\"\"\"<$action-deletetiddler $tiddler=<<state>>/>\"\"\">{{$:/core/images/up-arrow}}<$text text=<<newColourName>> class=\"tc-small-gap-left\"/></$button><br>\n</$reveal>\n<$reveal state=<<state>> type=\"match\" text=\"show\">\n<$set name=\"colourName\" value=<<newColourName>>>\n<br>\n<<palette-manager-colour-row-segment>>\n<br><br>\n</$set>\n</$reveal>\n</$wikify>\n</$set>\n</$list>\n\\end\n\\define palette-manager-colour-row()\n\\whitespace trim\n<tr>\n<td>\n<span style=\"float:right;\">\n<$button tooltip={{$:/language/ControlPanel/Palette/Editor/Delete/Hint}} aria-label={{$:/language/ControlPanel/Palette/Editor/Delete/Hint}} class=\"tc-btn-invisible\" actions=<<delete-colour-index-actions>>>\n{{$:/core/images/delete-button}}</$button>\n</span>\n''<$macrocall $name=\"describePaletteColour\" colour=<<colourName>>/>''<br/>\n<$macrocall $name=\"colourName\" $output=\"text/plain\"/>\n</td>\n<td>\n<<palette-manager-colour-row-segment>>\n</td>\n</tr>\n\\end\n\\define palette-manager-table()\n\\whitespace trim\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]indexes[]]\" variable=\"colourName\">\n<$list filter=\"[<currentTiddler>indexes[]removeprefix<colourName>suffix[]]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$list filter=\"[{$:/state/palettemanager/showexternal}removeprefix[yes]suffix[]]\" variable=\"ignore\">\n<<palette-manager-colour-row>>\n</$list>\n\"\"\">\n<<palette-manager-colour-row>>\n</$list>\n</$list>\n</tbody>\n</table>\n\\end\n<$set name=\"currentTiddler\" value={{$:/palette}}>\n\n<<lingo Prompt>> <$link to={{$:/palette}}><$macrocall $name=\"currentTiddler\" $output=\"text/plain\"/></$link>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\" variable=\"listItem\">\n<<lingo Prompt/Modified>>\n<$button message=\"tm-delete-tiddler\" param={{$:/palette}}><<lingo Reset/Caption>></$button>\n</$list>\n\n<$list filter=\"[all[current]is[shadow]!is[tiddler]]\" variable=\"listItem\">\n<<lingo Clone/Prompt>>\n</$list>\n\n<$button message=\"tm-new-tiddler\" param={{$:/palette}}><<lingo Clone/Caption>></$button>\n\n<$checkbox tiddler=\"$:/state/palettemanager/showexternal\" field=\"text\" checked=\"yes\" unchecked=\"no\"><span class=\"tc-small-gap-left\"><<lingo Names/External/Show>></span></$checkbox>\n\n<<palette-manager-table>>\n"},"$:/core/ui/PluginInfo":{"text":"\\define localised-info-tiddler-title()\n$(currentTiddler)$/$(languageTitle)$/$(currentTab)$\n\\end\n\\define info-tiddler-title()\n$(currentTiddler)$/$(currentTab)$\n\\end\n\\define default-tiddler-title()\n$:/core/ui/PluginInfo/Default/$(currentTab)$\n\\end\n<$transclude tiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<default-tiddler-title>> mode=\"block\">\n{{$:/language/ControlPanel/Plugin/NoInfoFound/Hint}}\n</$transclude>\n</$transclude>\n</$transclude>\n</$transclude>\n"},"$:/core/ui/PluginInfo/Default/contents":{"text":"\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link />\n</li>\n</$list>\n</ul>\n"},"$:/core/ui/PluginListItemTemplate":{"text":"<div class=\"tc-menu-list-item\">\n<$link to={{!!title}}><$view field=\"description\"><$view field=\"title\"/></$view></$link>\n</div>"},"$:/core/ui/RootTemplate":{"text":"<$transclude tiddler={{{ [{$:/layout}has[text]] ~[[$:/core/ui/PageTemplate]] }}} mode=\"inline\"/>\n\n"},"$:/core/ui/SearchResults":{"text":"<div class=\"tc-search-results\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\"\"\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/search/currentTab\" text=<<currentTab>>/>\"\"\" explicitState=\"$:/state/tab/search-results/sidebar\"/>\n\n</$list>\n\n</div>\n"},"$:/core/ui/SideBar/More":{"tags":"$:/tags/SideBar","caption":"{{$:/language/SideBar/More/Caption}}","text":"<div class=\"tc-more-sidebar\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\" default={{$:/config/DefaultMoreSidebarTab}} state=\"$:/state/tab/moresidebar\" class=\"tc-vertical tc-sidebar-tabs-more\" explicitState=\"$:/state/tab/moresidebar-1850697562\"/>\n</div>\n"},"$:/core/ui/SideBar/Open":{"tags":"$:/tags/SideBar","caption":"{{$:/language/SideBar/Open/Caption}}","text":"\\whitespace trim\n\\define lingo-base() $:/language/CloseAll/\n\n\\define drop-actions()\n<$action-listops $tiddler=<<tv-story-list>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define placeholder()\n<div class=\"tc-droppable-placeholder\"/>\n\\end\n\n\\define droppable-item(button)\n\\whitespace trim\n<$droppable actions=<<drop-actions>> enable=<<tv-allow-drag-and-drop>>>\n<<placeholder>>\n<div>\n$button$\n</div>\n</$droppable>\n\\end\n\n<div class=\"tc-sidebar-tab-open\">\n<$list filter=\"[list<tv-story-list>]\" history=<<tv-history-list>> storyview=\"pop\">\n<div class=\"tc-sidebar-tab-open-item\">\n<$macrocall $name=\"droppable-item\" button=\"\"\"<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=\"tc-btn-invisible tc-btn-mini tc-small-gap-right\">{{$:/core/images/close-button}}</$button><$link to={{!!title}}><$view field=\"title\"/></$link>\"\"\"/>\n</div>\n</$list>\n<$tiddler tiddler=\"\">\n<div>\n<$macrocall $name=\"droppable-item\" button=\"\"\"<$button message=\"tm-close-all-tiddlers\" class=\"tc-btn-invisible tc-btn-mini\"><<lingo Button>></$button>\"\"\"/>\n</div>\n</$tiddler>\n</div>\n"},"$:/core/ui/SideBar/Recent":{"tags":"$:/tags/SideBar","caption":"{{$:/language/SideBar/Recent/Caption}}","text":"<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"},"$:/core/ui/SideBar/Tools":{"tags":"$:/tags/SideBar","caption":"{{$:/language/SideBar/Tools/Caption}}","text":"\\define lingo-base() $:/language/ControlPanel/\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n\n<<lingo Basics/Version/Prompt>> <<version>>\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n\n<div style=\"position:relative;\" class={{{ [<listItem>encodeuricomponent[]addprefix[tc-btn-]] }}}>\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</div>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"},"$:/core/ui/SideBarLists":{"text":"<$transclude tiddler=\"$:/core/ui/SideBarSegments/search\"/>\n\n<$transclude tiddler=\"$:/core/ui/SideBarSegments/tabs\"/>\n\n"},"$:/core/ui/SideBarSegments/page-controls":{"tags":"$:/tags/SideBarSegment","text":"{{||$:/core/ui/PageTemplate/pagecontrols}}\n"},"$:/core/ui/SideBarSegments/search":{"tags":"$:/tags/SideBarSegment","text":"\\whitespace trim\n\n\\define count-popup-button()\n\\whitespace trim\n<$button popup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n<$list filter=\"[{$(searchTiddler)$}minlength{$:/config/Search/MinLength}limit[1]]\" variable=\"listItem\">\n<$vars userInput={{{ [<searchTiddler>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}} replaceRegexp=\"limit\\[\\d+\\]\">\n<$vars primaryListFilter={{{ [<configTiddler>get[first-search-filter]search-replace:g:regexp<replaceRegexp>,[]] }}} secondaryListFilter={{{ [<configTiddler>get[second-search-filter]search-replace:g:regexp<replaceRegexp>,[]] }}}>\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[subfilter<primaryListFilter>] [subfilter<secondaryListFilter>]\"/>\"\"\">\n{{$:/language/Search/Matches}}\n</$set>\n</$vars>\n</$vars>\n</$list>\n</$button>\n\\end\n\n\\define search-results-list()\n\\whitespace trim\n<$vars userInput={{$(searchTiddler)$}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}}>\n<$list filter=\"[<userInput>minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$tiddler tiddler=<<configTiddler>>>\n\n{{$:/core/ui/SearchResults}}\n\n</$tiddler>\n\n</$list>\n</$vars>\n\\end\n\n\\define cancel-search-actions() <$list filter=\"[<searchTiddler>get[text]!match{$:/temp/search}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/search]] [<searchTiddler>] [<searchListState>]\"/>\"\"\"><$action-setfield $tiddler=\"$:/temp/search\" text={{{ [<searchTiddler>get[text]] }}}/><$action-setfield $tiddler=\"$:/temp/search/refresh\" text=\"yes\"/></$list>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\n\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab/search-results/sidebar\" tag=\"$:/tags/SearchResults\" beforeafter=\"$beforeafter$\" defaultState={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/search/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define advanced-search-actions() <$action-setfield $tiddler=\"$:/temp/advancedsearch\" text={{$:/temp/search/input}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/search/input}}/><<delete-state-tiddlers>><$action-navigate $to=\"$:/AdvancedSearch\"/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\"[data-tiddler-title=\"$:/AdvancedSearch\"] .tc-search input\"\"\" preventScroll=\"true\"/><$action-deletetiddler $filter=\"$:/temp/search $:/temp/search/input $:/temp/search/refresh [<searchListState>]\"/>\n\n<div class=\"tc-sidebar-lists tc-sidebar-search\">\n\n<$vars editTiddler=\"$:/temp/search\" searchTiddler=\"$:/temp/search/input\" searchListState=<<qualify \"$:/state/search-list/selected-item\">>>\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$keyboard key=\"((advanced-search-sidebar))\" actions=<<advanced-search-actions>>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<editTiddler>> storeTitle=<<searchTiddler>> \n\t\tselectionStateTitle=<<searchListState>> refreshTitle=\"$:/temp/search/refresh\" type=\"search\" \n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify \"$:/state/popup/search-dropdown\">> \n\t\tclass=\"tc-popup-handle\" filterMinLength={{$:/config/Search/MinLength}} inputCancelActions=<<cancel-search-actions>> \n\t\tinputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> cancelPopups=\"yes\" \n\t\tconfigTiddlerFilter=\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\"/>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n<$reveal state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n<$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n<<advanced-search-actions>>\n{{$:/core/images/advanced-search-button}}\n</$button>\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>><$action-sendmessage $message=\"tm-focus-selector\" $param=\".tc-search input\"/>\n{{$:/core/images/close-button}}\n</$button>\n<<count-popup-button>>\n</$reveal>\n<$reveal state=<<searchTiddler>> type=\"match\" text=\"\">\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/advanced-search-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown-wrapper\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown tc-search-drop-down tc-popup-handle\" state=<<qualify \"$:/state/popup/search-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n\n<<search-results-list>>\n\n</$reveal>\n\n</$reveal>\n\n</$vars>\n\n</div>\n"},"$:/core/ui/SideBarSegments/site-subtitle":{"tags":"$:/tags/SideBarSegment","text":"<div class=\"tc-site-subtitle\">\n\n<$transclude tiddler=\"$:/SiteSubtitle\" mode=\"inline\"/>\n\n</div>\n"},"$:/core/ui/SideBarSegments/site-title":{"tags":"$:/tags/SideBarSegment","text":"<h1 class=\"tc-site-title\">\n\n<$transclude tiddler=\"$:/SiteTitle\" mode=\"inline\"/>\n\n</h1>\n"},"$:/core/ui/SideBarSegments/tabs":{"tags":"$:/tags/SideBarSegment","text":"<div class=\"tc-sidebar-lists tc-sidebar-tabs\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\" default={{$:/config/DefaultSidebarTab}} state=\"$:/state/tab/sidebar\" class=\"tc-sidebar-tabs-main\" explicitState=\"$:/state/tab/sidebar--595412856\"/>\n\n</div>\n"},"$:/core/ui/SwitcherModal":{"subtitle":"<$text text={{{[<switch>lookup[$:/language/Switcher/Subtitle/]]}}}/>","class":"tc-modal-centered","text":"<$tiddler tiddler={{{[<switch>lookup[$:/config/SwitcherTargets/]]}}}>\n\n\n<$transclude/>\n\n\n</$tiddler>"},"$:/TagManager":{"icon":"$:/core/images/tag-button","color":"#bbb","text":"\\define lingo-base() $:/language/TagManager/\n\\define iconEditorTab(type)\n\\whitespace trim\n<$link to=\"\"><<lingo Icons/None>></$link>\n<$list filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[sort[title]] +[$type$is[system]]\">\n<$link to={{!!title}}>\n<$transclude/> <$view field=\"title\"/>\n</$link>\n</$list>\n\\end\n\\define iconEditor(title)\n\\whitespace trim\n<div class=\"tc-drop-down-wrapper\">\n<$button popupTitle={{{ [[$:/state/popup/icon/]addsuffix<__title__>] }}} class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal stateTitle={{{ [[$:/state/popup/icon/]addsuffix<__title__>] }}} type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$linkcatcher actions=\"\"\"<$action-setfield $tiddler=<<__title__>> icon=<<navigateTo>>/>\"\"\">\n<<iconEditorTab type:\"!\">>\n<hr/>\n<<iconEditorTab type:\"\">>\n</$linkcatcher>\n</div>\n</$reveal>\n</div>\n\\end\n\\define toggleButton(state)\n\\whitespace trim\n<$reveal stateTitle=<<__state__>> type=\"match\" text=\"closed\" default=\"closed\">\n<$button setTitle=<<__state__>> setTo=\"open\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n<$reveal stateTitle=<<__state__>> type=\"match\" text=\"open\" default=\"closed\">\n<$button setTitle=<<__state__>> setTo=\"closed\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n\\end\n\\whitespace trim\n<table class=\"tc-tag-manager-table\">\n<tbody>\n<tr>\n<th><<lingo Colour/Heading>></th>\n<th class=\"tc-tag-manager-tag\"><<lingo Tag/Heading>></th>\n<th><<lingo Count/Heading>></th>\n<th><<lingo Icon/Heading>></th>\n<th><<lingo Info/Heading>></th>\n</tr>\n<$list filter=\"[tags[]!is[system]sort[title]]\">\n<tr>\n<td><$edit-text field=\"color\" tag=\"input\" type=\"color\"/></td>\n<td>{{||$:/core/ui/TagTemplate}}</td>\n<td><$count filter=\"[all[current]tagging[]]\"/></td>\n<td>\n<$macrocall $name=\"iconEditor\" title={{!!title}}/>\n</td>\n<td>\n<$macrocall $name=\"toggleButton\" state={{{ [[$:/state/tag-manager/]addsuffix<currentTiddler>] }}} /> \n</td>\n</tr>\n<tr>\n<td></td>\n<td colspan=\"4\">\n<$reveal stateTitle={{{ [[$:/state/tag-manager/]addsuffix<currentTiddler>] }}} type=\"match\" text=\"open\" default=\"\">\n<table>\n<tbody>\n<tr><td><<lingo Colour/Heading>></td><td><$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/></td></tr>\n<tr><td><<lingo Icon/Heading>></td><td><$edit-text field=\"icon\" tag=\"input\" size=\"45\"/></td></tr>\n</tbody>\n</table>\n</$reveal>\n</td>\n</tr>\n</$list>\n<tr>\n<td></td>\n<td style=\"position:relative;\">\n{{$:/core/ui/UntaggedTemplate}}\n</td>\n<td>\n<small class=\"tc-menu-list-count\"><$count filter=\"[untagged[]!is[system]] -[tags[]]\"/></small>\n</td>\n<td></td>\n<td></td>\n</tr>\n</tbody>\n</table>\n"},"$:/core/ui/TagPickerTagTemplate":{"text":"\\whitespace trim\n<$button class=<<button-classes>> tag=\"a\" tooltip={{$:/language/EditTemplate/Tags/Add/Button/Hint}}>\n<$list filter=\"[<saveTiddler>minlength[1]]\">\n<$action-listops $tiddler=<<saveTiddler>> $field=<<tagField>> $subfilter=\"[<tag>]\"/>\n</$list>\n<$set name=\"currentTiddlerCSSEscaped\" value={{{ [<saveTiddler>escapecss[]] }}}>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=<<get-tagpicker-focus-selector>> preventScroll=\"true\"/>\n</$set>\n<<delete-tag-state-tiddlers>>\n<$list filter=\"[<refreshTitle>minlength[1]]\">\n<$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n</$list>\n<<actions>>\n<$set name=\"backgroundColor\" value={{!!color}}>\n<$wikify name=\"foregroundColor\" text=\"\"\"<$macrocall $name=\"contrastcolour\" target={{!!color}} fallbackTarget=<<fallbackTarget>> colourA=<<colourA>> colourB=<<colourB>>/>\"\"\">\n<span class=\"tc-tag-label tc-btn-invisible\" style=<<tag-pill-styles>>>\n<$transclude tiddler={{!!icon}}/><$view field=\"title\" format=\"text\"/>\n</span>\n</$wikify>\n</$set>\n</$button>\n"},"$:/core/ui/TagTemplate":{"text":"\\whitespace trim\n<span class=\"tc-tag-list-item\" data-tag-title=<<currentTiddler>>>\n<$set name=\"transclusion\" value=<<currentTiddler>>>\n<$macrocall $name=\"tag-pill-body\" tag=<<currentTiddler>> icon={{!!icon}} colour={{!!color}} palette={{$:/palette}} element-tag=\"\"\"$button\"\"\" element-attributes=\"\"\"popup=<<qualify \"$:/state/popup/tag\">> dragFilter='[all[current]tagging[]]' tag='span'\"\"\"/>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\" animate=\"yes\" class=\"tc-drop-down\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</$set>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]\" variable=\"listItem\"> \n<$transclude tiddler=<<listItem>>/> \n</$list>\n<hr>\n<$macrocall $name=\"list-tagged-draggable\" tag=<<currentTiddler>>/>\n</$reveal>\n</$set>\n</span>\n"},"$:/core/ui/TiddlerFieldTemplate":{"text":"<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<listItem>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<listItem>>/>\n</td>\n</tr>"},"$:/core/ui/TiddlerFields":{"text":"<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"},"$:/core/ui/TiddlerInfo/Advanced/PluginInfo":{"tags":"$:/tags/TiddlerInfo/Advanced","text":"\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<$list filter=\"[all[current]has[plugin-type]]\">\n\n! <<lingo Heading>>\n\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</li>\n</$list>\n</ul>\n\n</$list>\n"},"$:/core/ui/TiddlerInfo/Advanced/ShadowInfo":{"tags":"$:/tags/TiddlerInfo/Advanced","text":"\\define lingo-base() $:/language/TiddlerInfo/Advanced/ShadowInfo/\n<$set name=\"infoTiddler\" value=<<currentTiddler>>>\n\n''<<lingo Heading>>''\n\n<$list filter=\"[all[current]!is[shadow]]\">\n\n<<lingo NotShadow/Hint>>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]]\">\n\n<<lingo Shadow/Hint>>\n\n<$list filter=\"[all[current]shadowsource[]]\">\n\n<$set name=\"pluginTiddler\" value=<<currentTiddler>>>\n<<lingo Shadow/Source>>\n</$set>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\">\n\n<<lingo OverriddenShadow/Hint>>\n\n</$list>\n\n\n</$list>\n</$set>\n"},"$:/core/ui/TiddlerInfo/Advanced":{"tags":"$:/tags/TiddlerInfo","caption":"{{$:/language/TiddlerInfo/Advanced/Caption}}","text":"<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo/Advanced]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>> mode=\"block\"/>\n</$list>\n"},"$:/core/ui/TiddlerInfo/Fields":{"tags":"$:/tags/TiddlerInfo","caption":"{{$:/language/TiddlerInfo/Fields/Caption}}","text":"<$transclude tiddler=\"$:/core/ui/TiddlerFields\"/>\n"},"$:/core/ui/TiddlerInfo/List":{"tags":"$:/tags/TiddlerInfo","caption":"{{$:/language/TiddlerInfo/List/Caption}}","text":"\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[list{!!title}]\" emptyMessage=<<lingo List/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"},"$:/core/ui/TiddlerInfo/Listed":{"tags":"$:/tags/TiddlerInfo","caption":"{{$:/language/TiddlerInfo/Listed/Caption}}","text":"\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]listed[]!is[system]]\" emptyMessage=<<lingo Listed/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"},"$:/core/ui/TiddlerInfo/References":{"tags":"$:/tags/TiddlerInfo","caption":"{{$:/language/TiddlerInfo/References/Caption}}","text":"\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]backlinks[]sort[title]]\" emptyMessage=<<lingo References/Empty>> template=\"$:/core/ui/ListItemTemplate\">\n</$list>"},"$:/core/ui/TiddlerInfo/Tagging":{"tags":"$:/tags/TiddlerInfo","caption":"{{$:/language/TiddlerInfo/Tagging/Caption}}","text":"\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]tagging[]]\" emptyMessage=<<lingo Tagging/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"},"$:/core/ui/TiddlerInfo/Tools":{"tags":"$:/tags/TiddlerInfo","caption":"{{$:/language/TiddlerInfo/Tools/Caption}}","text":"\\define lingo-base() $:/language/TiddlerInfo/\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\">\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"},"$:/core/ui/TiddlerInfo":{"text":"<div style=\"position:relative;\">\n<div class=\"tc-tiddler-controls\" style=\"position:absolute;right:0;\">\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n</div>\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo]!has[draft.of]]\" default={{$:/config/TiddlerInfo/Default}}/>\n"},"$:/core/ui/TopBar/menu":{"tags":"$:/tags/TopRightBar","text":"<$list filter=\"[[$:/state/sidebar]get[text]] +[else[yes]!match[no]]\" variable=\"ignore\">\n<$button set=\"$:/state/sidebar\" setTo=\"no\" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class=\"tc-btn-invisible tc-hide-sidebar-btn\">{{$:/core/images/chevron-right}}</$button>\n</$list>\n<$list filter=\"[[$:/state/sidebar]get[text]] +[else[yes]match[no]]\" variable=\"ignore\">\n<$button set=\"$:/state/sidebar\" setTo=\"yes\" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class=\"tc-btn-invisible tc-show-sidebar-btn\">{{$:/core/images/chevron-left}}</$button>\n</$list>\n"},"$:/core/ui/UntaggedTemplate":{"text":"\\define lingo-base() $:/language/SideBar/\n<$button popup=<<qualify \"$:/state/popup/tag\">> class=\"tc-btn-invisible tc-untagged-label tc-tag-label\">\n<<lingo Tags/Untagged/Caption>>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[untagged[]!is[system]] -[tags[]] +[sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n"},"$:/core/ui/ViewTemplate/body":{"tags":"$:/tags/ViewTemplate","text":"<$reveal tag=\"div\" class=\"tc-tiddler-body\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[current]!has[plugin-type]!field:hide-body[yes]]\">\n\n<$transclude>\n\n<$transclude tiddler=\"$:/language/MissingTiddler/Hint\"/>\n\n</$transclude>\n\n</$list>\n\n</$reveal>\n"},"$:/core/ui/ViewTemplate/classic":{"tags":"$:/tags/ViewTemplate $:/tags/EditTemplate","text":"\\define lingo-base() $:/language/ClassicWarning/\n<$list filter=\"[all[current]type[text/x-tiddlywiki]]\">\n<div class=\"tc-message-box\">\n\n<<lingo Hint>>\n\n<$button set=\"!!type\" setTo=\"text/vnd.tiddlywiki\"><<lingo Upgrade/Caption>></$button>\n\n</div>\n</$list>\n"},"$:/core/ui/ViewTemplate/import":{"tags":"$:/tags/ViewTemplate","text":"\\define lingo-base() $:/language/Import/\n\n\\define buttons()\n<$button message=\"tm-delete-tiddler\" param=<<currentTiddler>>><<lingo Listing/Cancel/Caption>></$button>\n<$button message=\"tm-perform-import\" param=<<currentTiddler>>><<lingo Listing/Import/Caption>></$button>\n<<lingo Listing/Preview>> <$select tiddler=\"$:/state/importpreviewtype\" default=\"$:/core/ui/ImportPreviews/Text\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ImportPreview]!has[draft.of]]\">\n<option value=<<currentTiddler>>>{{!!caption}}</option>\n</$list>\n</$select>\n\\end\n\n<$list filter=\"[all[current]field:plugin-type[import]]\">\n\n<div class=\"tc-import\">\n\n<<lingo Listing/Hint>>\n\n<<buttons>>\n\n{{||$:/core/ui/ImportListing}}\n\n<<buttons>>\n\n</div>\n\n</$list>\n"},"$:/core/ui/ViewTemplate/plugin":{"tags":"$:/tags/ViewTemplate","text":"<$reveal tag=\"div\" class=\"tc-tiddler-plugin-info\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[current]has[plugin-type]] -[all[current]field:plugin-type[import]]\">\n<$set name=\"plugin-type\" value={{!!plugin-type}}>\n<$set name=\"default-popup-state\" value=\"yes\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n{{||$:/core/ui/Components/plugin-info}}\n</$set>\n</$set>\n</$set>\n</$list>\n</$reveal>"},"$:/core/ui/ViewTemplate/subtitle":{"tags":"$:/tags/ViewTemplate","text":"\\whitespace trim\n<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}} />\n<$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n</$reveal>\n"},"$:/core/ui/ViewTemplate/tags":{"tags":"$:/tags/ViewTemplate","text":"<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-tags-wrapper\"><$list filter=\"[all[current]tags[]sort[title]]\" template=\"$:/core/ui/TagTemplate\" storyview=\"pop\"/></div>\n</$reveal>\n"},"$:/core/ui/ViewTemplate/title":{"tags":"$:/tags/ViewTemplate","text":"\\whitespace trim\n\\define title-styles()\nfill:$(foregroundColor)$;\n\\end\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<span class=\"tc-tiddler-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\"><$transclude tiddler=<<listItem>>/></$set></$reveal></$list>\n</span>\n<$set name=\"tv-wikilinks\" value={{$:/config/Tiddlers/TitleLinks}}>\n<$link>\n<$set name=\"foregroundColor\" value={{!!color}}>\n<$list filter=\"[all[current]has[icon]]~[[$:/config/DefaultTiddlerIcon]has[text]]\">\n<span class=\"tc-tiddler-title-icon\" style=<<title-styles>>>\n<$transclude tiddler={{!!icon}}>\n<$transclude tiddler={{$:/config/DefaultTiddlerIcon}}/>\n</$transclude>\n</span>\n</$list>\n</$set>\n<$list filter=\"[all[current]removeprefix[$:/]]\">\n<h2 class=\"tc-title\" title={{$:/language/SystemTiddler/Tooltip}}>\n<span class=\"tc-system-title-prefix\">$:/</span><$text text=<<currentTiddler>>/>\n</h2>\n</$list>\n<$list filter=\"[all[current]!prefix[$:/]]\">\n<h2 class=\"tc-title\">\n<$view field=\"title\"/>\n</h2>\n</$list>\n</$link>\n</$set>\n</div>\n\n<$reveal type=\"nomatch\" text=\"\" default=\"\" state=<<tiddlerInfoState>> class=\"tc-tiddler-info tc-popup-handle\" animate=\"yes\" retain=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfoSegment]!has[draft.of]] [[$:/core/ui/TiddlerInfo]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>> mode=\"block\"/></$list>\n\n</$reveal>\n</div>"},"$:/core/ui/ViewTemplate/unfold":{"tags":"$:/tags/ViewTemplate","text":"<$reveal tag=\"div\" type=\"nomatch\" state=\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar\" text=\"hide\">\n<$reveal tag=\"div\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=\"tc-fold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-up}}\n</$button>\n</$reveal>\n<$reveal tag=\"div\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"show\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=\"tc-unfold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</$reveal>\n"},"$:/core/ui/ViewTemplate":{"text":"\\define folded-state()\n$:/state/folded/$(currentTiddler)$\n\\end\n\\define cancel-delete-tiddler-actions(message) <$action-sendmessage $message=\"tm-$message$-tiddler\"/>\n\\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!has[draft.of]]\n<$vars storyTiddler=<<currentTiddler>> tiddlerInfoState=<<qualify \"$:/state/popup/tiddler-info\">>><div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class={{{ tc-tiddler-frame tc-tiddler-view-frame [<currentTiddler>is[tiddler]then[tc-tiddler-exists]] [<currentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [<currentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [<currentTiddler>is[shadow]is[tiddler]then[tc-tiddler-overridden-shadow]] [<currentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [<currentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!has[draft.of]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>>/></$list>\n</div>\n</$vars>\n"},"$:/core/ui/Buttons/clone":{"tags":"$:/tags/ViewToolbar","caption":"{{$:/core/images/clone-button}} {{$:/language/Buttons/Clone/Caption}}","description":"{{$:/language/Buttons/Clone/Hint}}","text":"\\whitespace trim\n<$button message=\"tm-new-tiddler\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/Clone/Hint}} aria-label={{$:/language/Buttons/Clone/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/clone-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Clone/Caption}}/>\n</span>\n</$list>\n</$button>"},"$:/core/ui/Buttons/close-others":{"tags":"$:/tags/ViewToolbar","caption":"{{$:/core/images/close-others-button}} {{$:/language/Buttons/CloseOthers/Caption}}","description":"{{$:/language/Buttons/CloseOthers/Hint}}","text":"\\whitespace trim\n<$button message=\"tm-close-other-tiddlers\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/CloseOthers/Hint}} aria-label={{$:/language/Buttons/CloseOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/CloseOthers/Caption}}/>\n</span>\n</$list>\n</$button>"},"$:/core/ui/Buttons/close":{"tags":"$:/tags/ViewToolbar","caption":"{{$:/core/images/close-button}} {{$:/language/Buttons/Close/Caption}}","description":"{{$:/language/Buttons/Close/Hint}}","text":"\\whitespace trim\n<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Close/Caption}}/>\n</span>\n</$list>\n</$button>"},"$:/core/ui/Buttons/edit":{"tags":"$:/tags/ViewToolbar","caption":"{{$:/core/images/edit-button}} {{$:/language/Buttons/Edit/Caption}}","description":"{{$:/language/Buttons/Edit/Hint}}","text":"\\whitespace trim\n<$button message=\"tm-edit-tiddler\" tooltip={{$:/language/Buttons/Edit/Hint}} aria-label={{$:/language/Buttons/Edit/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/edit-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Edit/Caption}}/>\n</span>\n</$list>\n</$button>"},"$:/core/ui/Buttons/export-tiddler":{"tags":"$:/tags/ViewToolbar","caption":"{{$:/core/images/export-button}} {{$:/language/Buttons/ExportTiddler/Caption}}","description":"{{$:/language/Buttons/ExportTiddler/Hint}}","text":"\\define makeExportFilter()\n[[$(currentTiddler)$]]\n\\end\n<$macrocall $name=\"exportButton\" exportFilter=<<makeExportFilter>> lingoBase=\"$:/language/Buttons/ExportTiddler/\" baseFilename=<<currentTiddler>>/>"},"$:/core/ui/Buttons/fold-bar":{"tags":"$:/tags/ViewToolbar","caption":"{{$:/core/images/chevron-up}} {{$:/language/Buttons/Fold/FoldBar/Caption}}","description":"{{$:/language/Buttons/Fold/FoldBar/Hint}}","text":"<!-- This dummy toolbar button is here to allow visibility of the fold-bar to be controlled as if it were a toolbar button -->"},"$:/core/ui/Buttons/fold-others":{"tags":"$:/tags/ViewToolbar","caption":"{{$:/core/images/fold-others-button}} {{$:/language/Buttons/FoldOthers/Caption}}","description":"{{$:/language/Buttons/FoldOthers/Hint}}","text":"\\whitespace trim\n<$button tooltip={{$:/language/Buttons/FoldOthers/Hint}} aria-label={{$:/language/Buttons/FoldOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-other-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/FoldOthers/Caption}}/>\n</span>\n</$list>\n</$button>"},"$:/core/ui/Buttons/fold":{"tags":"$:/tags/ViewToolbar","caption":"{{$:/core/images/fold-button}} {{$:/language/Buttons/Fold/Caption}}","description":"{{$:/language/Buttons/Fold/Hint}}","text":"\\whitespace trim\n<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Fold/Caption}}/>\n</span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Unfold/Caption}}/>\n</span>\n</$list>\n</$button>\n</$reveal>\n"},"$:/core/ui/Buttons/info":{"tags":"$:/tags/ViewToolbar","caption":"{{$:/core/images/info-button}} {{$:/language/Buttons/Info/Caption}}","description":"{{$:/language/Buttons/Info/Hint}}","text":"\\whitespace trim\n\\define button-content()\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/info-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Info/Caption}}/>\n</span>\n</$list>\n\\end\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"popup\">\n<$button popup=<<tiddlerInfoState>> tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$reveal state=<<tiddlerInfoState>> type=\"match\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"yes\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=<<tiddlerInfoState>> type=\"nomatch\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n</$reveal>"},"$:/core/ui/Buttons/more-tiddler-actions":{"tags":"$:/tags/ViewToolbar","caption":"{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}","description":"{{$:/language/Buttons/More/Hint}}","text":"\\whitespace trim\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/More/Caption}}/>\n</span>\n</$list>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]] -[[$:/core/ui/Buttons/more-tiddler-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$set>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"},"$:/core/ui/Buttons/new-here":{"tags":"$:/tags/ViewToolbar","caption":"{{$:/core/images/new-here-button}} {{$:/language/Buttons/NewHere/Caption}}","description":"{{$:/language/Buttons/NewHere/Hint}}","text":"\\whitespace trim\n\\define newHereActions()\n<$set name=\"tags\" filter=\"[<currentTiddler>] [{$:/config/NewTiddler/Tags}]\">\n<$action-sendmessage $message=\"tm-new-tiddler\" tags=<<tags>>/>\n</$set>\n\\end\n\\define newHereButton()\n<$button actions=<<newHereActions>> tooltip={{$:/language/Buttons/NewHere/Hint}} aria-label={{$:/language/Buttons/NewHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-here-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/NewHere/Caption}}/>\n</span>\n</$list>\n</$button>\n\\end\n<<newHereButton>>\n"},"$:/core/ui/Buttons/new-journal-here":{"tags":"$:/tags/ViewToolbar","caption":"{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournalHere/Caption}}","description":"{{$:/language/Buttons/NewJournalHere/Hint}}","text":"\\whitespace trim\n\\define journalButtonTags()\n[[$(currentTiddlerTag)$]] $(journalTags)$\n\\end\n\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournalHere/Hint}} aria-label={{$:/language/Buttons/NewJournalHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$wikify name=\"journalTitle\" text=\"\"\"<$macrocall $name=\"now\" format=<<journalTitleTemplate>>/>\"\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<journalButtonTags>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/NewJournalHere/Caption}}/>\n</span>\n</$list>\n</$wikify>\n</$button>\n\\end\n<$set name=\"journalTitleTemplate\" value={{$:/config/NewJournal/Title}}>\n<$set name=\"journalTags\" value={{$:/config/NewJournal/Tags}}>\n<$set name=\"currentTiddlerTag\" value=<<currentTiddler>>>\n<<journalButton>>\n</$set>\n</$set>\n</$set>\n"},"$:/core/ui/Buttons/open-window":{"tags":"$:/tags/ViewToolbar","caption":"{{$:/core/images/open-window}} {{$:/language/Buttons/OpenWindow/Caption}}","description":"{{$:/language/Buttons/OpenWindow/Hint}}","text":"\\whitespace trim\n<$button message=\"tm-open-window\" tooltip={{$:/language/Buttons/OpenWindow/Hint}} aria-label={{$:/language/Buttons/OpenWindow/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/open-window}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/OpenWindow/Caption}}/>\n</span>\n</$list>\n</$button>"},"$:/core/ui/Buttons/permalink":{"tags":"$:/tags/ViewToolbar","caption":"{{$:/core/images/permalink-button}} {{$:/language/Buttons/Permalink/Caption}}","description":"{{$:/language/Buttons/Permalink/Hint}}","text":"\\whitespace trim\n<$button message=\"tm-permalink\" tooltip={{$:/language/Buttons/Permalink/Hint}} aria-label={{$:/language/Buttons/Permalink/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/permalink-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Permalink/Caption}}/>\n</span>\n</$list>\n</$button>"},"$:/core/ui/Buttons/permaview":{"tags":"$:/tags/ViewToolbar $:/tags/PageControls","caption":"{{$:/core/images/permaview-button}} {{$:/language/Buttons/Permaview/Caption}}","description":"{{$:/language/Buttons/Permaview/Hint}}","text":"\\whitespace trim\n<$button message=\"tm-permaview\" tooltip={{$:/language/Buttons/Permaview/Hint}} aria-label={{$:/language/Buttons/Permaview/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/permaview-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Permaview/Caption}}/>\n</span>\n</$list>\n</$button>"},"$:/DefaultTiddlers":{"text":"GettingStarted\n"},"$:/temp/advancedsearch":{"text":""},"$:/snippets/allfields":{"text":"\\define renderfield(title)\n<tr class=\"tc-view-field\"><td class=\"tc-view-field-name\">''$title$'':</td><td class=\"tc-view-field-value\">//{{$:/language/Docs/Fields/$title$}}//</td></tr>\n\\end\n<table class=\"tc-view-field-table\"><tbody><$list filter=\"[fields[]sort[title]]\" variable=\"listItem\"><$macrocall $name=\"renderfield\" title=<<listItem>>/></$list>\n</tbody></table>\n"},"$:/config/AnimationDuration":{"text":"400"},"$:/config/AutoFocus":{"text":"title"},"$:/config/AutoSave":{"text":"yes"},"$:/config/BitmapEditor/Colour":{"text":"#444"},"$:/config/BitmapEditor/ImageSizes":{"text":"[[62px 100px]] [[100px 62px]] [[124px 200px]] [[200px 124px]] [[248px 400px]] [[371px 600px]] [[400px 248px]] [[556px 900px]] [[600px 371px]] [[742px 1200px]] [[900px 556px]] [[1200px 742px]]"},"$:/config/BitmapEditor/LineWidth":{"text":"3px"},"$:/config/BitmapEditor/LineWidths":{"text":"0.25px 0.5px 1px 2px 3px 4px 6px 8px 10px 16px 20px 28px 40px 56px 80px"},"$:/config/BitmapEditor/Opacities":{"text":"0.01 0.025 0.05 0.075 0.1 0.15 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0"},"$:/config/BitmapEditor/Opacity":{"text":"1.0"},"$:/config/DefaultMoreSidebarTab":{"text":"$:/core/ui/MoreSideBar/Tags"},"$:/config/DefaultSidebarTab":{"text":"$:/core/ui/SideBar/Open"},"$:/config/DownloadSaver/AutoSave":{"text":"no"},"$:/config/Drafts/TypingTimeout":{"text":"400"},"$:/config/EditMode/fieldname-filter":{"first-search-filter":"[!is[shadow]!is[system]fields[]search:title<userInput>sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type","second-search-filter":"[fields[]search:title<userInput>sort[]] -[!is[shadow]!is[system]fields[]]"},"$:/config/EditTabIndex":{"text":"1\n"},"$:/config/EditTemplateFields/Visibility/title":{"text":"hide"},"$:/config/EditTemplateFields/Visibility/tags":{"text":"hide"},"$:/config/EditTemplateFields/Visibility/text":{"text":"hide"},"$:/config/EditTemplateFields/Visibility/creator":{"text":"hide"},"$:/config/EditTemplateFields/Visibility/created":{"text":"hide"},"$:/config/EditTemplateFields/Visibility/modified":{"text":"hide"},"$:/config/EditTemplateFields/Visibility/modifier":{"text":"hide"},"$:/config/EditTemplateFields/Visibility/type":{"text":"hide"},"$:/config/EditTemplateFields/Visibility/draft.title":{"text":"hide"},"$:/config/EditTemplateFields/Visibility/draft.of":{"text":"hide"},"$:/config/EditTemplateFields/Visibility/revision":{"text":"hide"},"$:/config/EditTemplateFields/Visibility/bag":{"text":"hide"},"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4":{"text":"hide"},"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5":{"text":"hide"},"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6":{"text":"hide"},"$:/config/EditorTypeMappings/image/gif":{"text":"bitmap"},"$:/config/EditorTypeMappings/image/webp":{"text":"bitmap"},"$:/config/EditorTypeMappings/image/heic":{"text":"bitmap"},"$:/config/EditorTypeMappings/image/heif":{"text":"bitmap"},"$:/config/EditorTypeMappings/image/jpeg":{"text":"bitmap"},"$:/config/EditorTypeMappings/image/jpg":{"text":"bitmap"},"$:/config/EditorTypeMappings/image/png":{"text":"bitmap"},"$:/config/EditorTypeMappings/image/x-icon":{"text":"bitmap"},"$:/config/EditorTypeMappings/text/vnd.tiddlywiki":{"text":"text"},"$:/config/Manager/Show":{"text":"tiddlers"},"$:/config/Manager/Filter":{"text":""},"$:/config/Manager/Order":{"text":"forward"},"$:/config/Manager/Sort":{"text":"title"},"$:/config/Manager/System":{"text":"system"},"$:/config/Manager/Tag":{"text":""},"$:/state/popup/manager/item/$:/Manager/ItemMain/RawText":{"text":"hide"},"$:/config/MissingLinks":{"text":"yes"},"$:/config/Navigation/UpdateAddressBar":{"text":"no"},"$:/config/Navigation/UpdateHistory":{"text":"no"},"$:/config/NewImageType":{"text":"jpeg"},"$:/config/OfficialPluginLibrary":{"tags":"$:/tags/PluginLibrary","url":"https://tiddlywiki.com/library/v5.1.24/index.html","caption":"{{$:/language/OfficialPluginLibrary}}","text":"{{$:/language/OfficialPluginLibrary/Hint}}\n"},"$:/config/Navigation/openLinkFromInsideRiver":{"text":"below"},"$:/config/Navigation/openLinkFromOutsideRiver":{"text":"top"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search":{"text":"hide"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all":{"text":"hide"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption":{"text":"hide"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page":{"text":"hide"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all":{"text":"hide"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen":{"text":"hide"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home":{"text":"hide"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh":{"text":"hide"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import":{"text":"hide"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language":{"text":"hide"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager":{"text":"hide"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager":{"text":"hide"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions":{"text":"hide"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal":{"text":"hide"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image":{"text":"hide"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette":{"text":"hide"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview":{"text":"hide"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print":{"text":"hide"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview":{"text":"hide"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp":{"text":"hide"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme":{"text":"hide"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all":{"text":"hide"},"$:/config/Performance/Instrumentation":{"text":"no"},"$:/config/RegisterPluginType/plugin":{"text":"yes"},"$:/config/RegisterPluginType/theme":{"text":"no"},"$:/config/RegisterPluginType/language":{"text":"no"},"$:/config/RegisterPluginType/info":{"text":"yes"},"$:/config/RegisterPluginType/import":{"text":"no"},"$:/config/SaveWikiButton/Template":{"text":"$:/core/save/all"},"$:/config/SaverFilter":{"text":"[all[]] -[prefix[$:/HistoryList]] -[prefix[$:/StoryList]] -[status[pending]plugin-type[import]] -[[$:/isEncrypted]] -[[$:/UploadName]] -[prefix[$:/state/]] -[prefix[$:/temp/]]\n"},"$:/config/Search/AutoFocus":{"text":"true"},"$:/config/Search/MinLength":{"text":"3"},"$:/config/SearchResults/Default":{"text":"$:/core/ui/DefaultSearchResultList"},"$:/config/Server/ExternalFilters/[all[tiddlers]!is[system]sort[title]]":{"text":"yes"},"$:/config/ShortcutInfo/add-field":{"text":"{{$:/language/EditTemplate/Fields/Add/Button/Hint}}"},"$:/config/ShortcutInfo/advanced-search":{"text":"{{$:/language/Buttons/AdvancedSearch/Hint}}"},"$:/config/ShortcutInfo/advanced-search-sidebar":{"text":"{{$:/language/Shortcuts/Input/AdvancedSearch/Hint}}"},"$:/config/ShortcutInfo/bold":{"text":"{{$:/language/Buttons/Bold/Hint}}"},"$:/config/ShortcutInfo/cancel-edit-tiddler":{"text":"{{$:/language/Buttons/Cancel/Hint}}"},"$:/config/ShortcutInfo/change-sidebar-layout":{"text":"{{$:/language/Shortcuts/SidebarLayout/Hint}}"},"$:/config/ShortcutInfo/delete-field":{"text":"{{$:/language/EditTemplate/Field/Remove/Hint}}"},"$:/config/ShortcutInfo/excise":{"text":"{{$:/language/Buttons/Excise/Hint}}"},"$:/config/ShortcutInfo/heading-1":{"text":"{{$:/language/Buttons/Heading1/Hint}}"},"$:/config/ShortcutInfo/heading-2":{"text":"{{$:/language/Buttons/Heading2/Hint}}"},"$:/config/ShortcutInfo/heading-3":{"text":"{{$:/language/Buttons/Heading3/Hint}}"},"$:/config/ShortcutInfo/heading-4":{"text":"{{$:/language/Buttons/Heading4/Hint}}"},"$:/config/ShortcutInfo/heading-5":{"text":"{{$:/language/Buttons/Heading5/Hint}}"},"$:/config/ShortcutInfo/heading-6":{"text":"{{$:/language/Buttons/Heading6/Hint}}"},"$:/config/ShortcutInfo/input-accept":{"text":"{{$:/language/Shortcuts/Input/Accept/Hint}}"},"$:/config/ShortcutInfo/input-accept-variant":{"text":"{{$:/language/Shortcuts/Input/AcceptVariant/Hint}}"},"$:/config/ShortcutInfo/input-cancel":{"text":"{{$:/language/Shortcuts/Input/Cancel/Hint}}"},"$:/config/ShortcutInfo/input-down":{"text":"{{$:/language/Shortcuts/Input/Down/Hint}}"},"$:/config/ShortcutInfo/input-tab-left":{"text":"{{$:/language/Shortcuts/Input/Tab-Left/Hint}}"},"$:/config/ShortcutInfo/input-tab-right":{"text":"{{$:/language/Shortcuts/Input/Tab-Right/Hint}}"},"$:/config/ShortcutInfo/input-up":{"text":"{{$:/language/Shortcuts/Input/Up/Hint}}"},"$:/config/ShortcutInfo/italic":{"text":"{{$:/language/Buttons/Italic/Hint}}"},"$:/config/ShortcutInfo/layout-switcher":{"text":"{{$:/language/LayoutSwitcher/Description}}"},"$:/config/ShortcutInfo/link":{"text":"{{$:/language/Buttons/Link/Hint}}"},"$:/config/ShortcutInfo/linkify":{"text":"{{$:/language/Buttons/Linkify/Hint}}"},"$:/config/ShortcutInfo/list-bullet":{"text":"{{$:/language/Buttons/ListBullet/Hint}}"},"$:/config/ShortcutInfo/list-number":{"text":"{{$:/language/Buttons/ListNumber/Hint}}"},"$:/config/ShortcutInfo/mono-block":{"text":"{{$:/language/Buttons/MonoBlock/Hint}}"},"$:/config/ShortcutInfo/mono-line":{"text":"{{$:/language/Buttons/MonoLine/Hint}}"},"$:/config/ShortcutInfo/new-image":{"text":"{{$:/language/Buttons/NewImage/Hint}}"},"$:/config/ShortcutInfo/new-journal":{"text":"{{$:/language/Buttons/NewJournal/Hint}}"},"$:/config/ShortcutInfo/new-tiddler":{"text":"{{$:/language/Buttons/NewTiddler/Hint}}"},"$:/config/ShortcutInfo/picture":{"text":"{{$:/language/Buttons/Picture/Hint}}"},"$:/config/ShortcutInfo/preview":{"text":"{{$:/language/Buttons/Preview/Hint}}"},"$:/config/ShortcutInfo/quote":{"text":"{{$:/language/Buttons/Quote/Hint}}"},"$:/config/ShortcutInfo/save-tiddler":{"text":"{{$:/language/Buttons/Save/Hint}}"},"$:/config/ShortcutInfo/save-wiki":{"text":"{{$:/language/Buttons/SaveWiki/Hint}}"},"$:/config/ShortcutInfo/sidebar-search":{"text":"{{$:/language/Buttons/SidebarSearch/Hint}}"},"$:/config/ShortcutInfo/stamp":{"text":"{{$:/language/Buttons/Stamp/Hint}}"},"$:/config/ShortcutInfo/strikethrough":{"text":"{{$:/language/Buttons/Strikethrough/Hint}}"},"$:/config/ShortcutInfo/subscript":{"text":"{{$:/language/Buttons/Subscript/Hint}}"},"$:/config/ShortcutInfo/superscript":{"text":"{{$:/language/Buttons/Superscript/Hint}}"},"$:/config/ShortcutInfo/toggle-sidebar":{"text":"{{$:/language/Buttons/ToggleSidebar/Hint}}"},"$:/config/ShortcutInfo/transcludify":{"text":"{{$:/language/Buttons/Transcludify/Hint}}"},"$:/config/ShortcutInfo/underline":{"text":"{{$:/language/Buttons/Underline/Hint}}"},"$:/config/SwitcherTargets/layout":{"text":"$:/snippets/LayoutSwitcher"},"$:/config/SwitcherTargets/language":{"text":"$:/snippets/languageswitcher"},"$:/config/SwitcherTargets/palette":{"text":"$:/core/ui/ControlPanel/Palette"},"$:/config/SwitcherTargets/theme":{"text":"$:/core/ui/ControlPanel/Theme"},"$:/config/SyncFilter":{"text":"[is[tiddler]] -[[$:/core]] -[[$:/library/sjcl.js]] -[prefix[$:/boot/]] -[prefix[$:/HistoryList]] -[status[pending]plugin-type[import]] -[[$:/isEncrypted]] -[prefix[$:/status/]] -[prefix[$:/state/]] -[prefix[$:/temp/]]\n"},"$:/config/SyncSystemTiddlersFromServer":{"text":"no"},"$:/config/Tags/MinLength":{"text":"0"},"$:/config/TextEditor/EditorHeight/Height":{"text":"400px"},"$:/config/TextEditor/EditorHeight/Mode":{"text":"auto"},"$:/config/TiddlerInfo/Default":{"text":"$:/core/ui/TiddlerInfo/Fields"},"$:/config/TiddlerInfo/Mode":{"text":"popup"},"$:/config/Tiddlers/TitleLinks":{"text":"no"},"$:/config/Toolbar/ButtonClass":{"text":"tc-btn-invisible"},"$:/config/Toolbar/Icons":{"text":"yes"},"$:/config/Toolbar/Text":{"text":"no"},"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone":{"text":"hide"},"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others":{"text":"hide"},"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler":{"text":"hide"},"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info":{"text":"hide"},"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions":{"text":"show"},"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here":{"text":"hide"},"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here":{"text":"hide"},"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window":{"text":"hide"},"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink":{"text":"hide"},"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview":{"text":"hide"},"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete":{"text":"hide"},"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold":{"text":"hide"},"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar":{"text":"hide"},"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others":{"text":"hide"},"$:/config/shortcuts-mac/bold":{"text":"meta-B"},"$:/config/shortcuts-mac/input-tab-left":{"text":"ctrl-Left"},"$:/config/shortcuts-mac/input-tab-right":{"text":"ctrl-Right"},"$:/config/shortcuts-mac/italic":{"text":"meta-I"},"$:/config/shortcuts-mac/underline":{"text":"meta-U"},"$:/config/shortcuts-mac/new-image":{"text":"ctrl-I"},"$:/config/shortcuts-mac/new-journal":{"text":"ctrl-J"},"$:/config/shortcuts-mac/new-tiddler":{"text":"ctrl-N"},"$:/config/shortcuts-mac/save-wiki":{"text":"meta-S"},"$:/config/shortcuts-not-mac/bold":{"text":"ctrl-B"},"$:/config/shortcuts-not-mac/italic":{"text":"ctrl-I"},"$:/config/shortcuts-not-mac/underline":{"text":"ctrl-U"},"$:/config/shortcuts-not-mac/new-image":{"text":"alt-I"},"$:/config/shortcuts-not-mac/new-journal":{"text":"alt-J"},"$:/config/shortcuts-not-mac/new-tiddler":{"text":"alt-N"},"$:/config/shortcuts/add-field":{"text":"enter"},"$:/config/shortcuts/advanced-search":{"text":"ctrl-shift-A"},"$:/config/shortcuts/advanced-search-sidebar":{"text":"alt-Enter"},"$:/config/shortcuts/cancel-edit-tiddler":{"text":"escape"},"$:/config/shortcuts/change-sidebar-layout":{"text":"shift-alt-Down"},"$:/config/shortcuts/delete-field":{"text":"shift-alt-D"},"$:/config/shortcuts/excise":{"text":"ctrl-E"},"$:/config/shortcuts/sidebar-search":{"text":"ctrl-shift-F"},"$:/config/shortcuts/heading-1":{"text":"ctrl-1"},"$:/config/shortcuts/heading-2":{"text":"ctrl-2"},"$:/config/shortcuts/heading-3":{"text":"ctrl-3"},"$:/config/shortcuts/heading-4":{"text":"ctrl-4"},"$:/config/shortcuts/heading-5":{"text":"ctrl-5"},"$:/config/shortcuts/heading-6":{"text":"ctrl-6"},"$:/config/shortcuts/input-accept":{"text":"Enter"},"$:/config/shortcuts/input-accept-variant":{"text":"ctrl-Enter"},"$:/config/shortcuts/input-cancel":{"text":"Escape"},"$:/config/shortcuts/input-down":{"text":"Down"},"$:/config/shortcuts/input-tab-left":{"text":"alt-Left"},"$:/config/shortcuts/input-tab-right":{"text":"alt-Right"},"$:/config/shortcuts/input-up":{"text":"Up"},"$:/config/shortcuts/layout-switcher":{"text":"ctrl-shift-L"},"$:/config/shortcuts/link":{"text":"ctrl-L"},"$:/config/shortcuts/linkify":{"text":"alt-shift-L"},"$:/config/shortcuts/list-bullet":{"text":"ctrl-shift-L"},"$:/config/shortcuts/list-number":{"text":"ctrl-shift-N"},"$:/config/shortcuts/mono-block":{"text":"ctrl-shift-M"},"$:/config/shortcuts/mono-line":{"text":"ctrl-M"},"$:/config/shortcuts/picture":{"text":"ctrl-shift-I"},"$:/config/shortcuts/preview":{"text":"alt-P"},"$:/config/shortcuts/quote":{"text":"ctrl-Q"},"$:/config/shortcuts/save-tiddler":{"text":"ctrl+enter"},"$:/config/shortcuts/save-wiki":{"text":"ctrl-S"},"$:/config/shortcuts/stamp":{"text":"ctrl-S"},"$:/config/shortcuts/strikethrough":{"text":"ctrl-T"},"$:/config/shortcuts/subscript":{"text":"ctrl-shift-B"},"$:/config/shortcuts/superscript":{"text":"ctrl-shift-P"},"$:/config/shortcuts/toggle-sidebar":{"text":"alt-shift-S"},"$:/config/shortcuts/transcludify":{"text":"alt-shift-T"},"$:/config/ui/EditTemplate":{"text":"$:/core/ui/EditTemplate"},"$:/config/ui/ViewTemplate":{"text":"$:/core/ui/ViewTemplate"},"$:/config/WikiParserRules/Inline/wikilink":{"text":"enable"},"$:/snippets/currpalettepreview":{"text":"\\define resolve-colour(macrocall)\n\\import $:/core/macros/utils\n\\whitespace trim\n<$wikify name=\"name\" text=\"\"\"$macrocall$\"\"\">\n<<name>>\n</$wikify>\n\\end\n\\define swatchStyle()\nbackground-color: $(swatchColour)$;\n\\end\n\\define swatch-inner()\n<$set name=\"swatchColour\" value={{##$(colourResolved)$}}>\n<$list filter=\"[<swatchColour>!prefix[<<colour ]!suffix[>>]]\" variable=\"ignore\">\n<div class=\"tc-swatch\" style=<<swatchStyle>> title=<<swatchTitle>>/>\n</$list>\n<$list filter=\"[<swatchColour>prefix[<<colour ]suffix[>>]]\" variable=\"ignore\">\n<$wikify name=\"colourResolved\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall=<<swatchColour>>/>\"\"\">\n<<swatch-inner>>\n</$wikify>\n</$list>\n</$set>\n\\end\n\\define swatch()\n<$set name=\"swatchColour\" value={{##$(colour)$}}>\n<$set name=\"swatchTitle\" value=<<colour>>>\n<$list filter=\"[<swatchColour>!prefix[<<colour ]!suffix[>>]]\" variable=\"ignore\">\n<div class=\"tc-swatch\" style=<<swatchStyle>> title=<<swatchTitle>>/>\n</$list>\n<$list filter=\"[<swatchColour>prefix[<<colour ]suffix[>>]]\" variable=\"ignore\">\n<$wikify name=\"colourResolved\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall=<<swatchColour>>/>\"\"\">\n<<swatch-inner>>\n</$wikify>\n</$list>\n</$set>\n</$set>\n\\end\n<div class=\"tc-swatches-horiz\"><$list filter=\"\nforeground\nbackground\nmuted-foreground\nprimary\npage-background\ntab-background\ntiddler-info-background\n\" variable=\"colour\"><<swatch>></$list></div>\n"},"$:/snippets/download-wiki-button":{"text":"\\define lingo-base() $:/language/ControlPanel/Tools/Download/\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-download-file\" $param=\"$:/core/save/all\" filename=\"index.html\"/>\n<<lingo Full/Caption>> {{$:/core/images/save-button}}\n</$button>"},"$:/language":{"text":"$:/languages/en-GB"},"$:/snippets/languageswitcher":{"text":"\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n\n<$linkcatcher to=\"$:/language\">\n<div class=\"tc-chooser tc-language-chooser\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[description]]\">\n<$set name=\"cls\" filter=\"[all[current]field:title{$:/language}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>>\n<$link>\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value=<<currentTiddler>>>\n<$transclude subtiddler=<<flag-title>>>\n<$list filter=\"[all[current]field:title[$:/languages/en-GB]]\">\n<$transclude tiddler=\"$:/languages/en-GB/icon\"/>\n</$list>\n</$transclude>\n</$set>\n</span>\n<$view field=\"description\">\n<$view field=\"name\">\n<$view field=\"title\"/>\n</$view>\n</$view>\n</$link>\n</div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"},"$:/core/macros/CSS":{"tags":"$:/tags/Macro","text":"\\define colour(name)\n<$transclude tiddler={{$:/palette}} index=\"$name$\"><$transclude tiddler=\"$:/palettes/Vanilla\" index=\"$name$\"><$transclude tiddler=\"$:/config/DefaultColourMappings/$name$\"/></$transclude></$transclude>\n\\end\n\n\\define color(name)\n<<colour $name$>>\n\\end\n\n\\define box-shadow(shadow)\n``\n -webkit-box-shadow: $shadow$;\n -moz-box-shadow: $shadow$;\n box-shadow: $shadow$;\n``\n\\end\n\n\\define filter(filter)\n``\n -webkit-filter: $filter$;\n -moz-filter: $filter$;\n filter: $filter$;\n``\n\\end\n\n\\define transition(transition)\n``\n -webkit-transition: $transition$;\n -moz-transition: $transition$;\n transition: $transition$;\n``\n\\end\n\n\\define transform-origin(origin)\n``\n -webkit-transform-origin: $origin$;\n -moz-transform-origin: $origin$;\n transform-origin: $origin$;\n``\n\\end\n\n\\define background-linear-gradient(gradient)\n``\nbackground-image: linear-gradient($gradient$);\nbackground-image: -o-linear-gradient($gradient$);\nbackground-image: -moz-linear-gradient($gradient$);\nbackground-image: -webkit-linear-gradient($gradient$);\nbackground-image: -ms-linear-gradient($gradient$);\n``\n\\end\n\n\\define column-count(columns)\n``\n-moz-column-count: $columns$;\n-webkit-column-count: $columns$;\ncolumn-count: $columns$;\n``\n\\end\n\n\\define datauri(title)\n<$macrocall $name=\"makedatauri\" type={{$title$!!type}} text={{$title$}} _canonical_uri={{$title$!!_canonical_uri}}/>\n\\end\n\n\\define if-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-no-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-background-attachment(text)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" type=\"nomatch\" text=\"\">$text$</$reveal>\n\\end\n"},"$:/core/macros/colour-picker":{"tags":"$:/tags/Macro","text":"\\define colour-picker-update-recent()\n<$action-listops\n\t$tiddler=\"$:/config/ColourPicker/Recent\"\n\t$subfilter=\"$(colour-picker-value)$ [list[$:/config/ColourPicker/Recent]remove[$(colour-picker-value)$]] +[limit[8]]\"\n/>\n\\end\n\n\\define colour-picker-inner(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(colour-picker-value)$\"\"\">\n\n$(colour-picker-update-recent)$\n\n$actions$\n\n<span style=\"display:inline-block; background-color: $(colour-picker-value)$; width: 100%; height: 100%; border-radius: 50%;\"/>\n\n</$button>\n\\end\n\n\\define colour-picker-recent-inner(actions)\n<$set name=\"colour-picker-value\" value=\"$(recentColour)$\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\\end\n\n\\define colour-picker-recent(actions)\n{{$:/language/ColourPicker/Recent}} <$list filter=\"[list[$:/config/ColourPicker/Recent]]\" variable=\"recentColour\">\n<$macrocall $name=\"colour-picker-recent-inner\" actions=\"\"\"$actions$\"\"\"/></$list>\n\\end\n\n\\define colour-picker(actions)\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker-recent\" actions=\"\"\"$actions$\"\"\"/>\n\n---\n\n<$list filter=\"LightPink Pink Crimson LavenderBlush PaleVioletRed HotPink DeepPink MediumVioletRed Orchid Thistle Plum Violet Magenta Fuchsia DarkMagenta Purple MediumOrchid DarkViolet DarkOrchid Indigo BlueViolet MediumPurple MediumSlateBlue SlateBlue DarkSlateBlue Lavender GhostWhite Blue MediumBlue MidnightBlue DarkBlue Navy RoyalBlue CornflowerBlue LightSteelBlue LightSlateGrey SlateGrey DodgerBlue AliceBlue SteelBlue LightSkyBlue SkyBlue DeepSkyBlue LightBlue PowderBlue CadetBlue Azure LightCyan PaleTurquoise Cyan Aqua DarkTurquoise DarkSlateGrey DarkCyan Teal MediumTurquoise LightSeaGreen Turquoise Aquamarine MediumAquamarine MediumSpringGreen MintCream SpringGreen MediumSeaGreen SeaGreen Honeydew LightGreen PaleGreen DarkSeaGreen LimeGreen Lime ForestGreen Green DarkGreen Chartreuse LawnGreen GreenYellow DarkOliveGreen YellowGreen OliveDrab Beige LightGoldenrodYellow Ivory LightYellow Yellow Olive DarkKhaki LemonChiffon PaleGoldenrod Khaki Gold Cornsilk Goldenrod DarkGoldenrod FloralWhite OldLace Wheat Moccasin Orange PapayaWhip BlanchedAlmond NavajoWhite AntiqueWhite Tan BurlyWood Bisque DarkOrange Linen Peru PeachPuff SandyBrown Chocolate SaddleBrown Seashell Sienna LightSalmon Coral OrangeRed DarkSalmon Tomato MistyRose Salmon Snow LightCoral RosyBrown IndianRed Red Brown FireBrick DarkRed Maroon White WhiteSmoke Gainsboro LightGrey Silver DarkGrey Grey DimGrey Black\" variable=\"colour-picker-value\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\n---\n\n<$edit-text tiddler=\"$:/config/ColourPicker/New\" tag=\"input\" default=\"\" placeholder=\"\"/>\n<$edit-text tiddler=\"$:/config/ColourPicker/New\" type=\"color\" tag=\"input\"/>\n<$set name=\"colour-picker-value\" value={{$:/config/ColourPicker/New}}>\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\n</div>\n\n\\end\n"},"$:/core/macros/copy-to-clipboard":{"tags":"$:/tags/Macro","text":"\\define copy-to-clipboard(src,class:\"tc-btn-invisible\",style)\n<$button class=<<__class__>> style=<<__style__>> message=\"tm-copy-to-clipboard\" param=<<__src__>> tooltip={{$:/language/Buttons/CopyToClipboard/Hint}}>\n{{$:/core/images/copy-clipboard}} <$text text={{$:/language/Buttons/CopyToClipboard/Caption}}/>\n</$button>\n\\end\n\n\\define copy-to-clipboard-above-right(src,class:\"tc-btn-invisible\",style)\n<div style=\"position: relative;\">\n<div style=\"position: absolute; bottom: 0; right: 0;\">\n<$macrocall $name=\"copy-to-clipboard\" src=<<__src__>> class=<<__class__>> style=<<__style__>>/>\n</div>\n</div>\n\\end\n\n"},"$:/core/macros/diff":{"tags":"$:/tags/Macro","text":"\\define compareTiddlerText(sourceTiddlerTitle,sourceSubTiddlerTitle,destTiddlerTitle,destSubTiddlerTitle)\n<$set name=\"source\" tiddler=<<__sourceTiddlerTitle__>> subtiddler=<<__sourceSubTiddlerTitle__>>>\n<$set name=\"dest\" tiddler=<<__destTiddlerTitle__>> subtiddler=<<__destSubTiddlerTitle__>>>\n<$diff-text source=<<source>> dest=<<dest>>/>\n</$set>\n</$set>\n\\end\n\n\\define compareTiddlers(sourceTiddlerTitle,sourceSubTiddlerTitle,destTiddlerTitle,destSubTiddlerTitle,exclude)\n<table class=\"tc-diff-tiddlers\">\n<tbody>\n<$set name=\"sourceFields\" filter=\"[<__sourceTiddlerTitle__>fields[]sort[]]\">\n<$set name=\"destFields\" filter=\"[<__destSubTiddlerTitle__>subtiddlerfields<__destTiddlerTitle__>sort[]]\">\n<$list filter=\"[enlist<sourceFields>] [enlist<destFields>] -[enlist<__exclude__>] +[sort[]]\" variable=\"fieldName\">\n<tr>\n<th>\n<$text text=<<fieldName>>/> \n</th>\n<td>\n<$set name=\"source\" tiddler=<<__sourceTiddlerTitle__>> subtiddler=<<__sourceSubTiddlerTitle__>> field=<<fieldName>>>\n<$set name=\"dest\" tiddler=<<__destTiddlerTitle__>> subtiddler=<<__destSubTiddlerTitle__>> field=<<fieldName>>>\n<$diff-text source=<<source>> dest=<<dest>>>\n</$diff-text>\n</$set>\n</$set>\n</td>\n</tr>\n</$list>\n</$set>\n</$set>\n</tbody>\n</table>\n\\end\n"},"$:/core/macros/dumpvariables":{"tags":"$:/tags/Macro","text":"\\define dumpvariables()\n<ul>\n<$list filter=\"[variables[]]\" variable=\"varname\">\n<li>\n<strong><code><$text text=<<varname>>/></code></strong>:<br/>\n<$codeblock code={{{ [<varname>getvariable[]] }}}/>\n</li>\n</$list>\n</ul>\n\\end\n"},"$:/core/macros/export":{"tags":"$:/tags/Macro","text":"\\define exportButtonFilename(baseFilename)\n$baseFilename$$(extension)$\n\\end\n\n\\define exportButton(exportFilter:\"[!is[system]sort[title]]\",lingoBase,baseFilename:\"tiddlers\")\n<$vars hint={{{ [<__lingoBase__>addsuffix[Hint]get[text]] }}} caption={{{ [<__lingoBase__>addsuffix[Caption]get[text]] }}}>\n<span class=\"tc-popup-keep\"><$button popup=<<qualify \"$:/state/popup/export\">> tooltip=<<hint>> aria-label=<<caption>> class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/export-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text=<<caption>>/></span>\n</$list>\n</$button></span></$vars><$reveal state=<<qualify \"$:/state/popup/export\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$set name=\"count\" value={{{ [subfilter<__exportFilter__>count[]] }}}>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Exporter]]\">\n<$list filter=\"[<currentTiddler>has[condition]subfilter{!!condition}limit[1]] ~[<currentTiddler>!has[condition]then[true]]\" variable=\"ignore\">\n<$button class=\"tc-btn-invisible\">\n<$action-sendmessage $message=\"tm-download-file\" $param=<<currentTiddler>> exportFilter=<<__exportFilter__>> filename={{{ [<__baseFilename__>addsuffix{!!extension}] }}}/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/export\">>/>\n<$transclude field=\"description\"/>\n</$button>\n</$list>\n</$list>\n</$set>\n</div>\n</$reveal>\n\\end\n"},"$:/core/macros/image-picker":{"created":"20170715180840889","modified":"20170715180914005","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-picker-thumbnail(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(imageTitle)$\"\"\">\n$actions$\n<$transclude tiddler=<<imageTitle>>/>\n</$button>\n\\end\n\n\\define image-picker-list(filter,actions)\n<$list filter=\"\"\"$filter$\"\"\" variable=\"imageTitle\">\n<$macrocall $name=\"image-picker-thumbnail\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\\end\n\n\\define image-picker(actions,filter:\"[all[shadows+tiddlers]is[image]] -[type[application/pdf]] +[!has[draft.of]$subfilter$sort[title]]\",subfilter:\"\")\n<div class=\"tc-image-chooser\">\n<$vars state-system=<<qualify \"$:/state/image-picker/system\">>>\n<$checkbox tiddler=<<state-system>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"hide\">\n{{$:/language/SystemTiddlers/Include/Prompt}}\n</$checkbox>\n<$reveal state=<<state-system>> type=\"match\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$ +[!is[system]]\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n<$reveal state=<<state-system>> type=\"nomatch\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n</$vars>\n</div>\n\\end\n\n\\define image-picker-include-tagged-images(actions)\n<$macrocall $name=\"image-picker\" filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[!has[draft.of]sort[title]]\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n"},"$:/core/macros/keyboard-driven-input":{"tags":"$:/tags/Macro","text":"\\define change-input-tab(stateTitle,tag,beforeafter,defaultState,actions)\n<$set name=\"tabsList\" filter=\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]]\">\n<$vars currentState={{{ [<__stateTitle__>!is[missing]get[text]] ~[<__defaultState__>] }}} firstTab={{{ [enlist<tabsList>nth[1]] }}} lastTab={{{ [enlist<tabsList>last[]] }}}>\n<$set name=\"nextTab\" value={{{ [all[shadows+tiddlers]tag<__tag__>!has[draft.of]$beforeafter$<currentState>] ~[[$beforeafter$]removeprefix[after]suffix[]addprefix<firstTab>] ~[[$beforeafter$]removeprefix[before]suffix[]addprefix<lastTab>] }}}>\n<$action-setfield $tiddler=<<__stateTitle__>> text=<<nextTab>>/>\n$actions$\n</$set>\n</$vars>\n</$set>\n\\end\n\n\\define keyboard-input-actions()\n<$list filter=\"[<__index__>match[]]\">\n<$action-setfield $tiddler=<<__storeTitle__>> text={{{ [<__tiddler__>get<__field__>] }}}/>\n</$list>\n<$list filter=\"[<__index__>!match[]]\">\n<$action-setfield $tiddler=<<__storeTitle__>> text={{{ [<__tiddler__>getindex<__index__>] }}}/>\n</$list>\n\\end\n\n\\define input-next-actions-inner()\n<$list filter=\"[<nextItem>minlength[1]]\" variable=\"ignore\">\n<$action-setfield $tiddler=<<__selectionStateTitle__>> text=<<nextItem>>/>\n<$list filter=\"[<__index__>match[]]\">\n<$action-setfield $tiddler=<<__tiddler__>> $field=<<__field__>> $value={{{ [<nextItem>] +[splitregexp[(?:.(?!-))+$]] }}}/>\n</$list>\n<$list filter=\"[<__index__>!match[]]\">\n<$action-setfield $tiddler=<<__tiddler__>> $index=<<__index__>> $value={{{ [<nextItem>] +[splitregexp[(?:.(?!-))+$]] }}}/>\n</$list>\n<$action-setfield $tiddler=<<__refreshTitle__>> text=\"yes\"/>\n</$list>\n\\end\n\n\\define input-next-actions(afterOrBefore:\"after\",reverse:\"\")\n<$list filter=\"[<__storeTitle__>get[text]minlength<__filterMinLength__>] [<__filterMinLength__>match[0]] +[limit[1]]\" variable=\"ignore\">\n<$vars userInput={{{ [<__storeTitle__>get[text]] }}} selectedItem={{{ [<__selectionStateTitle__>get[text]] }}}>\n<$set name=\"configTiddler\" value={{{ [subfilter<__configTiddlerFilter__>] }}}>\n<$vars primaryListFilter={{{ [<configTiddler>get<__firstSearchFilterField__>] }}} secondaryListFilter={{{ [<configTiddler>get<__secondSearchFilterField__>] }}}>\n<$set name=\"filteredList\" filter=\"[subfilter<primaryListFilter>addsuffix[-primaryList]] =[subfilter<secondaryListFilter>addsuffix[-secondaryList]]\">\n<$vars nextItem={{{ [enlist<filteredList>$afterOrBefore$<selectedItem>] ~[enlist<filteredList>$reverse$nth[1]] }}} firstItem={{{ [enlist<filteredList>nth[1]] }}} lastItem={{{ [enlist<filteredList>last[]] }}}>\n<$list filter=\"[<selectedItem>match<firstItem>!match<lastItem>]\" variable=\"ignore\">\n<$set name=\"nextItem\" value={{{ [[$afterOrBefore$]match[before]then<userInput>addsuffix[-userInput]] ~[<nextItem>] }}}>\n<<input-next-actions-inner>>\n</$set>\n</$list>\n<$list filter=\"[<selectedItem>match<lastItem>!match<firstItem>]\" variable=\"ignore\">\n<$set name=\"nextItem\" value={{{ [[$afterOrBefore$]match[after]then<userInput>addsuffix[-userInput]] ~[<nextItem>] }}}>\n<<input-next-actions-inner>>\n</$set>\n</$list>\n<$list filter=\"[<selectedItem>match<firstItem>match<lastItem>]\" variable=\"ignore\">\n<$set name=\"nextItem\" value={{{ [<userInput>addsuffix[-userInput]] }}}>\n<<input-next-actions-inner>>\n</$set>\n</$list>\n<$list filter=\"[<selectedItem>!match<firstItem>!match<lastItem>]\" variable=\"ignore\">\n<<input-next-actions-inner>>\n</$list>\n</$vars>\n</$set>\n</$vars>\n</$set>\n</$vars>\n</$list>\n\\end\n\n\\define keyboard-driven-input(tiddler,storeTitle,field:\"text\",index:\"\",tag:\"input\",type,focus:\"\",inputAcceptActions,inputAcceptVariantActions,inputCancelActions,placeholder:\"\",default:\"\",class,focusPopup,rows,minHeight,tabindex,size,autoHeight,filterMinLength:\"0\",refreshTitle,selectionStateTitle,cancelPopups:\"\",configTiddlerFilter,firstSearchFilterField:\"first-search-filter\",secondSearchFilterField:\"second-search-filter\")\n\\whitespace trim\n<$keyboard key=\"((input-accept))\" actions=<<__inputAcceptActions__>>>\n<$keyboard key=\"((input-accept-variant))\" actions=<<__inputAcceptVariantActions__>>>\n<$keyboard key=\"((input-up))\" actions=<<input-next-actions \"before\" \"reverse[]\">>>\n<$keyboard key=\"((input-down))\" actions=<<input-next-actions>>>\n<$keyboard key=\"((input-cancel))\" actions=<<__inputCancelActions__>>>\n<$edit-text tiddler=<<__tiddler__>> field=<<__field__>> index=<<__index__>> \n\t\tinputActions=<<keyboard-input-actions>> tag=<<__tag__>> class=<<__class__>> \n\t\tplaceholder=<<__placeholder__>> default=<<__default__>> focusPopup=<<__focusPopup__>> \n\t\tfocus=<<__focus__>> type=<<__type__>> rows=<<__rows__>> minHeight=<<__minHeight__>> \n\t\ttabindex=<<__tabindex__>> size=<<__size__>> autoHeight=<<__autoHeight__>> \n\t\trefreshTitle=<<__refreshTitle__>> cancelPopups=<<__cancelPopups__>>/>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n\\end\n"},"$:/core/macros/lingo":{"tags":"$:/tags/Macro","text":"\\define lingo-base()\n$:/language/\n\\end\n\n\\define lingo(title)\n{{$(lingo-base)$$title$}}\n\\end\n"},"$:/core/macros/list":{"tags":"$:/tags/Macro","text":"\\define list-links(filter,type:\"ul\",subtype:\"li\",class:\"\",emptyMessage)\n\\whitespace trim\n<$type$ class=\"$class$\">\n<$list filter=\"$filter$\" emptyMessage=<<__emptyMessage__>>>\n<$subtype$>\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$subtype$>\n</$list>\n</$type$>\n\\end\n\n\\define list-links-draggable-drop-actions()\n<$action-listops $tiddler=<<targetTiddler>> $field=<<targetField>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define list-links-draggable(tiddler,field:\"list\",type:\"ul\",subtype:\"li\",class:\"\",itemTemplate)\n\\whitespace trim\n<span class=\"tc-links-draggable-list\">\n<$vars targetTiddler=\"\"\"$tiddler$\"\"\" targetField=\"\"\"$field$\"\"\">\n<$type$ class=\"$class$\">\n<$list filter=\"[list[$tiddler$!!$field$]]\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"\"\"$subtype$\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<div class=\"tc-droppable-placeholder\"/>\n<div>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$transclude>\n</div>\n</$droppable>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"div\" enable=<<tv-enable-drag-and-drop>>>\n<div class=\"tc-droppable-placeholder\">\n{{$:/core/images/blank}}\n</div>\n<div style=\"height:0.5em;\"/>\n</$droppable>\n</$tiddler>\n</$type$>\n</$vars>\n</span>\n\\end\n\n\\define list-tagged-draggable-drop-actions(tag)\n<!-- Save the current ordering of the tiddlers with this tag -->\n<$set name=\"order\" filter=\"[<__tag__>tagging[]]\">\n<!-- Remove any list-after or list-before fields from the tiddlers with this tag -->\n<$list filter=\"[<__tag__>tagging[]]\">\n<$action-deletefield $field=\"list-before\"/>\n<$action-deletefield $field=\"list-after\"/>\n</$list>\n<!-- Save the new order to the Tag Tiddler -->\n<$action-listops $tiddler=<<__tag__>> $field=\"list\" $filter=\"+[enlist<order>] +[insertbefore:currentTiddler<actionTiddler>]\"/>\n<!-- Make sure the newly added item has the right tag -->\n<!-- Removing this line makes dragging tags within the dropdown work as intended -->\n<!--<$action-listops $tiddler=<<actionTiddler>> $tags=<<__tag__>>/>-->\n<!-- Using the following 5 lines as replacement makes dragging titles from outside into the dropdown apply the tag -->\n<$list filter=\"[<actionTiddler>!contains:tags<__tag__>]\">\n<$fieldmangler tiddler=<<actionTiddler>>>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<__tag__>>/>\n</$fieldmangler>\n</$list>\n</$set>\n\\end\n\n\\define list-tagged-draggable(tag,subFilter,emptyMessage,itemTemplate,elementTag:\"div\",storyview:\"\")\n\\whitespace trim\n<span class=\"tc-tagged-draggable-list\">\n<$set name=\"tag\" value=<<__tag__>>>\n<$list filter=\"[<__tag__>tagging[]$subFilter$]\" emptyMessage=<<__emptyMessage__>> storyview=<<__storyview__>>>\n<$elementTag$ class=\"tc-menu-list-item\">\n<$droppable actions=\"\"\"<$macrocall $name=\"list-tagged-draggable-drop-actions\" tag=<<__tag__>>/>\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<$elementTag$ class=\"tc-droppable-placeholder\"/>\n<$elementTag$>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</$transclude>\n</$elementTag$>\n</$droppable>\n</$elementTag$>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=\"\"\"<$macrocall $name=\"list-tagged-draggable-drop-actions\" tag=<<__tag__>>/>\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<$elementTag$ class=\"tc-droppable-placeholder\"/>\n<$elementTag$ style=\"height:0.5em;\">\n</$elementTag$>\n</$droppable>\n</$tiddler>\n</$set>\n</span>\n\\end\n"},"$:/core/macros/tabs":{"tags":"$:/tags/Macro","text":"\\define tabs(tabsList,default,state:\"$:/state/tab\",class,template,buttonTemplate,retain,actions,explicitState)\n<$set name=\"qualifiedState\" value=<<qualify \"$state$\">>>\n<$vars tabsState={{{ [<__explicitState__>minlength[1]] ~[<qualifiedState>] }}}>\n<div class=\"tc-tab-set $class$\">\n<div class=\"tc-tab-buttons $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\" storyview=\"pop\"><$set name=\"save-currentTiddler\" value=<<currentTiddler>>><$tiddler tiddler=<<currentTab>>><$button set=<<tabsState>> setTo=<<currentTab>> default=\"$default$\" selectedClass=\"tc-tab-selected\" tooltip={{!!tooltip}}>\n<$tiddler tiddler=<<save-currentTiddler>>>\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude tiddler=\"$buttonTemplate$\" mode=\"inline\">\n<$transclude tiddler=<<currentTab>> field=\"caption\">\n<$macrocall $name=\"currentTab\" $type=\"text/plain\" $output=\"text/plain\"/>\n</$transclude>\n</$transclude>\n</$set></$tiddler>$actions$</$button></$tiddler></$set></$list>\n</div>\n<div class=\"tc-tab-divider $class$\"/>\n<div class=\"tc-tab-content $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\">\n\n<$reveal type=\"match\" state=<<tabsState>> text=<<currentTab>> default=\"$default$\" retain=\"\"\"$retain$\"\"\">\n\n<$transclude tiddler=\"$template$\" mode=\"block\">\n\n<$transclude tiddler=<<currentTab>> mode=\"block\"/>\n\n</$transclude>\n\n</$reveal>\n\n</$list>\n</div>\n</div>\n</$vars>\n</$set>\n\\end\n"},"$:/core/macros/tag-picker":{"tags":"$:/tags/Macro","first-search-filter":"[tags[]!is[system]search:title<userInput>sort[]]","second-search-filter":"[tags[]is[system]search:title<userInput>sort[]]","text":"\\define get-tagpicker-focus-selector() [data-tiddler-title=\"$(currentTiddlerCSSEscaped)$\"] .tc-add-tag-name input\n\n\\define delete-tag-state-tiddlers() <$action-deletetiddler $filter=\"[<newTagNameTiddler>] [<storeTitle>] [<tagSelectionState>]\"/>\n\n\\define add-tag-actions(actions,tagField:\"tags\")\n<$set name=\"tag\" value={{{ [<__tiddler__>get[text]] }}}>\n<$list filter=\"[<saveTiddler>!contains:$tagField$<tag>!match[]]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"-[<tag>]\"/>\n\"\"\">\n<$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"[<tag>]\"/>\n$actions$\n</$list>\n</$set>\n<<delete-tag-state-tiddlers>>\n<$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n\\end\n\n\\define clear-tags-actions-inner()\n<$list filter=\"[<storeTitle>has[text]] [<newTagNameTiddler>has[text]]\" variable=\"ignore\" emptyMessage=\"\"\"<<cancel-delete-tiddler-actions \"cancel\">>\"\"\">\n<<delete-tag-state-tiddlers>>\n</$list>\n\\end\n\n\\define clear-tags-actions()\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[<newTagNameTiddler>get[text]!match<userInput>]\" emptyMessage=\"\"\"<<clear-tags-actions-inner>>\"\"\">\n<$action-setfield $tiddler=<<newTagNameTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n</$list>\n</$set>\n\\end\n\n\\define tag-picker-inner(actions,tagField:\"tags\")\n\\whitespace trim\n<$vars newTagNameInputTiddlerQualified=<<qualify \"$:/temp/NewTagName/input\">> newTagNameSelectionTiddlerQualified=<<qualify \"$:/temp/NewTagName/selected-item\">> fallbackTarget={{$(palette)$##tag-background}} colourA={{$(palette)$##foreground}} colourB={{$(palette)$##background}}>\n<$vars storeTitle={{{ [<newTagNameInputTiddler>!match[]] ~[<newTagNameInputTiddlerQualified>] }}} tagSelectionState={{{ [<newTagNameSelectionTiddler>!match[]] ~[<newTagNameSelectionTiddlerQualified>] }}}>\n<$vars refreshTitle=<<qualify \"$:/temp/NewTagName/refresh\">> nonSystemTagsFilter=\"[tags[]!is[system]search:title<userInput>sort[]]\" systemTagsFilter=\"[tags[]is[system]search:title<userInput>sort[]]\">\n<div class=\"tc-edit-add-tag\">\n<div>\n<span class=\"tc-add-tag-name tc-small-gap-right\">\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<newTagNameTiddler>> storeTitle=<<storeTitle>> refreshTitle=<<refreshTitle>>\n\t\tselectionStateTitle=<<tagSelectionState>> inputAcceptActions=\"\"\"<$macrocall $name=\"add-tag-actions\" actions=<<__actions__>> tagField=<<__tagField__>>/>\"\"\"\n\t\tinputCancelActions=<<clear-tags-actions>> tag=\"input\" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}}\n\t\tfocusPopup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-edit-texteditor tc-popup-handle\" tabindex=<<tabIndex>> \n\t\tfocus={{{ [{$:/config/AutoFocus}match[tags]then[true]] ~[[false]] }}} filterMinLength={{$:/config/Tags/MinLength}} \n\t\tcancelPopups=<<cancelPopups>> configTiddlerFilter=\"[[$:/core/macros/tag-picker]]\"/>\n</span><$button popup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button><$reveal state=<<storeTitle>> type=\"nomatch\" text=\"\"><$button class=\"tc-btn-invisible tc-small-gap tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Tags/ClearInput/Hint}} aria-label={{$:/language/EditTemplate/Tags/ClearInput/Caption}}>{{$:/core/images/close-button}}<<delete-tag-state-tiddlers>></$button></$reveal><span class=\"tc-add-tag-button tc-small-gap-left\">\n<$set name=\"tag\" value={{{ [<newTagNameTiddler>get[text]] }}}>\n<$button set=<<newTagNameTiddler>> setTo=\"\" class=\"\">\n<$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"[<tag>]\"/>\n$actions$\n<$set name=\"currentTiddlerCSSEscaped\" value={{{ [<saveTiddler>escapecss[]] }}}>\n<<delete-tag-state-tiddlers>><$action-sendmessage $message=\"tm-focus-selector\" $param=<<get-tagpicker-focus-selector>>/>\n</$set>\n{{$:/language/EditTemplate/Tags/Add/Button}}\n</$button>\n</$set>\n</span>\n</div>\n<div class=\"tc-block-dropdown-wrapper\">\n<$reveal state=<<qualify \"$:/state/popup/tags-auto-complete\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-block-tags-dropdown\">\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[<userInput>minlength{$:/config/Tags/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$list filter=<<nonSystemTagsFilter>> variable=\"tag\">\n<$list filter=\"[<tag>addsuffix[-primaryList]] -[<tagSelectionState>get[text]]\" emptyMessage=\"\"\"<$vars button-classes=\"tc-btn-invisible tc-tag-button-selected\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\"\"\">\n<$vars button-classes=\"tc-btn-invisible\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\n</$list>\n</$list></$list>\n<hr>\n<$list filter=\"[<userInput>minlength{$:/config/Tags/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$list filter=<<systemTagsFilter>> variable=\"tag\">\n<$list filter=\"[<tag>addsuffix[-secondaryList]] -[<tagSelectionState>get[text]]\" emptyMessage=\"\"\"<$vars button-classes=\"tc-btn-invisible tc-tag-button-selected\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\"\"\">\n<$vars button-classes=\"tc-btn-invisible\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\n</$list>\n</$list></$list>\n</$set>\n</div>\n</$reveal>\n</div>\n</div>\n</$vars>\n</$vars>\n</$vars>\n\\end\n\\define tag-picker(actions,tagField:\"tags\")\n\\whitespace trim\n<$vars saveTiddler=<<currentTiddler>> palette={{$:/palette}}>\n<$list filter=\"[<newTagNameTiddler>match[]]\" emptyMessage=\"\"\"<$macrocall $name=\"tag-picker-inner\" actions=<<__actions__>> tagField=<<__tagField__>>/>\"\"\">\n<$set name=\"newTagNameTiddler\" value=<<qualify \"$:/temp/NewTagName\">>>\n<$macrocall $name=\"tag-picker-inner\" actions=<<__actions__>> tagField=<<__tagField__>>/>\n</$set>\n</$list>\n</$vars>\n\\end\n"},"$:/core/macros/tag":{"tags":"$:/tags/Macro","text":"\\define tag-pill-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-pill-inner(tag,icon,colour,fallbackTarget,colourA,colourB,element-tag,element-attributes,actions)\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<$element-tag$ $element-attributes$ class=\"tc-tag-label tc-btn-invisible\" style=<<tag-pill-styles>>>\n$actions$<$transclude tiddler=\"\"\"$icon$\"\"\"/><$view tiddler=<<__tag__>> field=\"title\" format=\"text\" />\n</$element-tag$>\n</$vars>\n\\end\n\n\\define tag-pill-body(tag,icon,colour,palette,element-tag,element-attributes,actions)\n<$macrocall $name=\"tag-pill-inner\" tag=<<__tag__>> icon=\"\"\"$icon$\"\"\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n\n\\define tag-pill(tag,element-tag:\"span\",element-attributes:\"\",actions:\"\")\n<span class=\"tc-tag-list-item\" data-tag-title=<<__tag__>>>\n<$macrocall $name=\"tag-pill-body\" tag=<<__tag__>> icon={{{ [<__tag__>get[icon]] }}} colour={{{ [<__tag__>get[color]] }}} palette={{$:/palette}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</span>\n\\end\n\n\\define tag(tag)\n{{$tag$||$:/core/ui/TagTemplate}}\n\\end\n"},"$:/core/macros/thumbnails":{"tags":"$:/tags/Macro","text":"\\define thumbnail(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<$link to=\"\"\"$link$\"\"\"><div class=\"tc-thumbnail-wrapper\">\n<div class=\"tc-thumbnail-image\" style=\"width:$width$px;height:$height$px;\"><$reveal type=\"nomatch\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" style=\"width:$width$px;height:$height$px;\">\n[img[$image$]]\n</$reveal><$reveal type=\"match\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" class=\"tc-thumbnail-background\" style=\"width:$width$px;height:$height$px;background-color:$background-color$;\"></$reveal></div><div class=\"tc-thumbnail-icon\" style=\"fill:$color$;color:$color$;\">\n$icon$\n</div><div class=\"tc-thumbnail-caption\">\n$caption$\n</div>\n</div></$link>\n\\end\n\n\\define thumbnail-right(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<div class=\"tc-thumbnail-right-wrapper\"><<thumbnail \"\"\"$link$\"\"\" \"\"\"$icon$\"\"\" \"\"\"$color$\"\"\" \"\"\"$background-color$\"\"\" \"\"\"$image$\"\"\" \"\"\"$caption$\"\"\" \"\"\"$width$\"\"\" \"\"\"$height$\"\"\">></div>\n\\end\n\n\\define list-thumbnails(filter,width:\"280\",height:\"157\")\n<$list filter=\"\"\"$filter$\"\"\"><$macrocall $name=\"thumbnail\" link={{!!link}} icon={{!!icon}} color={{!!color}} background-color={{!!background-color}} image={{!!image}} caption={{!!caption}} width=\"\"\"$width$\"\"\" height=\"\"\"$height$\"\"\"/></$list>\n\\end\n"},"$:/core/macros/timeline":{"created":"20141212105914482","modified":"20141212110330815","tags":"$:/tags/Macro","text":"\\define timeline-title()\n\\whitespace trim\n<!-- Override this macro with a global macro \n of the same name if you need to change \n how titles are displayed on the timeline \n -->\n<$view field=\"title\"/>\n\\end\n\\define timeline(limit:\"100\",format:\"DDth MMM YYYY\",subfilter:\"\",dateField:\"modified\")\n<div class=\"tc-timeline\">\n<$list filter=\"[!is[system]$subfilter$has[$dateField$]!sort[$dateField$]limit[$limit$]eachday[$dateField$]]\">\n<div class=\"tc-menu-list-item\">\n<$view field=\"$dateField$\" format=\"date\" template=\"$format$\"/>\n<$list filter=\"[sameday:$dateField${!!$dateField$}!is[system]$subfilter$!sort[$dateField$]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}><<timeline-title>></$link>\n</div>\n</$list>\n</div>\n</$list>\n</div>\n\\end\n"},"$:/core/macros/toc":{"tags":"$:/tags/Macro","text":"\\define toc-caption()\n<$set name=\"tv-wikilinks\" value=\"no\">\n <$transclude field=\"caption\">\n <$view field=\"title\"/>\n </$transclude>\n</$set>\n\\end\n\n\\define toc-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<ol class=\"tc-toc\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n <$vars item=<<currentTiddler>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=\"<$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}><$view field='caption'><$view field='title'/></$view></$link>\">\n <<toc-caption>>\n </$list>\n <$macrocall $name=\"toc-body\" tag=<<item>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>\n </li>\n </$set>\n </$set>\n </$vars>\n </$list>\n</ol>\n\\end\n\n\\define toc(tag,sort:\"\",itemClassFilter:\"\")\n<$macrocall $name=\"toc-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> />\n\\end\n\n\\define toc-linked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}>\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n </$button>\n </$reveal>\n <<toc-caption>>\n </$link>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-unlinked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-expandable-empty-message()\n<$macrocall $name=\"toc-linked-expandable-body\" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>\n\\end\n\n\\define toc-expandable(tag,sort:\"\",itemClassFilter:\"\",exclude,path)\n<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n <ol class=\"tc-toc toc-expandable\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=<<toc-expandable-empty-message>> >\n <$macrocall $name=\"toc-unlinked-expandable-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=\"\"\"itemClassFilter\"\"\" exclude=<<excluded>> path=<<path>> />\n </$list>\n </$list>\n </ol>\n </$set>\n</$vars>\n\\end\n\n\\define toc-linked-selective-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\" >\n <li class=<<toc-item-class>>>\n <$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}>\n <$list filter=\"[all[current]tagging[]$sort$limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>\">\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n </$button>\n </$reveal>\n </$list>\n <<toc-caption>>\n </$link>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-unlinked-selective-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$list filter=\"[all[current]tagging[]$sort$limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button> <$view field='caption'><$view field='title'/></$view>\">\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n </$list>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-selective-expandable-empty-message()\n<$macrocall $name=\"toc-linked-selective-expandable-body\" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>\n\\end\n\n\\define toc-selective-expandable(tag,sort:\"\",itemClassFilter,exclude,path)\n<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n <ol class=\"tc-toc toc-selective-expandable\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n <$list filter=\"[all[current]toc-link[no]]\" variable=\"ignore\" emptyMessage=<<toc-selective-expandable-empty-message>> >\n <$macrocall $name=\"toc-unlinked-selective-expandable-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>\n </$list>\n </$list>\n </ol>\n </$set>\n</$vars>\n\\end\n\n\\define toc-tabbed-external-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$tiddler tiddler={{{ [<__selectedTiddler__>get[text]] }}}>\n <div class=\"tc-tabbed-table-of-contents\">\n <$linkcatcher to=<<__selectedTiddler__>>>\n <div class=\"tc-table-of-contents\">\n <$macrocall $name=\"toc-selective-expandable\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=\"[all[current]] -[<__selectedTiddler__>get[text]]\"/>\n </div>\n </$linkcatcher>\n <div class=\"tc-tabbed-table-of-contents-content\">\n <$reveal stateTitle=<<__selectedTiddler__>> type=\"nomatch\" text=\"\">\n <$transclude mode=\"block\" tiddler=<<__template__>>>\n <h1><<toc-caption>></h1>\n <$transclude mode=\"block\">$missingText$</$transclude>\n </$transclude>\n </$reveal>\n <$reveal stateTitle=<<__selectedTiddler__>> type=\"match\" text=\"\">\n $unselectedText$\n </$reveal>\n </div>\n </div>\n</$tiddler>\n\\end\n\n\\define toc-tabbed-internal-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$linkcatcher to=<<__selectedTiddler__>>>\n <$macrocall $name=\"toc-tabbed-external-nav\" tag=<<__tag__>> sort=<<__sort__>> selectedTiddler=<<__selectedTiddler__>> unselectedText=<<__unselectedText__>> missingText=<<__missingText__>> template=<<__template__>>/>\n</$linkcatcher>\n\\end\n\n"},"$:/core/macros/translink":{"tags":"$:/tags/Macro","text":"\\define translink(title,mode:\"block\")\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: black; foreground; white;\">\n<$link to=\"\"\"$title$\"\"\">\n<$text text=\"\"\"$title$\"\"\"/>\n</$link>\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: white; foreground; black;\">\n<$transclude tiddler=\"\"\"$title$\"\"\" mode=\"$mode$\">\n\"<$text text=\"\"\"$title$\"\"\"/>\" is missing\n</$transclude>\n</div>\n</div>\n\\end\n"},"$:/core/macros/tree":{"tags":"$:/tags/Macro","text":"\\define leaf-link(full-title,chunk,separator: \"/\")\n<$link to=<<__full-title__>>><$text text=<<__chunk__>>/></$link>\n\\end\n\n\\define leaf-node(prefix,chunk)\n<li>\n<$list filter=\"[<__prefix__>addsuffix<__chunk__>is[shadow]] [<__prefix__>addsuffix<__chunk__>is[tiddler]]\" variable=\"full-title\">\n<$list filter=\"[<full-title>removeprefix<__prefix__>]\" variable=\"chunk\">\n<span>{{$:/core/images/file}}</span> <$macrocall $name=\"leaf-link\" full-title=<<full-title>> chunk=<<chunk>>/>\n</$list>\n</$list>\n</li>\n\\end\n\n\\define branch-node(prefix,chunk,separator: \"/\")\n<li>\n<$set name=\"reveal-state\" value={{{ [[$:/state/tree/]addsuffix<__prefix__>addsuffix<__chunk__>] }}}>\n<$reveal type=\"nomatch\" stateTitle=<<reveal-state>> text=\"show\">\n<$button setTitle=<<reveal-state>> setTo=\"show\" class=\"tc-btn-invisible\">\n{{$:/core/images/folder}} <$text text=<<__chunk__>>/>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<reveal-state>> text=\"show\">\n<$button setTitle=<<reveal-state>> setTo=\"hide\" class=\"tc-btn-invisible\">\n{{$:/core/images/folder}} <$text text=<<__chunk__>>/>\n</$button>\n</$reveal>\n<span>(<$count filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>removeprefix<__chunk__>] -[<__prefix__>addsuffix<__chunk__>]\"/>)</span>\n<$reveal type=\"match\" stateTitle=<<reveal-state>> text=\"show\">\n<$macrocall $name=\"tree-node\" prefix={{{ [<__prefix__>addsuffix<__chunk__>] }}} separator=<<__separator__>>/>\n</$reveal>\n</$set>\n</li>\n\\end\n\n\\define tree-node(prefix,separator: \"/\")\n<ol>\n<$list filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>splitbefore<__separator__>sort[]!suffix<__separator__>]\" variable=\"chunk\">\n<$macrocall $name=\"leaf-node\" prefix=<<__prefix__>> chunk=<<chunk>> separator=<<__separator__>>/>\n</$list>\n<$list filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>splitbefore<__separator__>sort[]suffix<__separator__>]\" variable=\"chunk\">\n<$macrocall $name=\"branch-node\" prefix=<<__prefix__>> chunk=<<chunk>> separator=<<__separator__>>/>\n</$list>\n</ol>\n\\end\n\n\\define tree(prefix: \"$:/\",separator: \"/\")\n<div class=\"tc-tree\">\n<span><$text text=<<__prefix__>>/></span>\n<div>\n<$macrocall $name=\"tree-node\" prefix=<<__prefix__>> separator=<<__separator__>>/>\n</div>\n</div>\n\\end\n"},"$:/core/macros/utils":{"text":"\\define colour(colour)\n$colour$\n\\end\n"},"$:/snippets/minifocusswitcher":{"text":"<$select tiddler=\"$:/config/AutoFocus\">\n<$list filter=\"title tags text type fields\">\n<option value=<<currentTiddler>>><<currentTiddler>></option>\n</$list>\n</$select>\n"},"$:/snippets/minilanguageswitcher":{"text":"<$select tiddler=\"$:/language\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"description\"><$view field=\"name\"><$view field=\"title\"/></$view></$view></option>\n</$list>\n</$select>"},"$:/snippets/minithemeswitcher":{"text":"\\define lingo-base() $:/language/ControlPanel/Theme/\n<<lingo Prompt>> <$select tiddler=\"$:/theme\">\n<$list filter=\"[plugin-type[theme]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"name\"><$view field=\"title\"/></$view></option>\n</$list>\n</$select>"},"$:/snippets/modules":{"text":"\\define describeModuleType(type)\n{{$:/language/Docs/ModuleTypes/$type$}}\n\\end\n<$list filter=\"[moduletypes[]]\">\n\n!! <$macrocall $name=\"currentTiddler\" $type=\"text/plain\" $output=\"text/plain\"/>\n\n<$macrocall $name=\"describeModuleType\" type=<<currentTiddler>>/>\n\n<ul><$list filter=\"[all[current]modules[]]\"><li><$link><<currentTiddler>></$link>\n</li>\n</$list>\n</ul>\n</$list>\n"},"$:/palette":{"text":"$:/palettes/Vanilla"},"$:/snippets/paletteeditor":{"text":"<$transclude tiddler=\"$:/PaletteManager\"/>\n"},"$:/snippets/palettepreview":{"text":"<$set name=\"currentTiddler\" value={{$:/palette}}>\n{{||$:/snippets/currpalettepreview}}\n</$set>\n"},"$:/snippets/paletteswitcher":{"text":"<$linkcatcher to=\"$:/palette\">\n<div class=\"tc-chooser\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]sort[name]]\"><$set name=\"cls\" filter=\"[all[current]prefix{$:/palette}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' - <$view field=\"description\" format=\"text\"/>{{||$:/snippets/currpalettepreview}}</$link>\n</div></$set>\n</$list>\n</div>\n</$linkcatcher>\n"},"$:/snippets/peek-stylesheets":{"text":"\\define expandable-stylesheets-list()\n<ol>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$vars state=<<qualify \"$:/state/peek-stylesheets/open/\">>>\n<$set name=\"state\" value={{{ [<state>addsuffix<currentTiddler>] }}}>\n<li>\n<$reveal type=\"match\" state=<<state>> text=\"yes\" tag=\"span\">\n<$button set=<<state>> setTo=\"no\" class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=<<state>> text=\"yes\" tag=\"span\">\n<$button set=<<state>> setTo=\"yes\" class=\"tc-btn-invisible\">\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$link>\n<$view field=\"title\"/>\n</$link>\n<$reveal type=\"match\" state=<<state>> text=\"yes\" tag=\"div\">\n<$set name=\"source\" tiddler=<<currentTiddler>>>\n<$wikify name=\"styles\" text=<<source>>>\n<pre>\n<code>\n<$text text=<<styles>>/>\n</code>\n</pre>\n</$wikify>\n</$set>\n</$reveal>\n</li>\n</$set>\n</$vars>\n</$list>\n</ol>\n\\end\n\n\\define stylesheets-list()\n<ol>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<li>\n<$link>\n<$view field=\"title\"/>\n</$link>\n<$set name=\"source\" tiddler=<<currentTiddler>>>\n<$wikify name=\"styles\" text=<<source>>>\n<pre>\n<code>\n<$text text=<<styles>>/>\n</code>\n</pre>\n</$wikify>\n</$set>\n</li>\n</$list>\n</ol>\n\\end\n\n<$vars modeState=<<qualify \"$:/state/peek-stylesheets/mode/\">>>\n\n<$reveal type=\"nomatch\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<$button set=<<modeState>> setTo=\"expanded\" class=\"tc-btn-invisible\">{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Stylesheets/Expand/Caption}}</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<$button set=<<modeState>> setTo=\"restored\" class=\"tc-btn-invisible\">{{$:/core/images/chevron-down}} {{$:/language/ControlPanel/Stylesheets/Restore/Caption}}</$button>\n</$reveal>\n\n<$reveal type=\"nomatch\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<<expandable-stylesheets-list>>\n</$reveal>\n<$reveal type=\"match\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<<stylesheets-list>>\n</$reveal>\n\n</$vars>\n"},"$:/temp/search":{"text":""},"$:/tags/AdvancedSearch":{"list":"[[$:/core/ui/AdvancedSearch/Standard]] [[$:/core/ui/AdvancedSearch/System]] [[$:/core/ui/AdvancedSearch/Shadows]] [[$:/core/ui/AdvancedSearch/Filter]]"},"$:/tags/AdvancedSearch/FilterButton":{"list":"$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown $:/core/ui/AdvancedSearch/Filter/FilterButtons/clear $:/core/ui/AdvancedSearch/Filter/FilterButtons/export $:/core/ui/AdvancedSearch/Filter/FilterButtons/delete"},"$:/tags/ControlPanel":{"list":"$:/core/ui/ControlPanel/Info $:/core/ui/ControlPanel/Appearance $:/core/ui/ControlPanel/Settings $:/core/ui/ControlPanel/Saving $:/core/ui/ControlPanel/Plugins $:/core/ui/ControlPanel/Tools $:/core/ui/ControlPanel/Internals"},"$:/tags/ControlPanel/Info":{"list":"$:/core/ui/ControlPanel/Basics $:/core/ui/ControlPanel/Advanced"},"$:/tags/ControlPanel/Plugins":{"list":"[[$:/core/ui/ControlPanel/Plugins/Installed]] [[$:/core/ui/ControlPanel/Plugins/Add]]"},"$:/tags/EditTemplate":{"list":"[[$:/core/ui/EditTemplate/controls]] [[$:/core/ui/EditTemplate/title]] [[$:/core/ui/EditTemplate/tags]] [[$:/core/ui/EditTemplate/shadow]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/EditTemplate/body]] [[$:/core/ui/EditTemplate/type]] [[$:/core/ui/EditTemplate/fields]]"},"$:/tags/EditToolbar":{"list":"[[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/cancel]] [[$:/core/ui/Buttons/save]]"},"$:/tags/EditorToolbar":{"list":"$:/core/ui/EditorToolbar/paint $:/core/ui/EditorToolbar/opacity $:/core/ui/EditorToolbar/line-width $:/core/ui/EditorToolbar/rotate-left $:/core/ui/EditorToolbar/clear $:/core/ui/EditorToolbar/bold $:/core/ui/EditorToolbar/italic $:/core/ui/EditorToolbar/strikethrough $:/core/ui/EditorToolbar/underline $:/core/ui/EditorToolbar/superscript $:/core/ui/EditorToolbar/subscript $:/core/ui/EditorToolbar/mono-line $:/core/ui/EditorToolbar/mono-block $:/core/ui/EditorToolbar/quote $:/core/ui/EditorToolbar/list-bullet $:/core/ui/EditorToolbar/list-number $:/core/ui/EditorToolbar/heading-1 $:/core/ui/EditorToolbar/heading-2 $:/core/ui/EditorToolbar/heading-3 $:/core/ui/EditorToolbar/heading-4 $:/core/ui/EditorToolbar/heading-5 $:/core/ui/EditorToolbar/heading-6 $:/core/ui/EditorToolbar/link $:/core/ui/EditorToolbar/excise $:/core/ui/EditorToolbar/picture $:/core/ui/EditorToolbar/stamp $:/core/ui/EditorToolbar/size $:/core/ui/EditorToolbar/editor-height $:/core/ui/EditorToolbar/more $:/core/ui/EditorToolbar/preview $:/core/ui/EditorToolbar/preview-type"},"$:/tags/Manager/ItemMain":{"list":"$:/Manager/ItemMain/WikifiedText $:/Manager/ItemMain/RawText $:/Manager/ItemMain/Fields"},"$:/tags/Manager/ItemSidebar":{"list":"$:/Manager/ItemSidebar/Tags $:/Manager/ItemSidebar/Colour $:/Manager/ItemSidebar/Icon $:/Manager/ItemSidebar/Tools"},"$:/tags/MoreSideBar":{"list":"[[$:/core/ui/MoreSideBar/All]] [[$:/core/ui/MoreSideBar/Recent]] [[$:/core/ui/MoreSideBar/Tags]] [[$:/core/ui/MoreSideBar/Missing]] [[$:/core/ui/MoreSideBar/Drafts]] [[$:/core/ui/MoreSideBar/Orphans]] [[$:/core/ui/MoreSideBar/Types]] [[$:/core/ui/MoreSideBar/System]] [[$:/core/ui/MoreSideBar/Shadows]] [[$:/core/ui/MoreSideBar/Explorer]] [[$:/core/ui/MoreSideBar/Plugins]]","text":""},"$:/tags/PageControls":{"list":"[[$:/core/ui/Buttons/home]] [[$:/core/ui/Buttons/close-all]] [[$:/core/ui/Buttons/fold-all]] [[$:/core/ui/Buttons/unfold-all]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/new-tiddler]] [[$:/core/ui/Buttons/new-journal]] [[$:/core/ui/Buttons/new-image]] [[$:/core/ui/Buttons/import]] [[$:/core/ui/Buttons/export-page]] [[$:/core/ui/Buttons/control-panel]] [[$:/core/ui/Buttons/advanced-search]] [[$:/core/ui/Buttons/manager]] [[$:/core/ui/Buttons/tag-manager]] [[$:/core/ui/Buttons/language]] [[$:/core/ui/Buttons/palette]] [[$:/core/ui/Buttons/theme]] [[$:/core/ui/Buttons/storyview]] [[$:/core/ui/Buttons/encryption]] [[$:/core/ui/Buttons/timestamp]] [[$:/core/ui/Buttons/full-screen]] [[$:/core/ui/Buttons/print]] [[$:/core/ui/Buttons/save-wiki]] [[$:/core/ui/Buttons/refresh]] [[$:/core/ui/Buttons/more-page-actions]]"},"$:/tags/PageTemplate":{"list":"[[$:/core/ui/PageTemplate/topleftbar]] [[$:/core/ui/PageTemplate/toprightbar]] [[$:/core/ui/PageTemplate/sidebar]] [[$:/core/ui/PageTemplate/story]] [[$:/core/ui/PageTemplate/alerts]]","text":""},"$:/tags/PluginLibrary":{"list":"$:/config/OfficialPluginLibrary"},"$:/tags/SideBar":{"list":"[[$:/core/ui/SideBar/Open]] [[$:/core/ui/SideBar/Recent]] [[$:/core/ui/SideBar/Tools]] [[$:/core/ui/SideBar/More]]","text":""},"$:/tags/SideBarSegment":{"list":"[[$:/core/ui/SideBarSegments/site-title]] [[$:/core/ui/SideBarSegments/site-subtitle]] [[$:/core/ui/SideBarSegments/page-controls]] [[$:/core/ui/SideBarSegments/search]] [[$:/core/ui/SideBarSegments/tabs]]"},"$:/tags/TiddlerInfo":{"list":"[[$:/core/ui/TiddlerInfo/Tools]] [[$:/core/ui/TiddlerInfo/References]] [[$:/core/ui/TiddlerInfo/Tagging]] [[$:/core/ui/TiddlerInfo/List]] [[$:/core/ui/TiddlerInfo/Listed]] [[$:/core/ui/TiddlerInfo/Fields]]","text":""},"$:/tags/TiddlerInfo/Advanced":{"list":"[[$:/core/ui/TiddlerInfo/Advanced/ShadowInfo]] [[$:/core/ui/TiddlerInfo/Advanced/PluginInfo]]"},"$:/tags/ViewTemplate":{"list":"[[$:/core/ui/ViewTemplate/title]] [[$:/core/ui/ViewTemplate/unfold]] [[$:/core/ui/ViewTemplate/subtitle]] [[$:/core/ui/ViewTemplate/tags]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/ViewTemplate/body]]"},"$:/tags/ViewToolbar":{"list":"[[$:/core/ui/Buttons/more-tiddler-actions]] [[$:/core/ui/Buttons/info]] [[$:/core/ui/Buttons/new-here]] [[$:/core/ui/Buttons/new-journal-here]] [[$:/core/ui/Buttons/clone]] [[$:/core/ui/Buttons/export-tiddler]] [[$:/core/ui/Buttons/edit]] [[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/permalink]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/open-window]] [[$:/core/ui/Buttons/close-others]] [[$:/core/ui/Buttons/close]] [[$:/core/ui/Buttons/fold-others]] [[$:/core/ui/Buttons/fold]]"},"$:/snippets/themeswitcher":{"text":"<$linkcatcher to=\"$:/theme\">\n<div class=\"tc-chooser\"><$list filter=\"[plugin-type[theme]sort[title]]\"><$set name=\"cls\" filter=\"[all[current]field:title{$:/theme}] [[$:/theme]!has[text]addsuffix[s/tiddlywiki/vanilla]field:title<currentTiddler>] +[limit[1]]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' <$view field=\"description\" format=\"text\"/></$link></div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"},"$:/core/wiki/title":{"text":"{{$:/SiteTitle}}\n<$list filter=\"[{$:/SiteSubtitle}trim[]minlength[1]]\" variable=\"ignore\">\n--- {{$:/SiteSubtitle}}\n</$list>"},"$:/view":{"text":"classic"},"$:/snippets/viewswitcher":{"text":"\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<$linkcatcher to=\"$:/view\">\n<div class=\"tc-chooser tc-viewswitcher\">\n<$list filter=\"[storyviews[]]\" variable=\"storyview\">\n<$set name=\"cls\" filter=\"[<storyview>prefix{$:/view}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>>\n<$button tag=\"a\" class=\"tc-tiddlylink tc-btn-invisible\" to=<<storyview>>><$transclude tiddler=<<icon>>/><$text text=<<storyview>>/></$button>\n</div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>\n"}}}
<$list filter="[<targetTiddler>tag[rtl]]" variable="ignore" emptyMessage="""
<$action-listops $tiddler=<<targetTiddler>> $tags="rtl"/>
""">
<$action-listops $tiddler=<<targetTiddler>> $tags="-rtl"/>
</$list>
AAABAAQAQEAAAAEAIAAoQgAARgAAADAwAAABACAAqCUAAG5CAAAgIAAAAQAgAKgQAAAWaAAAEBAAAAEAIABoBAAAvngAACgAAABAAAAAgAAAAAEAIAAAAAAAAEAAABILAAASCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAAHwAAAB8AAQAfAAYAHwAOAR8BHwEgATUCIAJPBiMGcQklCYwMKAymECsQvRQuFNAWLxbeFjAW6BYvFu0TLRPuECoQ6QwnDOAJJQnTBiIGwAQhBKkDIAOPAh8CdAEfAVEBHwE2AR8BHwAfAA0AHwAFAB8AAQAfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHgEAAR4BBwEeAR4BHgFIAR4BdwIeAqcDHgPLBR4F5AcfB/MJIAn6DCEM/g0hDf8PIg//DyIP/xAiEP8PIQ//DyEP/w4hDv8NIA3/DCAM/wsfC/8KHwr+CB8I+wcfB/MGHwbkBR8FywQfBKYDHwNzAh8CQgIfAhgDHwMEByAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcXBwAHFwcCBhkGDQMcAz0DHAOMAxwDzQQbBO4GGwb8BxoH/wgZCP8JGQn/CRkJ/wkZCf8KGQr/ChkK/woZCv8KGQr/CxoL/wsaC/8MGwz/DBsM/w0cDf8NHA3/Dh0O/w4eDv8OHg7/Dh8O/w0gDf8LIAv7CSAJ7AggCMQIIAh3DCEMKxIjEgsUIxQCEyMTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRYFAAcXBwEHFwcHBxcHIQcXB1YGGQarBhkG6wcYB/0HFwf/BxcH/wcXB/8HFgf/BxYH/wgXCP8IFwj/CBcI/wgXCP8IFwj/CRgJ/wkYCf8KGQr/ChkK/wsaC/8LGgv/DBsM/wwbDP8NHA3/Dh0O/w8eD/8QHxD/ECAQ/xAgEP8QIRD7DyIP3RIiEpcUIxRTFSQVIhUkFQgUJBQBDyAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFgYABhYGAQYWBggHFgcmBxYHXAcWB5sHFgfPBhYG8QYWBv4GFQb/BhUG/wYVBv8GFQb/BhUG/wYVBv8GFQb/BhUG/wYVBv8GFQb/BxYH/wcWB/8HFgf/CBcI/wgXCP8JGAn/CRgJ/woZCv8LGgv/DBsM/wwbDP8NHA3/Dh0O/w8eD/8QHxD/ESAR/xIhEvwTIhPtFCMUzhUkFZwVJRVdFiUWJhYlFggVJRUBFCQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFQUABhUGAwYVBhcGFQZPBhUGnAYVBtQGFQbyBhUG/QUUBf8FFAX/BRQF/wQTBP8EEwT/BBME/wQTBP8EEwT/BBME/wQTBP8EEwT/BRQF/wUUBf8FFAX/BRQF/wYVBv8HFgf/BxYH/wgXCP8IFwj/CRgJ/woZCv8LGgv/DBsM/w0cDf8NHA3/Dx4P/w8eD/8RIBH/EiES/xMiE/0UIxTyFSQV1RYlFp0WJhZPFyYXFxYmFgMTIxMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFQUABRUFAwYVBiYGFQaCBhUGzgUUBfIFFAX9BBME/wQTBP8EEwT/AxID/wMSA/8DEgP/AxID/wMSA/8DEgP/AxID/wMSA/8DEgP/AxID/wMSA/8DEgP/BBME/wQTBP8EEwT/BRQF/wUUBf8GFQb/BxYH/wgXCP8IFwj/CRgJ/woZCv8LGgv/DBsM/w0cDf8OHQ7/Dx4P/xAfEP8SIRL/EyIT/xQjFP0VJBXyFiYWzRcmF4EXJhcmFiYWAhUlFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFAUABRQFDAUUBUgFFAWtBRQF8QQTBP0EEwT/AxID/wMSA/8DEgP/AhEC/wIRAv8CEQL/ARAB/wEQAf8BEAH/ARAB/wEQAf8BEAH/ARAB/wEQAf8CEQL/AhEC/wIRAv8CEQL/AxID/wMSA/8EEwT/BBME/wUUBf8GFQb/BxYH/wcWB/8IFwj/CRgJ/woZCv8LGgv/DBsM/w4dDv8PHg//EB8Q/xEgEf8TIhP/FCMU/xUkFf0XJhfxFycXrBgnGEYYJxgLFycXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFAQABBQEDAUUBVcFFAXGBBME9wQTBP8DEgP/AxID/wIRAv8CEQL/ARAB/wEQAf8BEAH/ARAB/wAPAP8ADwD/AA8A/wAPAP8ADwD/AA8A/wAPAP8ADwD/ARAB/wEQAf8BEAH/ARAB/wIRAv8CEQL/AxID/wMSA/8EEwT/BBME/wUUBf8GFQb/BxYH/wgXCP8JGAn/ChkK/wsaC/8MGwz/DRwN/w4dDv8QHxD/ESAR/xMiE/8UIxT/FSQV/xcmF/cYJxjDGCcYVBgoGAsYJxgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTAwAEEwQBBBMEDQQTBFIEEwTTBBME/AMSA/8CEQL/AhEC/wEQAf8BEAH/ARAB/wAPAP8ADwD/AA8A/wEQAf8BEAH/ARAB/wEQAf8BEAH/ARAB/wEQAf8BEAH/ARAB/wEQAf8ADwD/AA8A/wAPAP8BEAH/ARAB/wEQAf8CEQL/AhEC/wMSA/8EEwT/BBME/wUUBf8GFQb/BxYH/wgXCP8KGQr/CxoL/wwbDP8NHA3/Dh0O/xAfEP8RIBH/EyIT/xQjFP8WJRb/FyYX/BgnGNAZKBlOGSgZDBgnGAAXJxcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEEwQABBMECgQTBE4EEwS9AxID+wMSA/8CEQL/ARAB/wEQAf8ADwD/AA8A/wEQAf8BEAH/ARAB/wEQAf8BEAH/ARAB/wIRAv8CEQL/AhEC/wIRAv8CEQL/AhEC/wEQAf8BEAH/ARAB/wEQAf8BEAH/ARAB/wAPAP8ADwD/ARAB/wEQAf8CEQL/AhEC/wMSA/8EEwT/BRQF/wYVBv8HFgf/CBcI/wkYCf8KGQr/DBsM/w0cDf8OHQ7/EB8Q/xEgEf8TIhP/FCMU/xYlFv8XJhf6GSgZuRkoGUkZKBkIGCgYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMDBQMTAzYDEgOtAxID8wIRAv8BEAH/ARAB/wAPAP8ADwD/ARAB/wEQAf8BEAH/ARAB/wIRAv8CEQL/AhEC/wIRAv8DEgP/AxID/wMSA/8DEgP/AxID/wMSA/8CEQL/AhEC/wIRAv8CEQL/AhEC/wEQAf8BEAH/ARAB/wAPAP8ADwD/ARAB/wEQAf8CEQL/AxID/wQTBP8FFAX/BhUG/wcWB/8IFwj/CRgJ/woZCv8MGwz/DRwN/w4dDv8QHxD/ESAR/xMiE/8VJBX/FiUW/xgnGPIZKBmnGSgZMRkoGQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxIDAAMSAxoDEgOAAxID5gIRAv4BEAH/ARAB/wAPAP8BEAH/ARAB/wEQAf8CEQL/AhEC/wIRAv8DEgP/AxID/wMSA/8DEgP/BBME/wQTBP8EEwT/BBME/wQTBP8EEwT/AxID/wMSA/8DEgP/AxID/wIRAv8CEQL/AhEC/wEQAf8BEAH/ARAB/wAPAP8ADwD/ARAB/wIRAv8DEgP/BBME/wQTBP8GFQb/BxYH/wgXCP8JGAn/CxoL/wwbDP8NHA3/Dx4P/xAfEP8SIRL/FCMU/xUkFf8XJhf+GCcY4xkoGXkZKBkXGCcYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhECAAISAgcCEQJSAhECygEQAfoBEAH/AA8A/wEQAf8BEAH/ARAB/wIRAv8CEQL/AxID/wMSA/8DEgP/BBME/wQTBP8EEwX/BRQF/wUUBf8FFAX/BRQF/wUUBf8FFAX/BRQF/wUUBf8FFAX/BBME/wQTBP8EEwT/AxID/wMSA/8CEQL/AhEC/wEQAf8BEAH/ARAB/wAPAP8BEAH/ARAB/wIRAv8DEgP/BBME/wUUBf8HFgf/CBcI/wkYCf8LGgv/DBsM/w4dDv8PHg//ESAR/xIhEv8UIxT/FiUW/xcmF/oZKBnEGSgZSxkoGQYYKBgAAAAAAAAAAAAAAAAAAAAAAAIRAgICEQIgAhECkQEQAe4BEAH/AA8A/wEQAf8BEAH/AhEC/wIRAv8DEgP/AxID/wQTBP8EEwT/BRQF/wUUBf8FFAb/BhUG/wYVBv8GFQb/BhUH/wcWB/8HFgf/BhUH/wYVBv8GFQb/BhUG/wYVBv8FFAX/BRQF/wQTBP8EEwT/AxID/wMSA/8CEQL/AhEC/wEQAf8BEAH/AA8A/wEQAf8BEAH/AhEC/wMSA/8EEwT/BRQF/wcWB/8IFwj/ChkK/wsaC/8MGwz/Dh0O/w8eD/8RIBH/EyIT/xUkFf8WJRb+GCcY6xkoGYkZKBkbGSgZAQAAAAAAAAAAAAAAAAEQAQABEAEIARABSAEQAcMBEAH7AA8A/wEQAf8BEAH/AhEC/wIRAv8DEgP/BBME/wQTBP8FFAX/BRQF/wYVBv8GFQf/BxYH/wcWB/8IFwj/CBcI/wgXCP8IFwj/CBcI/wgXCP8IFwj/CBcI/wcWB/8HFgf/BhUH/wYVBv8FFAX/BRQF/wQTBP8EEwT/AxID/wIRAv8CEQL/ARAB/wEQAf8ADwD/ARAB/wEQAf8CEQL/AxID/wQTBP8GFQb/BxYH/wkYCf8KGQr/CxoL/w0cDf8OHQ7/EB8Q/xIhEv8UIxT/FSQV/xcmF/oYJxi7GSgZQBkoGQYYJxgAAAAAAAAAAAABEAEAARABEgEQAXEBEAHhAA8A/gEQAf8BEAH/AhEC/wMSA/8DEgP/BBME/wUUBf8FFAX/BhUG/wcWB/8HFgf/CBcI/wgXCP8JGAn/CRgJ/wkYCf8JGAr/CRgK/wkYCv8JGAr/CRgJ/wkYCf8JGAn/CBcI/wgXCP8HFgj/BxYH/wYVBv8FFAX/BRQF/wQTBP8DEgP/AxID/wIRAv8BEAH/ARAB/wAPAP8BEAH/ARAB/wIRAv8DEgP/BRQF/wYVBv8IFwj/CRgJ/woZCv8MGwz/DRwN/w8eD/8RIBH/EyIT/xQjFP8WJRb+GCcY2xgnGGcYJxgPGCcYAAAAAAAAAAAAAA8AAQAPACAADwCUAA8A8QEQAf8BEAH/AhEC/wMSA/8DEgP/BBME/wUUBf8GFQb/BhUH/wcWB/8IFwj/CRgJ/wkYCf8JGAr/ChkK/woZCv8KGQv/CxoL/wsaC/8LGgv/CxoL/woZC/8KGQr/ChkK/woZCv8JGAn/CRgJ/wgXCP8HFgf/BxYH/wYVBv8FFAX/BBME/wMSA/8DEgP/AhEC/wEQAf8BEAH/AA8A/wEQAf8CEQL/AxID/wQTBP8FFAX/BhUG/wgXCP8KGQr/CxoL/w0cDf8OHQ7/EB8Q/xIhEv8TIhP/FSQV/xcmF+4YJxiKGCcYGxgnGAEAAAAAAAAAAAAPAAIADwAvAA8AsAEQAfkBEAH/AhEC/wMSA/8DEgP/BBME/wUUBf8GFQb/BxYH/wgXCP8IFwn/CRgJ/woZCv8KGQv/CxoL/wsaDP8MGwz/DBsM/wwbDP8MGw3/DBsN/wwbDP8MGwz/DBsM/wsaDP8LGgv/ChkL/woZCv8JGAn/CRgJ/wgXCP8HFgf/BhUG/wUUBf8EEwT/BBME/wMSA/8CEQL/ARAB/wEQAf8ADwD/ARAB/wIRAv8DEgP/BBME/wYVBv8HFgf/CRgJ/woZCv8MGwz/DRwN/w8eD/8RIBH/EyIT/xQjFP8WJRb3FyYXphgnGCkYJxgCAAAAAAAQAAAADwADAA8AOwEQAcIBEAH9AhEC/wMSA/8DEgP/BBME/wUUBf8GFQb/BxYH/wgXCP8JGAn/ChkK/woZC/8LGgv/DBsM/wwbDP8NHA3/DRwN/w4dDv8OHQ7/Dh0O/w4dDv8OHQ7/Dh0O/w0cDv8NHA3/DBsN/wwbDP8LGgv/ChkL/woZCv8JGAn/CBcI/wcWB/8GFQb/BRQF/wQTBP8DEgP/AxID/wIRAv8BEAH/ARAB/wAPAP8BEAH/AhEC/wMSA/8FFAX/BhUG/wgXCP8JGAn/CxoL/wwbDP8OHQ7/EB8Q/xIhEv8UIxT/FSQV+xcmF7kXJhc1FycXAgAAAAABEAEAARABBAEQAUQBEAHMAhEC/gIRAv8DEgP/BBME/wUUBf8GFQb/BxYH/wgXCP8JGAn/ChkK/wsaC/8LGgz/DBsN/w0cDf8OHQ7/Dh0P/w8eD/8PHhD/Dx4Q/xAfEP8QHxD/EB8Q/w8eEP8PHg//Dh0P/w4dDv8NHA3/DBsN/wsaDP8LGgv/ChkK/wkYCf8IFwj/BxYH/wYVBv8FFAX/BBME/wMSA/8CEQL/AhEC/wEQAf8ADwD/ARAB/wEQAf8DEgP/BBME/wUUBf8HFgf/CBcI/woZCv8MGwz/DRwN/w8eD/8RIBH/EyIT/xUkFf0WJRbEFyYXPBcmFwMXJhcAARABAAEQAQUBEAFGARABzwIRAv8DEgP/BBME/wUUBf8GFQb/BxYH/wgXCP8JGAn/ChkK/wsaC/8MGwz/DRwN/w4dDv8PHg//Dx4Q/xAfEP8RIBH/ESAR/xEgEv8RIBL/ESAS/xEgEv8RIBH/ESAR/xAfEP8PHhD/Dx4P/w4dDv8NHA3/DBsM/wsaC/8KGQr/CRgJ/wgXCP8HFgf/BhUG/wUUBf8EEwT/AxID/wIRAv8BEAH/ARAB/wAPAP8BEAH/AhEC/wMSA/8FFAX/BhUG/wgXCP8JGAn/CxoL/w0cDf8OHQ7/EB8Q/xIhEv8UIxT+FSQVxxYlFj8WJRYEFyYXAAEQAQABEQEEAhECRAIRAswDEgP+BBME/wUUBf8GFQb/BxYH/wgXCP8JGAn/ChkK/wsaC/8MGwz/DRwO/w4dD/8PHhD/EB8R/xEgEf8SIRL/EiET/xMiE/8TIhP/EyIU/xMiFP8TIhP/EyIT/xIhE/8SIRL/ESAR/xAfEf8QHxD/Dh0P/w0cDv8MGw3/CxoL/woZCv8JGAn/CBcI/wcWB/8GFQb/BRQF/wQTBP8DEgP/AhEC/wEQAf8BEAH/AA8A/wEQAf8DEgP/BBME/wUUBf8HFgf/CRgJ/woZCv8MGwz/Dh0O/w8eD/8RIBH/EyIT/hUkFcYVJBU9FiUWAxYlFgACEQIAAhECBAIRAj4CEQLGAxID/gQTBP8FFAX/BhUH/wgXCP8JGAn/ChkK/wsaC/8MGwz/DRwO/w4dD/8QHxD/ESAR/xIhEv8TIhP/EyIU/xQjFP8UIxX/FSQV/xUkFf8VJBX/FSQV/xQjFf8UIxT/EyIU/xMiE/8SIRL/ESAR/xAfEP8PHg//DRwO/wwbDf8LGgv/ChkK/wkYCf8IFwj/BxYH/wUUBv8EEwT/AxID/wIRAv8BEAH/ARAB/wAPAP8BEAH/AhEC/wMSA/8FFAX/BhUG/wgXCP8KGQr/CxoL/w0cDf8PHg//ESAR/xMiE/0UIxTAFSQVORUkFQMVJBUAAhECAAIRAgMDEgM2AxIDuwQTBPwFFAX/BhUG/wcWB/8JGAn/ChkK/wsaC/8MGwz/DRwN/w4dD/8QHxD/ESAR/xIhEv8TIhP/FCMU/xUkFf8VJBb/FiUW/xYlF/8XJhf/FyYX/xYlF/8WJRb/FiUW/xUkFf8UIxT/EyIT/xIhE/8RIBH/EB8Q/w8eD/8NHA7/DBsM/wsaC/8KGQr/CRgJ/wcWB/8GFQb/BRQF/wQTBP8DEgP/AhEC/wEQAf8ADwD/ARAB/wIRAv8DEgP/BBME/wYVBv8IFwj/CRgJ/wsaC/8NHA3/Dh0O/xAfEP8SIRL7EyITthQjFDIVJBUCAAAAAAAAAAADEgMCAxIDLAMSA6wEEwT5BRQF/wcWB/8IFwj/CRgJ/woZC/8LGgz/DRwN/w4dDv8PHhD/ESAR/xIhEv8TIhT/FCMV/xUkFv8WJRf/FyYX/xgnGP8YJxj/GCcZ/xgnGf8YJxj/GCcY/xcmF/8WJRf/FSQW/xQjFf8UIxT/EiES/xEgEf8QHxD/Dh0P/w0cDf8MGwz/ChkL/wkYCf8IFwj/BxYH/wUUBv8EEwT/AxID/wIRAv8BEAH/ARAB/wAPAP8BEAH/AxID/wQTBP8FFAX/BxYH/wkYCf8KGQr/DBsM/w4dDv8QHxD/EiES+BMiE6cUIxQpFCMUAgAAAAAAAAAAAxIDAQQTBCAEEwSWBRQF8wYVBv8HFgf/CBcJ/woZCv8LGgv/DBsM/w4dDv8PHg//EB8R/xIhEv8TIhP/FSQV/xYlFv8XJhf/GCcY/xkoGf8ZKBr/Gika/xopGv8aKRr/Gika/xkoGv8ZKBn/GCcY/xcmF/8WJRb/FSQV/xMiE/8SIRL/ESAR/w8eD/8OHQ7/DBsN/wsaC/8KGQr/CRgJ/wcWB/8GFQb/BRQF/wQTBP8DEgP/AhEC/wEQAf8ADwD/ARAB/wIRAv8EEwT/BRQF/wcWB/8IFwj/ChkK/wwbDP8OHQ7/Dx4P/xEgEfESIRKSEyITHhQjFAEAAAAAAAAAAAQTBAAEEwQWBBMEfgUUBekGFQb/CBcI/wkYCf8KGQr/CxoM/w0cDf8OHQ//EB8Q/xEgEv8TIhP/FCMU/xYlFv8XJhf/GCcY/xkoGf8aKRr/Gyob/xsqHP8cKxz/HCsc/xwrHP8bKhv/Gika/xkoGv8YJxj/FyYX/xYlFv8UIxT/EyIT/xEgEv8QHxD/Dx4P/w0cDf8MGwz/ChkL/wkYCf8IFwj/BhUH/wUUBf8EEwT/AxID/wIRAv8BEAH/AA8A/wEQAf8CEQL/AxID/wUUBf8GFQb/CBcI/woZCv8MGwz/DRwN/w8eD/8RIBHmEiESeRIhEhQTIhMAAAAAABAVEAAZHxkBDBkMDgcWCGEGFQbYBxYH/ggXCP8JGAn/CxoL/wwbDP8NHA7/Dx4P/xEgEf8SIRL/FCMU/xUkFf8XJhf/GCcY/xkoGv8bKhv/HCsc/x0sHf8dLB3/HSwe/x0sHv8dLB3/HSwd/xwrHP8bKhv/GSga/xgnGP8XJhf/FSQV/xQjFP8SIRP/ESAR/w8eEP8OHQ7/DBsM/wsaC/8JGAr/CBcI/wcWB/8FFAb/BBME/wMSA/8CEQL/ARAB/wEQAf8BEAH/AhEC/wMSA/8EEwT/BhUG/wgXCP8JGAn/CxoL/w0cDf8PHg/+ESAR1RMhE10XJBcNGyEbARAVEAAMEQwDGR4ZGCYrJkQhKiGJDxwP2QgXCPwIFwn/ChkK/wsaC/8MGw3/Dh0O/xAfEP8RIBL/EyIT/xQjFf8WJRb/GCcY/xkoGf8aKRv/HCsc/x0sHf8eLR7/Hi0e/x4tHv8eLR7/Hi0e/x4tHv8dLB3/HCsc/xsqG/8ZKBn/GCcY/xYlFv8UIxX/EyIT/xEgEv8QHxD/Dh0P/w0cDf8LGgv/ChkK/wkYCf8HFgf/BhUG/wUUBf8DEgP/AhEC/wEQAf8BEAH/AA8A/wEQAf8DEgP/BBME/wYVBv8HFgf/CRgJ/wsaC/8NHA3/Dx4P+xckF9YmLyaGJywnQxkdGRcMEQwDCAwIKRYbFncoLCihLTMtkRMfE7QIFwjwCRgJ/goZCv8LGgz/DRwN/w4dD/8QHxD/EiES/xMiFP8VJBX/FiUX/xgnGP8aKRr/Gyoc/x0sHf8eLR7/Hi0e/x4tHv8eLR7/Hi0e/x4tHv8eLR7/Hi0e/x0sHf8bKhz/Gika/xgnGf8WJRf/FSQV/xMiFP8SIRL/EB8Q/w8eD/8NHA3/CxoM/woZCv8JGAn/BxYI/wYVBv8FFAX/BBME/wIRAv8BEAH/ARAB/wAPAP8BEAH/AxID/wQTBP8FFAX/BxYH/wkYCf8LGgv/DRwN/g8eD+4aJxqwLzYvkScsJ6EWGhZ1BwwHJwYKBo0UGRTOJysneysyKyYJGAlcCBcI0QkYCfwKGQr/CxoM/w0cDf8PHg//EB8R/xIhEv8UIxT/FSQV/xcmF/8ZKBn/Gikb/xwrHP8dLB3/Hi0e/x4tHv8eLR7/Hi0e/x4tHv8eLR7/Hi0e/x4tHv8dLB7/HCsc/xopG/8ZKBn/FyYX/xUkFv8UIxT/EiES/xAfEf8PHg//DRwO/wwbDP8KGQr/CRgJ/wgXCP8GFQb/BRQF/wQTBP8DEgP/AhEC/wEQAf8ADwD/ARAB/wIRAv8EEwT/BRQF/wcWB/8JGAn/CxoL/wwbDPsOHQ7KER8RVC41LiUnKyd9FBgUzgYKBokFCQXWFBgUySQpJEEhKSEFBxYIKggXCJ8JGAnyChkK/wwbDP8NHA3/Dx4P/xEgEf8SIRL/FCMU/xUkFv8XJhf/GSgZ/xsqG/8cKxz/Hi0e/x4tHv8eLR7/Hi0e/x4tHv8eLR7/Hi0e/x4tHv8eLR7/Hi0e/xwrHf8bKhv/GSgZ/xcmF/8WJRb/FCMU/xIhE/8RIBH/Dx4P/w0cDv8MGwz/ChkL/wkYCf8IFwj/BhUG/wUUBf8EEwT/AxID/wIRAv8BEAH/AA8A/wEQAf8CEQL/BBME/wUUBf8HFgf/CRgJ/wsaC/8MGwzvDh0OlA4dDiQmLSYFJCgkRBQYFMsFCQXQBAkEyhIWEs0hJiFHJismBAgXCAwIFwlZCRgJ0goZCvwMGwz/DRwN/w8eD/8RIBH/EiES/xQjFP8VJBb/FyYX/xkoGf8bKhv/HCsc/x4tHv8eLR7/Hi0e/x4tHv8eLR7/Hi0e/x4tHv8eLR7/Hi0e/x4tHv8cKx3/Gyob/xkoGf8XJhf/FiUW/xQjFP8SIRP/ESAR/w8eD/8NHA7/DBsM/woZC/8JGAn/CBcI/wYVBv8FFAX/BBME/wMSA/8CEQL/ARAB/wAPAP8BEAH/AhEC/wQTBP8FFAX/BxYH/wkYCf8LGgv6DBsMyA0cDUwOHQ4JJismBCElIUoSFhLPBAkExAQIBHwPEw/WHiIegSYrJhYSHhICCRgJHQkYCpEKGQruCxoM/w0cDf8PHg//EB8R/xIhEv8UIxT/FSQV/xcmF/8ZKBn/Gikb/xwrHP8dLB7/Hi0e/x4tHv8eLR7/Hi0e/x4tHv8eLR7/Hi0e/x4tHv8dLB7/HCsc/xopG/8ZKBn/FyYX/xUkFv8UIxT/EiES/xAfEf8PHg//DRwO/wwbDP8KGQr/CRgJ/wgXCP8GFQb/BRQF/wQTBP8DEgP/AhEC/wEQAf8ADwD/ARAB/wIRAv8EEwT/BRQF/wcWB/8JGAn/CxoL5gwbDH4NHA0VGiQaAiYqJhgdIh2EDhMO1QQIBHgDCAMhCg8KihUZFcEgJCBzKi4qMjU7NTcrMyuFFSIV3QwbDP0NHA3/Dh0P/xAfEP8SIRL/EyIU/xUkFf8WJRf/GCcY/xkoGv8bKhv/HCsc/xwrHP8bKxv/Gioa/xkpGf8YKBj/FycX/xYmFv8VJRX/EyQT/xIjEv8QIRD/DyAP/w4fDv8NHg3/DB0M/wscC/8KHAv/ChsK/wkaCf8IGQn/CBgI/wcXB/8GFgb/BRUF/wQUBP8DEwP/AhIC/wERAf8BEAH/AA8A/wEQAf8DEgP/BBME/wUUBf8HFgf/ChgK+holGtMwNzB7Njs2NSkuKTMgJCB2FRkVwQoOCogDCAMfAwgDAwgMCB4QFBBcGh4agiUpJX8vNC98MzczcB0nHWgMGgzGDBsN9w4dDv8PHg//ECAQ/xEgEf8RIRH/ESER/xAhEP8PIA//DR8O/wweDP8KHQr/CBsI/wYaBv8FGQX/BBgE/wMYA/8DFwP/AhcC/wIXAv8CFgL/AhYC/wEWAf8BFgH/ARYB/wEWAf8BFgH/ARYB/wEWAf8BFgH/ARYB/wEVAf8BFQH/ARUB/wEVAf8BFQH/ARQB/wETAf8BEwH/ABIA/wARAP8BEQH/AhIC/wQTBP8GFQb+BxYH7woYCqokLCRcNDg0cS8zL3wlKSV/Gh4aghAUEFsIDAgdAwgDAwMJAwAHDAcADhMOBBYbFgwfIx8SJismDiovKgcTHxMHCxoLUQsbC8gLGwv6ChsK/wkbCf8HGgf/BRkF/wQYBP8CFwL/ARYB/wEWAf8BFgH/ARYB/wEWAf8CFgL/AhcC/wIXAv8CFwL/AhcC/wIXAv8CFwL/AhcC/wIXAv8CFwH/ARYB/wEWAf8BFgH/ARYB/wEWAf8BFgD/ABUA/wAVAP8AFQD/ABUA/wAVAP8AFQD/ABUA/wAVAP8AFQD/ABUA/wAVAP8AFAD/ABQA/wEUAf8CFAL/BBUE9gYWBrQHFwc5FiIWBCovKgcmKiYPHiMeEhYbFgwOEw4EBwwHAAMJAwAAAAAAAAAAABAWEAAVGhUAGiAaAB0jHQABFgEBABUADAIWAkcEFwSyAxcD9gIWAv8BFgH/ARYB/wIWAv8DFwP/BBkE/wYbBv8IHQf/Ch8J/wwiCv8OJQz/DycN/xAoDf8RKg3/ESsN/xEsDP8RLgz/ES4L/xAuCv8PLgn/Di4I/w4tB/8NLAb/DSsG/wwpBf8LJwT/CSUE/wgiA/8GIAL/BR0C/wQbAf8DGgH/AhgA/wEXAP8AFgD/ABYA/wAVAP8AFQD/ABUA/wAVAP8AFQD/ABUA/wEVAfUBFQG4ABUAXQAVABcAFQACHCMcABofGgAUGhQADxYPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQABABUAFwAVAGEAFQC/ABUA7AIXAv0EGQT/BxsG/wogCf8OJgv/Ey8N/xg5D/8dQxD/H00R/yBWEv8iXhP/JWYU/yhtFf8rchb/LncX/y97F/8vfhf/L4AX/y2BFv8qghP/JYIQ/yKBDv8igQ3/JIEO/yiAEP8rfhH/LHwR/yt5EP8qdA7/KG8M/yVoCv8iYQj/HVkG/xdQBP8TSAP/ED8C/w01Af8KKgH/BiAA/wIZAP8BFgD/ABUA/wAVAP8AFQD+ABUA9QAVANYAFQB2ABUAGgAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAABUABgAVAFQAFQDJABUA/AIXAv8HHAf/DiQL/xc2DP8jTw3/LGUP/zN5EP84iRL/NpQT/y+cEf8pog//JaUP/yWpEP8nrxP/LLQY/zK5If8yuiL/L7sh/y68Jf8rvCT/Irsa/xu2Ev8XsQ//GLEP/xu2Ef8juhj/Lbwi/zS9J/83vCb/Obsk/zu5If86tRv/M68T/y2pDv8oowr/JpwI/yaUB/8piwb/LHwF/yhnA/8dTQL/DzEA/wMbAP8AFQD/ABUA/wAVAP8AFQD+ABUAzQAVAEsAFQADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAVABMAFQCPABUA8AAVAP8CFgL/CSEF/yFPBv89iAj/RqUL/z+wDf8xtQz/MLgP/y+6Ev8iug//F7QM/xKtC/8RrAz/EbMP/xW8F/8gwCf/Ir8m/xG5E/8QvBz/EL8l/wu8Gv8HsRL/BqQQ/walDf8GsQz/CroR/xS9JP8gwDb/JsM6/yvDNv8twjH/KL8j/xm9Ef8Rugj/E7MI/xauCP8bsgj/JLcI/ze4Cf9Jswn/SqcF/zmBAv8WOwD/AhYA/wAUAP8AFQD/ABUA/wAVAOcAFQByABUACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAFQAYABUAnwAVAPUAFQD/ABQA/wcfAf8lVwL/RZkE/0m3Ef81wB3/ELUI/wu2BP8UvAj/GLsK/xOzCf8PqQn/DqgJ/w6wDP8SuxL/L8Mx/z28P/8Kogv/Bq8L/w+9Hf8QvRz/C7UU/weqD/8ZuB3/BboH/wG7BP8GvA7/Fb4k/ybBM/8uwzP/L8Ev/znFOv8SshL/AqsB/wSyAv8LrAT/Eq4F/xu4Bf8xuQf/R7EH/0efBP8zcwL/EjMA/wEUAP8AEgD/ABQA/wAVAP8AFQDkABUAcAAVAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAABUACwAVAGYAFQDMABUA9AATAPsBEwD+CB8B/xY+A/89jCz/TLtI/w6bDf8BngD/CrQC/x+uBf8jrAb/H60H/x6tCP8irwr/KbQP/0G7K/9Ru0r/FqMU/w+rB/8ntxb/Lrkb/ya3Fv8vwCv/QcdB/winCP8BowD/ArEC/w+7Cv8suRj/Pbcc/zy1If9u0Gz/IKIg/wGWAf8CqgD/C6QC/xSUAv8YiQL/HnMC/x5TAv8TNgH/CCEA/wEUAP4AEQD9ABIA+gAUAPMAFQDiABUAlAAVAC4AFQACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAEAFQAOABUAQgAVAJIAFADAABMA2wATAO0DGgL1LWgs+mK4Yv0boBr+AJwA/wSXAf8PcAP/FXoE/xWPAv8ZhQP/Hm8E/yRmBf8pagv/JXAX/xBwCv8XcQT/KXMI/y51Cf8ogAv/ZsNe/2rHav8Ikwf/AY0A/wGgAP8GrAH/GYUF/yRjBv8jaQ3/X8Bd/zi0OP8EoAP/AZYA/wNjAf8EQQH/BD4B/wI1Af8BIwD+ABYA+gASAPMAEgDnABMA1wAUALkAFQCPABUAUwAVABUAFQACABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAVAAUAFQAcABUAPQAUAGEAFACFARcBoRhKGLlLn0vMG6wb3AGYAeoFdgX1FHkU/Q+ZDv8DoQH/A5QB/wRgAv8HLAL/CCMD/wchBP8FIgP/ByMD/womA/8LLQP/Cj8E/z6ePP+a2Jr/HZ8d/wCTAP8ApQD/AaMA/wRZAf8HJwP/FlQU/yiqKP8htiH/A5sD/QBfAPgCOgL5ClMK/QV3Bf4AgAD+AGsA+gA/ANcAHQCeABQAeAAUAFkAFQA2ABUAGgAVAAcAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAVAAMAFQAJABUAFAAWACMKMQo2InoiSQ2gDV0CfAJ1IXghrkauRvAgqyD+ApoC/gGlAf4GmQb+BGcE/gFPAfsCLQLqAhYC2QQbBN8JOwnxBl8G/QJmAv4PfA/1j9mP6jK7MvgCrAL9ArMC/wCnAP4BbwHzCD8I20OTQ+4Yoxj+BKIE/ACTANwCPgKmF2AXxiqfKvMPqg/8AaYB/ACpAPYAngC/AHgASwAkABEAFQAHABUAAgAVAAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAABUAAAAVAAAAFQABBCgEAg1gDQQEiAQHEX0REk+5T2d0znTgN6w3/QOPA/wHogf8I7gj/Q6hDv0AlgDzAH4AswEvAV0YSxhvLpEuwxWdFfYCnAL8AZQB1VLCUnYjvyOpFbsV2hmxGfsFogX7AJ0A1Ql8CXpnwWetL7Iv9gKpAuwArACYD3gPPFa+VphbxlvvGaEZ/AGRAfwAogD5ALkA1QC1AFkAnwAGABUAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXkBABWuFQU+wT5FY85jyUa+RvsJpgn7DrMO90zITPgipyL7AKIA8ACyAJwBmAEgTrdOMWLIYqQtrS3wBaYF+ACxALYcrBwTErUSQy3ALaU0vjTyELEQ7gCzAKEDrQMtW8lbNiu9K4ACtAJ1ALUAMxqxGhth0mGMfdN97i6nLvwDkAP8AKEA+gC6ANgAtgBbAKUABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2hDQAftx8WHb0dfBm/Gd4SvRL7A7oD8gi6CLRPyU+fLbwtzwGyAckBtAGFALEAVA21DWA8wjyQKL0owwe3B7YAtgBYI7ojKB+/H5gOug7iDroO9Aa5Br4AtQBLALIACji8OAQauBoPAbMBDQCwAAQQrRALRsdGXILZgs9Nw032CKoI+QC0AO8AvACsALMAMwChAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASpRICRMRESUjGSNsWqBb6AaIB+wCyAOUAtABXGq8aEQu1CzUUuBSKEr4SywK9Au4AvADyALsA3QG2AZ8ArQA9AKUAB0fGR2tOxU7tEKAQ+wChAPoAsgDIALcASgCvAAcUsxQDCLYIDwC1ABQAswALAacBAiSwJBNKxUpbLMUsowW+BbcAuwCQALEAOAClAAcAjQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD6UPA1LIUlRszmzjKacp+wKbAvoAsADlALYAWAGkAQgarxo6Q8tD0i/DL/gEqwT6AKgA+gCyAPgAvADiALYAdgCpABFQyVBsbM1s6iKlIvsBoAH4ALEAxwC2AEsDrQMJK74rJRO6E3oBtAGPALYAXgC0ABUHpQcCFasVCgmvCRwBsAElAKsAFQCgAAQAlwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmiCQFJxUkvadBpqTS6NNwDrQPcALUAqgC2ADUDnQMKLLosc4HcgfU4tzj8ApQC/ACRAPwAngD7ALcA9wC6AK8ArAAlRcRFNmLOYqUtuy3VA7ED1gG3AaMAtgBGB7AHGlTMVHQotyjnAaUB8QCwAMQAuQBKAK8ABwCEAAAAhgAAAIcAAACFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACnAIAPL08CkjGSDskwSRsA7kDbQC3AD0AsgAMApwCCiq9KoOk5aT5WbxZ/QWPBfwAiwD8AJkA+wC0APkAugC8AK0ALDS5NAk8wzwzH78fZhK7EpUMtgyvArMClwO0A1tl0mWeSblJ+AWbBfsArADaALsAYACxAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqyKgEmtyYHELYQEQGzAREAsAAHAKoAAQGaAQUctBxciuCK7YXShf0Xohf8AZkB+wCmAPoAugDzALgAmwCrABwfrR8BHrQeBkDDQClHw0eSIq4i5ASlBOkAsgCfQsZCdFHGUckIrwjaALMApAC4ADMArgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJUAAACZAAAAmQAAAJUAAAAAAAAAlgABEqoSH2PPY6mA2YDvJb8l+gG1AfkAugDzALsAxQCzAFEApwAJAAAAAC60LgFfy18dY8tjjDa1NuoIqQjzALMAnBa5FjE7xDtEB7gHUgC2ADIAsQAJAKUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEAAAyiDAM7uTs0OcA5iQ66DswAuADVALYApgCxAFEAqQASAKEAAQAAAAAmsSYAV8dXClTJVD8pvSmRCLYImwC1AEcCswILHrgeBAO1AwYAsQADAKgAAACZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////////////////////////////////////wAAAAH/////AAAAAP////wAAAAAP///8AAAAAAP///AAAAAAAP//4AAAAAAAf//AAAAAAAA//4AAAAAAAB//AAAAAAAAD/wAAAAAAAAD/AAAAAAAAAP8AAAAAAAAA/gAAAAAAAAB8AAAAAAAAADwAAAAAAAAAOAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAP4AAAAAAAAH/AAAAAAAAAf8AAAAAAAAB/wAAAAAAAAH/AAAAAAAAAf+AAAAAAAAB/8AAAAAAAAf/8AAAAAAAD//4AAAAAAA////gAAAAAP///+AAAAAA////4AAAAAD////gAAAAAf///+AAAAAH////4AAAAH/////wAAAAf/////hACAB//////8AIAH//////////////////////////////////8oAAAAMAAAAGAAAAABACAAAAAAAAAkAAASCwAAEgsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcXBwAGGQYAAxwDAgIdAgkCHgIaAh4CMgMeA1UEHwR1ByEHlgokCrIPJw/KEioS3xQrFOsTKxPxESkR8Q4mDuwKIwrgByEHzQYgBrQFHwWYBB8EdgQfBFQEHwQxBCAEGAUgBQcLIQsBEiMSABMjEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxcHAAcXBwEHFwcFBRoFFwQbBEcDHAOFBBwEtgUbBdwGGwbuCBwI+AocCv0LHQv/DB0M/w0dDf8NHQ3/DR0N/w0eDf8MHgz/DB4M/wseC/0LHwv5Ch8K7wkfCdsJIAmzCSAJfQshCzwQIhATFCQUBRQkFAEUJBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYWBgAGFgYABxYHBAcWBxEHFgcyBhcGaAYYBrIGGAbmBhgG+QcXB/4HFwf/BxcH/wgXCP8IFwj/CBcI/wkYCf8JGAn/ChkK/woZCv8LGgv/DBsM/w0cDf8OHQ7/Dh4O/w4fDv4OIA74DiEO4BAiEKQTIxNiFSQVMhUlFRIWJRYEFiUWABUlFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhUGAAYVBgEGFQYLBhUGKwYVBmMGFQagBhUGzwYVBvEGFQb9BhUG/wUVBf8FFAX/BRQF/wUUBf8GFQb/BhUG/wYVBv8HFgf/BxYH/wgXCP8JGAn/ChkK/wsaC/8MGwz/DRwN/w4dDv8PHw//ECAQ/BIhEu0TIhPNFSQVoRYlFmQWJRYrFiYWCxYmFgEWJhYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFQUABhUGAQYVBhEGFQZLBhUGmAUUBdIFFAXvBRQF+gQTBP4EEwT/BBME/wMSA/8DEgP/AxID/wMSA/8EEwT/BBME/wQTBP8FFAX/BRQF/wYVBv8HFgf/CBcI/wkYCf8KGQr/CxoL/wwbDP8OHQ7/Dx4P/xAfEP4SIRL6FCMU8BUkFdIWJRaYFyYXSxcmFxEXJhcBFSUVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBMEAAQTBAAFFAUEBRQFIwUUBXkFFAXOBBME8wQTBP0DEgP/AxID/wIRAv8CEQL/AhEC/wEQAf8BEAH/ARAB/wEQAf8CEQL/AhEC/wIRAv8DEgP/AxID/wQTBP8EEwT/BRQF/wYVBv8HFgf/CRgJ/woZCv8LGgv/DRwN/w4dDv8QHxD/EiES/xMiE/0VJBXzFiYWzhcmF3gYJxgiGCcYAxgoGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEEwQABBMEAAQTBAUEEwQrBBMEkwQTBOcDEgP9AxID/wIRAv8BEAH/ARAB/wEQAf8BEAH/ARAB/wEQAf8BEAH/ARAB/wEQAf8BEAH/ARAB/wEQAf8BEAH/ARAB/wIRAv8CEQL/AxID/wQTBP8FFAX/BhUG/wgXCP8JGAn/CxoL/wwbDP8OHQ7/Dx4P/xEgEf8TIhP/FSQV/RcmF+YYJxiQGCgYKRkoGQUZKBkAGCgYAAAAAAAAAAAAAAAAAAAAAAADEwMAAxMDBQQTBCcEEwSIAxID6AIRAv4CEQL/ARAB/wEQAf8BEAH/ARAB/wEQAf8BEAH/ARAB/wEQAf8BEAH/ARAB/wEQAf8BEAH/ARAB/wEQAf8BEAH/ARAB/wEQAf8BEAH/AhEC/wIRAv8DEgP/BRQF/wYVBv8HFgf/CRgJ/woZCv8MGwz/Dh0O/xAfEP8RIBH/EyIT/xUkFf4XJhfmGCcYhRkoGSQZKBkEGSgZAAAAAAAAAAAAAAAAAAMSAwADEgMCAxIDGgMSA28DEgPXAhEC/AEQAf8BEAH/ARAB/wEQAf8BEAH/AhEC/wIRAv8CEQL/AhEC/wMSA/8DEgP/AxID/wMSA/8CEQL/AhEC/wIRAv8CEQL/ARAB/wEQAf8BEAH/ARAB/wEQAf8CEQL/AxID/wQTBP8GFQb/BxYH/wkYCf8KGQr/DBsM/w4dDv8QHxD/EiES/xQjFP8WJRb8GCcY1RkoGWoZKBkYGSgZAhgnGAAAAAAAAhECAAISAgADEgMMAhICSwIRArgCEQL2ARAB/wEQAf8BEAH/ARAB/wIRAv8CEQL/AxID/wMSA/8EEwT/BBME/wQTBP8EEwT/BBME/wQTBP8EEwT/BBME/wMSA/8DEgP/AhEC/wIRAv8BEAH/ARAB/wEQAf8BEAH/AhEC/wMSA/8EEwT/BRQF/wcWB/8JGAn/ChkK/wwbDP8OHQ7/EB8Q/xIhEv8UIxT/FyYX9hgnGLQZKBlHGSgZChkoGQAAAAAAAhECAAIRAgMCEQInAhECjAEQAeYBEAH+ARAB/wEQAf8CEQL/AhEC/wMSA/8EEwT/BBME/wUUBf8FFAX/BhUG/wYVBv8GFQb/BhUG/wYVBv8GFQb/BRQF/wUUBf8EEwT/BBME/wMSA/8DEgP/AhEC/wEQAf8BEAH/ARAB/wEQAf8CEQL/BBME/wUUBf8HFgf/CRgJ/wsaC/8NHA3/Dh0O/xEgEf8TIhP/FSQV/hcmF+QYJxiGGSgZIxkoGQMZKBkAARABAAEQAQsBEAFOARABvgEQAfgBEAH/ARAB/wIRAv8DEgP/BBME/wUUBf8FFAb/BhUG/wcWB/8HFgf/CBcI/wgXCP8IFwj/CBcI/wgXCP8IFwj/BxYI/wcWB/8GFQb/BhUG/wUUBf8EEwT/AxID/wIRAv8BEAH/ARAB/wEQAf8BEAH/AhEC/wQTBP8FFAX/BxYH/wkYCf8LGgv/DRwN/w8eD/8RIBH/FCMU/xYlFvYYJxi5GCcYSBkoGQoZKBkAARABAQEQARcBEAFyARAB2wEQAf0BEAH/AhEC/wMSA/8EEwT/BRQF/wYVBv8HFgf/CBcI/wkYCf8JGAn/ChkK/woZCv8KGQr/ChkK/woZCv8KGQr/CRgJ/wkYCf8IFwj/BxYH/wYVBv8FFAb/BBME/wMSA/8CEQL/AhEC/wEQAf8BEAH/ARAB/wMSA/8EEwT/BhUG/wgXCP8KGQr/DBsM/w4dDv8QHxD/EiES/xUkFfwXJhfXGCcYbBgnGBQYJxgBAA8AAgAPACMADwCNARAB6gEQAf4CEQL/AxIE/wUUBf8GFQb/BxYH/wgXCP8JGAn/ChkK/woZC/8LGgv/CxoM/wwbDP8MGwz/DBsM/wwbDP8LGgz/CxoL/woZC/8KGQr/CRgJ/wgXCP8HFgf/BhUG/wUUBf8EEwT/AhEC/wIRAv8BEAH/ARAB/wIRAv8DEgP/BRQF/wcWB/8JGAn/ChkK/w0cDf8PHg//ESAR/xQjFP4WJRbnFyYXhhcnFx8YJxgCARABAwEQASwBEAGfARAB8QIRAv8DEgP/BRQF/wYVBv8HFgf/CBcI/wkYCv8KGQv/CxoM/wwbDP8NHA3/DRwO/w4dDv8OHQ7/Dh0O/w4dDv8OHQ7/DRwN/wwbDP8LGgz/ChkL/wkYCv8IFwn/BxYH/wYVBv8FFAX/AxID/wIRAv8BEAH/ARAB/wEQAf8CEQL/BBME/wUUBf8HFgf/CRgJ/wsaC/8OHQ7/EB8Q/xMiE/8VJBXvFiUWmBcmFygXJhcCARABAwEQATABEAGnAhEC9AMSA/8EEwT/BhUG/wcWB/8IFwn/ChkK/wsaC/8MGwz/DRwN/w4dDv8PHg//EB8Q/xAfEf8QHxH/EB8R/xAfEf8QHxD/Dx4P/w4dD/8NHA7/DBsM/wsaC/8KGQr/CRgJ/wcWB/8GFQb/BRQF/wMSA/8CEQL/ARAB/wEQAf8BEAH/AxID/wQTBP8GFQb/CBcI/woZCv8NHA3/Dx4P/xIhEv8UIxTyFSQVoBYlFiwWJRYDAhECAwIRAjACEQKmAxID9AQTBP8FFAb/BxYH/wkYCf8KGQr/CxoL/w0cDf8OHQ7/Dx4Q/xAfEf8RIBL/EiET/xMiE/8TIhP/EyIT/xMiE/8SIRP/EiES/xEgEf8PHhD/Dh0O/w0cDf8LGgz/ChkK/wkYCf8HFgf/BhUG/wQTBP8DEgP/AhEC/wEQAf8BEAH/AhEC/wMSA/8FFAX/BxYH/wkYCf8MGwz/Dh0O/xEgEf8TIhPyFCMUoRUkFSwVJBUDAhECAwIRAisDEgOfBBME8gUUBf8GFQf/CBcI/woZCv8LGgv/DRwN/w4dDv8QHxD/ESAR/xIhE/8UIxT/FCMV/xUkFf8VJBb/FSQW/xUkFf8UIxX/FCMU/xMiE/8RIBL/EB8Q/w4dD/8NHA3/CxoL/woZCv8IFwj/BxYH/wUUBf8EEwT/AhEC/wEQAf8BEAH/ARAB/wMSA/8FFAX/BxYH/wkYCf8LGgv/DRwN/xAfEP8SIRLwFCMUmxQjFCkVJBUCAxIDAgMSAyUDEgOSBBME7AYVBv4HFgf/CRgJ/wsaC/8MGw3/Dh0O/xAfEP8RIBL/EyIT/xQjFf8WJRb/FyYX/xcmGP8YJxj/GCcY/xcmGP8XJhf/FiUW/xQjFf8TIhP/EiES/xAfEP8OHQ7/DBsN/wsaC/8JGAn/CBcI/wYVBv8EEwT/AxID/wIRAv8BEAH/ARAB/wIRAv8EEwT/BhUG/wgXCP8KGQr/DRwN/w8eD/4RIBHrEyITjxQiFCMUIxQCAxIDAQQTBBwEEwSABRQF5AYVBv4IFwj/ChkK/wwbDP8NHA7/Dx4P/xEgEf8TIhP/FSQV/xYlFv8YJxj/GSgZ/xkoGv8aKRr/Gika/xopGv8ZKBn/GCcY/xYlFv8VJBX/EyIT/xEgEv8PHhD/DRwO/wwbDP8KGQr/CBcI/wcWB/8FFAX/AxID/wIRAv8BEAH/ARAB/wIRAv8DEgP/BRQF/wcWB/8KGQr/DBsM/w8eD/4RIBHiEiESfRMiExsTIhMBCBUIAQYUBhQFFAVqBhUG1gcWB/wJGAn/CxoL/wwbDf8OHQ//EB8R/xIhEv8UIxT/FiUW/xgnGP8ZKBr/Gyob/xwrHP8cKxz/HCsc/xwrHP8bKhv/GSga/xgnGP8WJRb/FCMV/xIhE/8RIBH/Dh0P/wwbDf8LGgv/CRgJ/wcWB/8FFAX/BBME/wIRAv8BEAH/ARAB/wEQAf8DEgP/BRQF/wcWB/8JGAn/DBsM/w4dDvwQHxDUEiESZxMhExMUIhQBFBkUDB4lHjAXIhd3DBoMzwgXCPkJGAr/CxoL/w0cDf8PHhD/ESAS/xMiFP8VJBb/GCcY/xkoGv8bKhv/HSwd/x4tHv8eLR7/Hi0e/x4tHv8dLB3/Gyoc/xkoGv8YJxj/FiUW/xQjFP8SIRL/Dx4Q/w0cDv8LGgz/ChkK/wgXCP8GFQb/BBME/wMSA/8CEQL/ARAB/wEQAf8DEgP/BBME/wYVBv8JGAn/CxoL/w4dDvkUIhTNHigedSEnIS8UGRQMDhIOSx4jHnwiKiKEEB0QswkYCe4KGQr+DBsM/w4dDv8QHxD/EiES/xQjFP8WJRf/GCcZ/xopG/8cKx3/Hi0e/x4tHv8eLR7/Hi0e/x4tHv8eLR7/HCsd/xsqG/8ZKBn/FiUX/xQjFf8SIRL/EB8Q/w4dDv8MGwz/ChkK/wgXCP8GFQb/BRQF/wMSA/8CEQL/ARAB/wEQAf8CEQL/BBME/wYVBv8JGAn/CxoL/g4dDuwXJBewJi0mgh4jHnwOEg5JCg4KqBkeGZAhKCFDCxkLawkYCdAKGQr8DBsM/w4dDv8QHxD/EiET/xQjFf8XJhf/GSgZ/xsqG/8dLB3/Hi0e/x4tHv8eLR7/Hi0e/x4tHv8eLR7/HSwd/xsqG/8ZKBn/FyYX/xUkFf8TIhP/EB8Q/w4dDv8MGwz/ChkK/wgXCf8GFQb/BRQF/wMSA/8CEQL/ARAB/wEQAf8CEQL/BBME/wYVBv8IFwj/CxoL+w0cDcsSIBJlIyojQhkdGZEKDgqlCAwIwRUaFYofJB8jCRgJMAkYCZsKGQrwDBsM/w4dDv8QHxH/EiET/xQjFf8XJhf/GSgZ/xsqHP8dLB3/Hi0e/x4tHv8eLR7/Hi0e/x4tHv8eLR7/HSwd/xsqHP8ZKBr/FyYX/xUkFf8TIhP/EB8R/w4dDv8MGwz/ChkK/wgXCf8GFQf/BRQF/wMSA/8CEQL/ARAB/wEQAf8CEQL/BBME/wYVBv8IFwj+CxoL7QwbDJEPHQ8rICUgIxUZFYwIDAi+CA0IhRMXE50dIh1FHCUcHxEfEmINGw3XDBsM/Q4dDv8QHxD/EiES/xQjFf8XJhf/GSgZ/xsqG/8dLB3/HSwd/x0sHf8dLB3/HCwc/xwsHP8cKxz/Gyob/xkoGf8XJhf/FSQV/xMiE/8RIBH/Dx4P/w0cDf8LGwv/CRkK/wgXCP8GFQb/BRQF/wMSA/8CEQL/ARAB/wEQAf8CEQL/BBME/wYVBv8JGAn8DhwOzxUiFVcgKCAcHSIdRhMXE54IDAiCCQ0JJxEVEWwbHxtyJywnVi00LWMZJRqaDRsN3Q0cDvsPHg//ESAR/xIhEv8TIxP/EyQU/xQkFP8TJBT/EyQT/xEjEf8QIhD/DiEO/w0gDf8MHwz/Cx4L/wodCv8JHAn/CBsI/wcaB/8HGgf/BhkG/wYYBv8FFwX/BRcF/wQWBP8DFQP/AxQD/wITAv8BEgH/AREB/wERAf8CEgL/BBME/wYVBvgKGQrSHSgdkDA1MF8nLCdWGh8acxEVEWsJDQkmCQ4JBBAVEBYZHhkrJSolMS8zLywcJxwvCxoLiAobC+YKGwr+ChsK/wkbCf8IGwj/BxoH/wYaBv8GGgb/BhoG/wYbBf8GGwX/BRsF/wUbBP8FGwT/BRsE/wQbA/8EGwP/BBoC/wMaAv8DGgL/AxkB/wIYAf8CFwH/ARcB/wEWAf8BFgD/ARUA/wAVAP8AFAD/ABQA/wATAP8BFAH/AxQD/QUVBd8HFwd6HigeKy8zLywlKSUxGR4ZKxAUEBYJDgkECxALABEWEQEYHRgCHiQeAwwcDAYBFgEoAxYDhAQXBOAEGAT9BRkF/wYbBf8JHwb/CyQI/w4qCf8QMAr/EjUM/xU7Df8XPg7/GEEO/xlEDv8ZRg7/GEcM/xVHC/8TRgn/E0YI/xNFCP8UQwj/FEEI/xM9B/8ROgX/DzUE/wwxA/8JLAL/BycB/wUiAf8EHQD/AhkA/wEWAP8AFQD/ARUB/QEVAeEBFQGOARUBMQsbCwcfJB8DGB0YAhEWEQELEAsAAAAAAAAAAAARGhEAABUAAQAVAB8AFQCCARUB2AQYA/cJIAf+ES4J/xtBC/8jVQ7/J2QQ/ydwEP8jehD/IoEQ/ySJEv8pjxb/LZUb/y2YHP8rmR3/J5ob/yCYE/8blQ//G5UO/yCXEf8nmRj/LZgc/y+VGv8vkRf/LIsS/yaEDP8fegf/HHEF/xtmBP8bWAP/F0UC/w0uAf8EHAD/ARYA/wAVAPkAFQDhABUAiQAVABsAFQABFhwWAAAAAAAAAAAAAAAAAAAAAAAAFQAAABUABgAVAEoAFQDNARYB+wceA/8aQgb/M3YJ/zuXDf8wpA7/LawP/yiwEP8crw3/FqoM/xauD/8btxf/Jbwk/x+5Hv8XuBv/Fbwg/w61Fv8LqxH/DKwO/w21D/8Wux3/JL4w/yy/Mv8vviz/Kbof/xu1Dv8Wrgj/GakH/yCqB/8wqAj/Pp0H/zV7A/8XPwH/BBsA/wAVAP8AFQD7ABUAwgAVADgAFQADAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAABUABwAVAE8AFQDNABUA9wUbAf0YQQL+NX8K/z+vH/8dshL/DrIG/xa2CP8YsAj/FKoI/xSsCv8dtRX/Mrsu/yStI/8Nqw7/Frga/xe2GP8YtBv/F7Ya/we0Cf8Gtwv/GLwf/yy9K/82vjD/NL0y/xGsEP8FqwL/DacD/xelBP8noAX/No8F/y1pAv8SNQD+AxcA/QATAPoAFQDvABUArgAVADEAFQACAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAABUAAgAVAB0AFQBsABUAsgEUANMEGwHlF0AP70CSOvYkpSP6Bp4E/A+XBP4ZlAb/GJwF/xuRBv8jhgv/L4Yc/yGCGv8TgQn/JIkO/yqSFf9AsDb/PLc6/w6fDf8CpQH/D6oH/yWOD/82kiL/RLE+/xulGv8ClQH+CHoC/gxoAv8OWwH/DT8B/QciAPICFQDlABMA1AAUALsAFQCOABUARAAVAAwAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAVAAIAFQAUABUAOwAUAGEBFQCADCwMmjV8NbAkoyTDB5EH1hSEEu8WkRH9CpgD/wqAAv8OVwT/D0IG/Qs5BvgLOAT3EkUG/BdbC/49kjj9U7dS+xmiGf0CpAH/BJcB/g5bBvohaRn6KqIo/hOmE/oCcwLqCVgI8AtqCvwDcgL9AGEA8gA5AL0AGQCEABQAYwAUAEMAFQAgABUABwAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAFQABABUABgAVAA8AFQAcByYHKiRpJDkYmRhLFYwVbT6jPsAuqS33CJsH/QqcCv4KgQr9A2AD7QI5AsEJLAi1FF0S5Ap2CfofkB7mRrhGzx+0H+ALrwv5A5sD9gpwCtQshSvSIaYg8QekB90JcAmcK4UrxCOfI/UGmgb8AJsA7ACQAJMAWQAuABoAEAAVAAcAFQACABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAABUAAAAVAAAAFQABBCEEAxRaFAUPjQ8JMqkyJVjEWJNBuUHuD6YP+yG0IfkgqiD5BpoG2gGCAXckciRTO6Y7vRSiFPAJpAm6IbQhayK8IpIluSXkC6sL4AigCIc3rDdqI7QjmAauBn4eoB5GXcNdoUa3RvENmw37AKUA7wC1AJMArgAfAHgAAQAVAAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAh8CAAtmCwAsuiwFLL8sOSS9JK4WuRbxB7cH4SW+JaMruyuwDLQMsgOzA4EMtgxzLL4spRe3F68ItAhtI70jXxq6GrUQthDrBrYGqgKzAjQnuCcQGrgaGwWzBRUsuywWYs9ibFjIWM8ZshnpAbIBzwC4AGcAsgAQAKIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGlEQBEw0QNUshSbTa3NuAKpQr1AK8AwQS0BDUkuyRCKMAophG5EeQCswLzALYA2wC3AIYcuRw7UsdSgTOzM+MIpAj0ALEApwO3Ay0ivCIbELYQPgKzAkECtAIXN703Gi/DL1APvg9vAbkBUACxABUApAABAI0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2kDQBIxEgJX8tfU0S9RLgQqxDOALEAlgi0CClKx0peVMpU0yKtIvkDmwP7AKkA9QC4ALsNuQ1SV8lXYD67PrQOrQ7SArQCnAy4DEM4wThbH7QfsAWtBbUAtABMArUCDAquCggDrwMNAKwABwCjAAEAlwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAihCABCwUIDVMlUHjrCOlMPtg9kAbUBPRGzERZYy1hpdNF03TeuN/sGlQb8AKQA+AC3AMYDtwNRPsI+JjbBNlIfux+VELIQswuyC4Y8wTyML7Uv1QirCNcAtABhALcADgCtAAAAhwAAAIYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ujgAPsE+BCa+Jg4LuQsSAbUBCRSuFAhSyFJId9R3v0jASPQLqgv6ALEA7QC5AKMAtQA0F7MXCEDEQBpKxEp5I7Ej2wetB7olvCV3L7svhQqxCoMAtQAyALUABgCuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqsioAJrYmABO1EwAFswUBALAAABGpEQFDv0MXU8dTYy3ALbgHtwfaALYAqAC0AEoArwAPB6kHAVbIVghTx1NGJLgkowayBoMMtwwwI7wjGwm2CRkAtAAIALIAAQCqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD///////8AAP///////wAA/8AAAAP/AAD/gAAAAf8AAP4AAAAAfwAA/AAAAAA/AAD4AAAAAB8AAOAAAAAADwAAwAAAAAADAADAAAAAAAMAAIAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAwAAwAAAAAAHAADAAAAAAAcAAMAAAAAABwAA4AAAAAAPAADwAAAAAB8AAPgAAAAAPwAA/wAAAAD/AAD/wAAAAP8AAP/AAAAB/wAA/8AAAAf/AAD/4AAAH/8AAP/gAAAf/wAA////////AAD///////8AAP///////wAAKAAAACAAAABAAAAAAQAgAAAAAAAAEAAAEgsAABILAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFwcABxcHAQQbBBADHAMzBBwEagUdBZQIHwi9DCIM1hAmEOwRJhH0DyQP9QwiDO0JIAnYCB8IvwcfB5UHIAdoCCAILwwhDA0UJBQBFCQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFgYABhYGAAcWBwYHFgcbBhgGYwUZBbMGGQboBxgH9wgZCP0JGQn/ChkK/woaCv8LGgv/CxsL/wwcDP8MHQz9DR8N9w0gDecOIQ6rESIRWxUkFRsVJRUGFiUWABUlFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYVBgIGFQYYBhUGYgYVBqoFFQXlBRUF+wUUBf8FFAX/BRQF/wUUBf8FFAX/BhUG/wcWB/8IFwj/ChkK/wsaC/8NHA3/Dh0O/xAgEPoSIRLkFCMUqhYlFmMXJhcYFyYXAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQTBAAFFAUCBRQFLQUUBYkFFAXdBBME9gMSA/4DEgP/AhEC/wIRAv8CEQL/AhEC/wMSA/8DEgP/BBME/wUUBf8GFQb/CBcI/woZCv8MGwz/Dh0O/xAfEP4TIhP2FSQV3RcmF4kXJxcsGCcYAhgoGAAAAAAAAAAAAAAAAAADEwMABBMEBwQTBDcEEwTEAxID+QIRAv8BEAH/ARAB/wEQAf8BEAH/ARAB/wEQAf8BEAH/ARAB/wEQAf8BEAH/AhEC/wMSA/8EEwT/BhUG/wgXCP8KGQr/DRwN/w8eD/8SIRL/FSQV+BcmF8MYKBg1GSgZBhkoGQAAAAAAAxIDAAMSAwEDEgMqAxIDmwIRAvkBEAH/ARAB/wEQAf8BEAH/AhEC/wIRAv8CEQL/AhEC/wIRAv8CEQL/ARAB/wEQAf8BEAH/ARAB/wIRAv8EEwT/BhUG/wgXCP8KGQr/DRwN/xAfEP8TIhP/FiUW+BgnGJgZKBknGSgZAQAAAAACEQIAAhECDgIRAoMBEAHoARAB/wEQAf8CEQL/AxID/wMSBP8EEwT/BRQF/wUUBf8FFAX/BRQF/wQTBP8EEwT/AxID/wIRAv8BEAH/ARAB/wIRAv8DEgP/BRQF/wcWB/8LGgv/DRwN/xAfEP8TIhP/FyYX5xgnGH4ZKBkNGSgZAAEQAQMBEAEuARABxAEQAfoBEAH/AhEC/wQTBP8FFAX/BhUG/wcWB/8HFgf/BxYI/wcWCP8HFgf/BxYH/wYVBv8FFAX/BBME/wIRAv8BEAH/ARAB/wEQAf8DEgP/BRQF/wgXCP8LGgv/Dh0O/xEgEf8VJBX6FyYXwBgnGCoZKBkDABAACgAQAFsBEAHqAhEC/gMSA/8EEwX/BhUG/wcWCP8JGAn/ChkK/woZC/8LGgv/CxoL/woZC/8KGQr/CRgJ/wcWCP8GFQb/BBMF/wMSA/8CEQL/ARAB/wEQAf8DEgP/BhUG/wkYCf8MGwz/Dx4P/xMiE/4WJRbnFyYXVhgnGAkBEAEPARABdAEQAfQDEgP/BRQF/wYVBv8IFwj/CRgK/wsaC/8MGwz/DRwN/w0cDv8NHA7/DRwN/wwbDP8LGgv/ChkK/wgXCP8GFQb/BRQF/wMSA/8BEAH/ARAB/wIRAv8FFAX/BxYH/woZCv8NHA3/ESAR/xQjFPIWJRZuFyYXDgEQARICEQJ/AxID+AQTBP8HFgf/CRgJ/wsaC/8MGw3/Dh0P/xAfEP8RIBH/ESAS/xEgEv8RIBH/EB8Q/w4dD/8MGw3/CxoL/wkYCf8HFgf/BBMF/wMSA/8BEAH/ARAB/wMSA/8FFAX/CRgJ/wwbDP8QHxD/EyIT9hUkFXoWJRYRAhECEQISAnsEEwT3BhUG/wgXCP8KGQr/DRwN/w8eD/8RIBH/EiET/xQjFP8UIxX/FCMV/xQjFP8TIhP/ESAR/w8eD/8NHA3/ChkK/wgXCf8GFQb/BBME/wIRAv8BEAH/AhEC/wQTBP8IFwj/ChkK/w8eD/8SIRL1FCMUdhUkFRADEgMMBBMEaQUUBfAHFgf/ChkK/wwbDP8PHg//ESAS/xQjFP8WJRb/FyYY/xgnGf8YJxn/GCcY/xYlFv8UIxT/ESAS/w8eD/8MGwz/ChkK/wcWB/8FFAX/AxID/wEQAf8BEAH/AxID/wYVBv8JGAn/DRwN/xAfEO8TIhNmEyITDAUUBQgFFAVTBhUG5ggXCP4LGgv/DRwO/xEgEf8TIhP/FiUW/xgnGP8aKRv/Gyoc/xsqHP8aKRv/GCcZ/xYlF/8TIhT/ESAR/w0cDv8LGgv/CBcI/wYVBv8DEgP/AhEC/wEQAf8DEgP/BhUG/wkYCf8NHA3+EB8Q5RIhElETIhMIFxwXLhwkHGoLGQvWCRgJ/AwbDP8PHg//EiES/xUkFf8YJxn/Gyob/x0sHf8eLR7/Hi0e/x0sHf8bKhv/GSgZ/xUkFf8SIRP/Dx4P/wwbDP8JGAn/BxYH/wQTBP8CEQL/ARAB/wIRAv8FFAX/CBcI/wwbDPsSIBLUICkgaRgdGC4QFBCJHyUfaQsZC6AJGArxDBsN/w8eEP8TIhP/FiUW/xkoGv8cKxz/Hi0e/x4tHv8eLR7/Hi0e/xwrHP8aKRr/FiUW/xMiE/8PHhD/DRwN/wkYCv8HFgf/BBME/wIRAv8BEAH/AhEC/wUUBf8IFwj/DBsM7xEfEZsgJiBoEBQQhwwQDKQYHRhPDBoMSgsaC8gNHA3+Dx4Q/xMiE/8WJRb/Gika/xwrHf8eLR7/Hi0e/x0tHf8dLB3/HCsc/xkoGf8VJRb/EyIT/w8eD/8MGw3/CRgK/wcWB/8EEwT/AhEC/wEQAf8CEQL/BRQF/wgXCP4MGwzBEB4QQxgdGFAMEAyiDRENWBgcGGslLCVOGCQYlQ0cDe8PHg/+EiES/xQjFP8VJRb/FicX/xYmFv8UJRT/EyQT/xIjEv8QIRD/DiAO/wweDP8KHAv/CRoJ/wcZCP8GFwb/BRYF/wMUA/8CEgL/ARAB/wIRAv8FFAX9CBcI6RsmG40nLSdLFxwXbA0RDVcOEw4HGBwYGScsJyEaJhooCBkIpQgaCPUIGwj/CBwI/wkeB/8JIQf/CiQI/wsmCP8MKAj/DCkH/wsqBv8JKQX/CSkE/wkoBP8IJgP/ByMD/wYgAv8EHgH/AhsB/wIYAP8BFQD/ARQB/wMVA/MEFgSgGiYaKScsJyEXHBcYDhMOBxAVEAAXHBcBAxcDCQAVAEoCFwLNBhsF+Q8rCP8YPgv/HlIN/x1eDv8dag//IXIS/yZ6F/8lfRj/IH4U/xp8Dv8Zew3/H3wR/yV6Ff8ldRL/IWwM/xpjB/8UVQP/FEgC/w4xAf8FHgD/ARUA+gAVANQAFQBOBBcECBccFwEQFRAAAAAAAAAVAAAAFQAdABUAogIYAfsTNQT+N4YN/zCmEf8irwz/HbAM/xarDP8asxP/Jrkl/xi0Gv8UuRz/ELAV/w6xEP8PuBT/JL4s/zC+Lv8muB7/E68J/xioBv8opgf/OIwF/x9PAf8CGAD+ABUA+QAVAI8AFQAUAAAAAAAAAAAAAAAAABUAAAAVABIAFQBtARUA0QkjAekrbRn2K6Uk+wujBf4Wnwb/F54G/x6XDP8slSD/F5AR/yGaE/8uqyX/JLEk/wapB/8ZqhL/MaAi/zGwLv8KoAj/DIUC/xR1A/8YUAL7DCkA8AEUANwAFAC6ABUATQAVAAkAAAAAAAAAAAAAAAAAAAAAABUAAQAVAAkAFAAzABQAVhpIGnsnlSeVE48Swh+VHPIKlAX+DHEG/gpGBfEKNgXiE1QK9yiCI/g9sj3vDKcM+geGA/YcbBftH6Qf9giFCNsTbRLqCX4I/ABrANoAOAB/ABQAPwAVAB4AFQADABUAAAAAAAAAAAAAAAAAAAAAAAAAFQAAABUAAAAVAAMAFQAJEkASEhmKGRw6qjpfP7Q/1xGmEfsZoRn6BH0ExQ5VDX0ijiHYEZkR1yy3LJcdth3WCJ8I0COUI5MarBquDZYNdkStRMQaoRr5AKMA0ACfAEkAJQAFABUAAQAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKYgoAOr86BTO+M3EZtRnhC7YLuSe7J4cRtxGqCLUInxi5GLAOtg5zLbwtiBSyFOAEtASBErcSHg+2DyYSthIbWMpYbSm6KbcBtAGHALYAIQCiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+kDwBHw0cHTMJMfx2uHdQBsAF8NMA0Rze/N9MLpwv2ALAA1gi4CGpIwUiJGq4a1QO0A34ovShCFLIUiwKxAlYkvCQVFLwUKQG2ARgArgADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEHBQQFDxEMiG7obRAO0AyNRyFFEYMdg4BmjGfoArADhAbcBbjnBOSgtvi1yE7ETsyW6JYsisyK6BbAFdQC3AAgApAAAAIYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLo4AC2/LQMSuhIGB7IHA0rEShtRx1GaF7YX3AC0AKIAtQA1OL84B07GTj8btBurELUQYiC4ID4FswUjALUAAgCuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////wAAD/wAAAP8AAAD8AAAAOAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAA4AAAAPAAAADwAAAB/wAAB/8AAA//gAAf/4AAP///////////ygAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABILAAASCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFQYFBhUGGgUYBW8FGQWyCRwJ5gweDPYMHgz2Ch0K5wsfC7EOIA5rFSQVGhYlFgUAAAAAAAAAAAQTBAAFFAUABRQFPQUUBZkEEwToBBME+wQTBP8FFAX/BxYH/wkYCf8MHAz6Dx8P5hQjFJkWJRY9GCcYAAAAAAACEgIHAxIDSAIRAu4CEQL+AhEC/wIRAv8CEQL/AhEC/wIRAv8CEQL/BhUG/wkYCf8QHxD+FCMU7hgnGEcZKBkHARABIwEQAagCEQL+AxID/wUUBf8FFAb/BhUG/wUUBf8DEgP/AhEC/wIRAv8FFAX/DBsM/xEgEf4WJRamGCcYIQEQAVICEQLhBRQF/wgXCP8LGgv/DBsN/wwbDf8LGgv/CBcI/wUUBf8CEQL/AhEC/wcWB/8MGwz/EyIT3xYlFk8CEQJbBBME5ggXCf8MGwz/EB8Q/xIhEv8SIRL/EB8Q/wwbDP8IFwn/BBME/wEQAf8EEwT/CRgJ/xEgEeUUIxRYCBYIUAcWB90MGw3/ESAR/xcmF/8ZKBr/GSga/xcmF/8RIBH/DBsN/wYVBv8DEgP/AhEC/wcWB/8PHg/cEyETThIaEmwLGQvMDh0O/xMiE/8aKRr/HSwd/x0sHf8aKRv/EyIU/w4dDv8HFgj/AxID/wIRAv8GFQb/Dx0PyhUeFWsRFhFeEh4Scg4dDvQRIRL/FicW/xgpF/8WKRb/FCcU/w8iDv8LHQv/BhgG/wMUA/8CEgL/BRUF8hQgFG4RFhFdFRoVFhEfETQIHAfgDygK/hY+Df8XSQ7/GVER/xVSDf8TUAv/Fk0M/xFABv8MNAL/BR0B/gMWAuASHxI0FhsWFgAVAAMAFQBCDjAF1SmCFOcZpgv5GKEM/x2ZGfwboRn9F7AY/SKrH/0cqBb8F5QH/BtUAusFHQDMABUANQAVAAIAFQABABUADAonBkIhdRxfIKAdxBeYEvkRaQzSHIMX4B+tH9YYlBTUG54ayBmPFuMEbgCfASkAPQAVAAcAFQAAAAAAAAAAAAALcwsAQMFAAyW4JYwcuByCHbUdxQuzC5sityKWFLUUbRu1G08tvC1UAbUBLAC2AAMAAAAAAAAAAAAAAAAAAAAAAAAAAEXCRQEquSorLbwtLi65LswHsQePK7orUhy2HH4XsxdTCbQJEgG2AQIArgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAMADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMADAADgAwAA//8AAA==
/* The customised dark style for TiddlyFor syntax highlighthing
(highlight.js style)
Apr 19, 2018
Mohammad Rahmani
*/
.hljs {
display: block;
overflow-x: auto;
padding: 0.5em;
background: #2e2e2e;
color: #ffffff;
}
.hljs-comment,
.hljs-quote {
color: #C0DD0C;
font-style:normal;
}
.hljs-keyword,
.hljs-selector-tag,
.hljs-literal,
.hljs-type,
.hljs-addition {
color: #FF8000;
font-weight:normal;
}
.hljs-selector-attr,
.hljs-selector-class,
.hljs-selector-pseudo {
color: #ffffff;
}
.hljs-number{
color: #7FB347;
}
.hljs-string,
.hljs-doctag,
.hljs-regexp {
color:#FFC600; /* #8abeb7;*/
}
.hljs-title,
.hljs-name,
.hljs-section {
color: #b5bd68;
}
.hljs-built_in {
color: #66D9EF;
font-weight:normal;
}
.hljs-variable,
.hljs-template-variable,
.hljs-selector-id,
.hljs-class .hljs-title {
color: #ffcc66;
}
.hljs-section,
.hljs-name,
.hljs-strong {
font-weight: bold;
}
.hljs-symbol,
.hljs-bullet,
.hljs-subst,
.hljs-meta,
.hljs-link {
color: #f99157;
}
.hljs-deletion {
color: #dc322f;
}
.hljs-formula {
background: #eee8d5;
}
.hljs-attr,
.hljs-attribute {
color: #81a2be;
}
.hljs-emphasis {
font-style: italic;
}
/*correctio of tex tags*/
.hljs-tag {
color: #b5bd68;
}
/*
Zenburn style from voldmar.ru (c) Vladimir Epifanov <voldmar@voldmar.ru>
based on dark.css by Ivan Sagalaev
Modified by:
Mohammad Rahmani
Apr 20, 2018
*/
.hljs {
display: block;
overflow-x: auto;
padding: 0.5em;
background: #3f3f3f;
color: #dcdcdc;
font-size: 0.90em; /* smaller font */
}
.hljs-keyword,
.hljs-selector-tag,
.hljs-tag {
color: #e3ceab;
font-weight: normal;
}
.hljs-template-tag {
color: #dcdcdc;
}
.hljs-number {
color: #8cd0d3;
}
.hljs-variable,
.hljs-template-variable,
.hljs-attribute {
color: #efdcbc;
}
.hljs-literal {
color: #efefaf;
}
.hljs-subst {
color: #8f8f8f;
}
.hljs-title,
.hljs-name,
.hljs-selector-id,
.hljs-selector-class,
.hljs-section,
.hljs-type {
color: #efef8f;
}
.hljs-symbol,
.hljs-bullet,
.hljs-link {
color: #dca3a3;
}
.hljs-deletion,
.hljs-string,
.hljs-built_in,
.hljs-builtin-name {
color: #cc9393;
}
.hljs-addition,
.hljs-comment,
.hljs-quote,
.hljs-meta {
color: #7f9f7f;
font-style:normal;
}
.hljs-emphasis {
font-style: italic;
}
.hljs-strong {
font-weight: bold;
}
{
"10th March 2019": "color:#155724;background-color:#d4edda;"
}
{"tiddlers":{"$:/plugins/flibbles/relink/js/bulkops.js":{"text":"!function(){'use strict';var h=require('$:/plugins/flibbles/relink/js/language.js');function e(e,i,t){t=t||{};var r,l=[],o=this.getRelinkReport(e,i,t);for(r in o){var s,n,d,u=o[r],a=Object.create(null),p=!1;for(s in u){var f=u[s];h.eachImpossible(f,function(){l.push(r)}),h.logAll(f,r,e,i,t),f&&f.output&&(a[s]=f.output,p=!0)}p&&(n=this.getTiddler(r),d=new $tw.Tiddler(n,a,this.getModificationFields()),d=$tw.hooks.invokeHook('th-relinking-tiddler',d,n),this.addTiddler(d),d.fields.title!==r&&(this.deleteTiddler(r),this.relinkTiddler(r,d.fields.title,t)))}0<l.length&&(t=$tw.utils.extend({variables:{to:i,from:e},wiki:this},t),h.reportFailures(l,t))}exports.name='redefine-relinkTiddler',exports.synchronous=!0,exports.after=['load-modules'],exports.startup=function(){$tw.Wiki.prototype.relinkTiddler=e}}();","module-type":"startup","type":"application/javascript"},"$:/plugins/flibbles/relink/js/language.js":{"text":"var o,a=require('$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/prettylink.js'),p=require('$:/plugins/flibbles/relink/js/utils/placeholder.js');exports.eachImpossible=function(e,i){e.eachChild&&e.eachChild(function(e){exports.eachImpossible.call(this,e,i)}),e.impossible&&i(e)},exports.logAll=function(e,i,l,t){for(var r=e.report(),n=0;n<r.length;n++)console.log('Renaming \\''+l+'\\' to \\''+t+'\\' in \\''+i+'\\': '+r[n])},exports.getString=function(e,i){return e='$:/plugins/flibbles/relink/language/'+e,i.wiki.renderTiddler('text/plain',e,i)},exports.reportFailures=function(e,i){o=o||new $tw.utils.Logger('Relinker');var l=this.getString('Error/ReportFailedRelinks',i),t=new p(i),r=$tw.utils.extend({placeholder:t},i),n=Object.create(null),s=[];$tw.utils.each(e,function(e){n[e]||($tw.browser?s.push('\\n* '+a.makeLink(e,void 0,r)):s.push('\\n* '+e),n[e]=!0)}),o.alert(t.getPreamble()+l+'\\n'+s.join(''))};","module-type":"library","type":"application/javascript"},"$:/plugins/flibbles/relink/js/mangler.js":{"text":"function e(e,t){this.initialise(e,t),this.addEventListeners([{type:'relink-add-field',handler:'handleAddFieldEvent'},{type:'relink-add-operator',handler:'handleAddOperatorEvent'},{type:'relink-add-parameter',handler:'handleAddParameterEvent'},{type:'relink-add-attribute',handler:'handleAddAttributeEvent'}])}var t=require('$:/core/modules/widgets/widget.js').widget,r=require('$:/plugins/flibbles/relink/js/language.js'),l=require('$:/plugins/flibbles/relink/js/settings.js');function i(e,t){for(var r='$:/config/flibbles/relink/'+t,i=2;i<arguments.length;i++){var a=arguments[i];if(!a||!(a=a.trim()))return;r=r+'/'+a}var n=l.getDefaultType(e);e.addTiddler({title:r,text:n})}((exports.relinkmangler=e).prototype=new t).alert=function(e){alert(e)},e.prototype.handleAddFieldEvent=function(e){return'object'==typeof(e=e.paramObject)&&e.field&&(e=e.field.toLowerCase().trim())&&($tw.utils.isValidFieldName(e)?i(this.wiki,'fields',e):this.alert($tw.language.getString('InvalidFieldName',{variables:{fieldName:e}}))),!0},e.prototype.handleAddOperatorEvent=function(e){return(e=e.paramObject)&&i(this.wiki,'operators',e.operator),!0},e.prototype.handleAddParameterEvent=function(e){return(e=e.paramObject)&&e.macro&&e.parameter&&(/\\s/.test(e.macro.trim())?this.alert(r.getString('Error/InvalidMacroName',{variables:{macroName:e.macro},wiki:this.wiki})):/[ \\/]/.test(e.parameter.trim())?this.alert(r.getString('Error/InvalidParameterName',{variables:{parameterName:e.parameter},wiki:this.wiki})):i(this.wiki,'macros',e.macro,e.parameter)),!0},e.prototype.handleAddAttributeEvent=function(e){return(e=e.paramObject)&&e.element&&e.attribute&&(/[ \\/]/.test(e.element.trim())?this.alert(r.getString('Error/InvalidElementName',{variables:{elementName:e.element},wiki:this.wiki})):/[ \\/]/.test(e.attribute.trim())?this.alert(r.getString('Error/InvalidAttributeName',{variables:{attributeName:e.attribute},wiki:this.wiki})):i(this.wiki,'attributes',e.element,e.attribute)),!0};","module-type":"widget","type":"application/javascript"},"$:/plugins/flibbles/relink/js/settings.js":{"text":"var u=Object.create(null),i=[],f='$:/config/flibbles/relink/';function t(t){this.settings=r(t),this.wiki=t}function r(t){var e,o=Object.create(null);for(e in exports.factories)o[e]=Object.create(null);return t.eachShadowPlusTiddlers(function(t,e){var r,n,i,s;e.substr(0,f.length)===f&&(r=c(s=e.substr(f.length)),(n=exports.factories[r])&&(i=s.substr(r.length+1),(s=u[t.fields.text])&&((s=new s).source=e,s.fields=t.fields,n(o[r],s,i))))}),o}function c(t){var e=t.indexOf('/');if(0<=e)return t.substr(0,e)}function e(t){var e,r=Object.create(null);for(e in t){var n,i=t[e];for(n in i)r[e+'/'+n]=i[n]}return r}$tw.modules.forEachModuleOfType('relinkfieldtype',function(t,e){function r(){}r.prototype=e,r.typeName=e.name,u[e.name]=r,e.aliases&&$tw.utils.each(e.aliases,function(t){u[t]=r})}),$tw.modules.forEachModuleOfType('relinksurveyor',function(t,e){e.survey&&i.push(e)}),(module.exports=t).getType=function(t){return(t=u[t])?new t:void 0},t.getTypes=function(){var t,e=Object.create(null);for(t in u){var r=u[t];e[r.typeName]=r}return e},t.getDefaultType=function(t){return t=(t=t.getTiddler('$:/config/flibbles/relink/settings/default-type'))&&t.fields.text,u[t]?t:'title'},t.prototype.survey=function(t,e,r){if(t)for(var n=0;n<i.length;n++)if(i[n].survey(t,e,r))return!0;return!1},t.prototype.getAttribute=function(t){return this.settings.attributes[t]},t.prototype.getAttributes=function(){return e(this.settings.attributes)},t.prototype.getFields=function(){return this.settings.fields},t.prototype.getOperators=function(){return this.settings.operators},t.prototype.getMacro=function(t){return this.settings.macros[t]},t.prototype.getMacros=function(){return e(this.settings.macros)},t.prototype.refresh=function(t){for(var e in t)if(e.substr(0,f.length)===f)return this.settings=r(this.wiki),!0;return!1},exports.factories={attributes:function(t,e,r){var n=c(r),r=r.substr(n.length+1);t[n]=t[n]||Object.create(null),t[n][r]=e},fields:function(t,e,r){t[r]=e},macros:function(t,e,r){var n=function(t){var e=t.lastIndexOf('/');if(0<=e)return t.substr(0,e)}(r),r=r.substr(n.length+1);t[n]=t[n]||Object.create(null),t[n][r]=e},operators:function(t,e,r){t[r]=e}};","module-type":"library","type":"application/javascript"},"$:/plugins/flibbles/relink/js/wikimethods.js":{"text":"var i=require('$:/plugins/flibbles/relink/js/utils/macroConfig.js'),n=require('$:/plugins/flibbles/relink/js/settings.js'),h=Object.create(null);$tw.modules.applyMethods('relinkoperator',h),exports.getRelinkReport=function(e,t,i){var n=this.getGlobalCache('relink-'+e,function(){return Object.create(null)});return n[t]||(n[t]=function(e,t,i,n){(n=n||{}).wiki=n.wiki||e,n.settings=e.getRelinkConfig(),t=(t||'').trim(),i=(i||'').trim();var r=Object.create(null);if(t&&i)for(var s=e.getRelinkableTitles(),l=0;l<s.length;l++){var a=s[l],o=e.getTiddler(a);if(o&&!o.fields['plugin-type']&&'application/javascript'!==o.fields.type)try{var g,c,f=Object.create(null);for(g in h)h[g](o,t,i,f,n);for(c in f){r[a]=f;break}}catch(e){throw e.message&&(e.message=e.message+'\\nWhen relinking \\''+a+'\\''),e}}return r}(this,e,t,i)),n[t]},exports.getRelinkableTitles=function(){var t='$:/config/flibbles/relink/to-update',i=this;return this.getCacheForTiddler(t,'relink-toUpdate',function(){var e=i.getTiddler(t);return e?i.compileFilter(e.fields.text):i.allTitles})()},exports.getRelinkConfig=function(){var e,t;return void 0===this._relinkConfig&&(e=new n(this),(t=new i(this,e)).import('[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]'),this.eventListeners=this.eventListeners||{},this.eventListeners.change=this.eventListeners.change||[],this.eventListeners.change.unshift(function(e){t.refresh(e)}),this._relinkConfig=t),this._relinkConfig};","module-type":"wikimethod","type":"application/javascript"},"$:/plugins/flibbles/relink/js/filteroperators/all_relinkable.js":{"text":"!function(){'use strict';exports.relinkable=function(e,i,t){return t.wiki.getRelinkableTitles()}}();","module-type":"allfilteroperator","type":"application/javascript"},"$:/plugins/flibbles/relink/js/filteroperators/impossible.js":{"text":"var s=require('$:/plugins/flibbles/relink/js/language.js');exports.impossible=function(e,i,r){var a,n=r.widget&&r.widget.getVariable('currentTiddler'),i=i.operand,l=[];return n&&(a=r.wiki.getRelinkReport(n,i,r),e(function(e,i){var r=a[i];if(r){var n,t=!1;for(n in r)s.eachImpossible(r[n],function(){t=!0});t&&l.push(i)}})),l};","module-type":"relinkfilteroperator","type":"application/javascript"},"$:/plugins/flibbles/relink/js/filteroperators/references.js":{"text":"exports.references=function(e,r,i){var n,f=[];if(r=r.operand)for(n in i.wiki.getRelinkReport(r,'$:/plugins/flibbles/relink/dummy',i))f.push(n);return f};","module-type":"relinkfilteroperator","type":"application/javascript"},"$:/plugins/flibbles/relink/js/filteroperators/relink.js":{"text":"'use strict';var l,n=require('$:/plugins/flibbles/relink/js/language.js');exports.relink=function(r,e,t){var i=0<=(i=(s=e.suffix)?s.indexOf(':'):-1)?[s.substr(0,i),s.substr(i+1)]:[s],s=(l||(l={},$tw.modules.applyMethods('relinkfilteroperator',l)),l[i[0]]);return s?((e=$tw.utils.extend({},e)).suffix=i[1],s(r,e,t)):[n.getString('Error/RelinkFilterOperator',t)]};","module-type":"filteroperator","type":"application/javascript"},"$:/plugins/flibbles/relink/js/filteroperators/report.js":{"text":"exports.report=function(r,n,o){var n=n.operand,i=[],a=o.wiki.getRelinkReport(n,n,o);return n&&r(function(r,n){var o=a[n];if(o)for(var t in o){var e=o[t].report();i=i.concat(e)}}),i};","module-type":"relinkfilteroperator","type":"application/javascript"},"$:/plugins/flibbles/relink/js/filteroperators/signatures.js":{"text":"var i=require('$:/plugins/flibbles/relink/js/settings.js');function o(t){return t.wiki.getGlobalCache('relink-signatures',function(){var e=t.wiki.getRelinkConfig(),n=Object.create(null),e={attributes:e.getAttributes(),fields:e.getFields(),macros:e.getMacros(),operators:e.getOperators()};return $tw.utils.each(e,function(e,r){$tw.utils.each(e,function(e,t){n[r+'/'+t]=e})}),n})}exports.signatures=function(e,t,r){var n=t.operand||null,i=o(r);'$:/core'===n&&(n='$:/plugins/flibbles/relink');var s,u=[];for(s in i)e=i[s].source,r.wiki.getShadowSource(e)===n&&u.push(s);return u},exports.type=function(e,t,r){var n=[],i=o(r);return e(function(e,t){i[t]&&n.push(i[t].name)}),n},exports.types=function(e,t,r){var n=i.getDefaultType(r.wiki);return(r=Object.keys(i.getTypes())).sort(),r.sort(function(e,t){return e===n?-1:t===n?1:0}),r},exports.source=function(e,t,r){var n=[],i=(t.suffix,o(r));return e(function(e,t){i[t]&&n.push(i[t].source)}),n};","module-type":"relinkfilteroperator","type":"application/javascript"},"$:/plugins/flibbles/relink/js/filteroperators/splitafter.js":{"text":"!function(){'use strict';exports.splitafter=function(t,n,s){var r=[];return t(function(t,s){var u=s.lastIndexOf(n.operand);u<0?$tw.utils.pushTop(r,s):$tw.utils.pushTop(r,s.substr(u+1))}),r}}();","type":"application/javascript","module-type":"relinkfilteroperator"},"$:/plugins/flibbles/relink/js/fieldtypes/filter.js":{"text":"var v=require('$:/plugins/flibbles/relink/js/fieldtypes/reference'),g=require('$:/plugins/flibbles/relink/js/utils/rebuilder'),e=require('$:/plugins/flibbles/relink/js/utils/entry');exports.name='filter';var k=e.newType('filter');function y(e){this.entry=e}function m(e){return e.indexOf(']')<0}k.prototype.report=function(){return this.children.map(function(e){return e.report?e.report():''})},y.prototype.name='operator',y.prototype.eachChild=function(e){e(this.entry)},y.prototype.report=function(){var e='';this.entry.report&&(e=this.entry.report());var r=this.operator,e='indirect'===this.type?'{'+e+'}':'['+e+']',t='';return r.suffix&&(t=':'+r.suffix),'['+(r.prefix||'')+r.operator+t+e+']'},exports.relink=function(e,r,t,i){if(i.settings.survey(e,r,i)){for(var n,o,u,s=new k,a=new g(e),f=i.settings.getOperators(),l=0,d=!1,p=/\\s+/gm,c=/((?:\\+|\\-|~|=)?)(?:(\\[)|(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s\\[\\]]+))/gm;l<e.length;)if(p.lastIndex=l,o=!1,(n=p.exec(e))&&n.index===l?l+=n[0].length:0!=l&&(d?(a.add(' ',l,l),d=!1):o=!0),l<e.length){if(c.lastIndex=l,!(n=c.exec(e))||n.index!==l)return;if(n[1]&&l++,n[2]){var x=/\\[\\[([^\\]]+)\\]\\]/g;x.lastIndex=l;var h=x.exec(e);if(!h||h.index!=l){if(void 0===(l=function(e,r,t,i,n,o,u,s){var a,f;if('['===n.charAt(o++)){do{if(f={},'!'===n.charAt(o)&&(f.prefix='!',o++),-1===(a=n.substring(o).search(/[\\[\\{<\\/]/)))return;a+=o;var l=n.charAt(a);f.operator=n.substring(o,a);var d=f.operator.indexOf(':');-1<d?(f.suffix=f.operator.substring(d+1),f.operator=f.operator.substring(0,d)||'field'):''===f.operator&&(f.operator='title');var p,c=void 0;switch(o=a+1,l){case'{':p='indirect',a=n.indexOf('}',o);var x=n.substring(o,a);(c=v.relinkInBraces(x,r,t,s))&&c.output&&e.add(c.output,o,a);break;case'[':p='string',a=n.indexOf(']',o);var x=n.substring(o,a),h=f.suffix&&u[f.operator+':'+f.suffix]||u[f.operator];if(!h)break;if(!(c=h.relink(x,r,t,s)))break;if(!c.output)break;if(!m(c.output)||s.inBraces&&0<=c.output.indexOf('}}}')){if(!s.placeholder){delete c.output,c.impossible=!0;break}var b=s.placeholder.getPlaceholderFor(c.output,h.name,s),g='<'+b+'>'}else g='['+c.output+']';e.add(g,o-1,a+1);break;case'<':a=n.indexOf('>',o);break;case'/':if(!(b=/^((?:[^\\\\\\/]*|\\\\.)*)\\/(?:\\(([mygi]+)\\))?/g).exec(n.substring(o)))return;a=o+b.lastIndex-1}}while(c&&((l=new y(c)).operator=f,l.type=p,i.add(l)),o=a+1,']'!==n.charAt(o));return']'===n.charAt(o++)?o:void 0}}(a,r,t,s,e,l,f,i)))return;continue}bracketTitle=h[1],c.lastIndex=x.lastIndex,u=h[1]}else u=n[3]||n[4]||n[5];var b=void 0;if(n[3]?b='\"':n[4]?b='\\'':n[5]&&(b=''),u===r){if(x={name:'title'},void 0===(h=function(e,r){var t,i={'':function(e){return/^[^\\s\\[\\]]*[^\\s\\[\\]\\}]$/.test(e)},'[':m,'\\'':function(e){return e.indexOf('\\'')<0},'\"':function(e){return e.indexOf('\"')<0}},n={'':function(e){return e},'[':function(e){return'[['+e+']]'},'\\'':function(e){return'\\''+e+'\\''},'\"':function(e){return'\"'+e+'\"'}};if(i[r]&&i[r](e))return n[r](e);for(t in i)if(i[t](e))return n[t](e)}(t,b))||i.inBraces&&0<=h.indexOf('}}}')){if(!i.placeholder){x.impossible=!0,s.add(x),l=c.lastIndex;continue}h='[<'+i.placeholder.getPlaceholderFor(t,void 0,i)+'>]'}'['!=h[0]&&(o&&!n[1]&&a.add(' ',l,l),d=!0),x.output=t,x.operator={operator:'title'},x.quotation=b,s.add(x),a.add(h,l,c.lastIndex)}l=c.lastIndex}return 0<s.children.length?(s.output=a.results(),s):void 0}},exports.relinkInBraces=function(e,r,t,i){return i=$tw.utils.extend({inBraces:!0},i),!(t=this.relink(e,r,t,i))||!t.output||(i=t.output).indexOf('}}}')<0&&'}}'!==i.substr(i.length-2)||(delete t.output,t.impossible=!0),t};","module-type":"relinkfieldtype","type":"application/javascript"},"$:/plugins/flibbles/relink/js/fieldtypes/list.js":{"text":"exports.name='list',exports.relink=function(t,s,e,i){var r,n=!1,l=!1;if('string'!=typeof t?(r=(t||[]).slice(0),l=!0):r=$tw.utils.parseStringArray(t||''),$tw.utils.each(r,function(t,i){t===s&&(r[i]=e,n=!0)}),n)return t={name:'list'},/\\]\\][^\\S\\xA0]/m.test(e)?t.impossible=!0:t.output=l?r:$tw.utils.stringifyList(r),t};","module-type":"relinkfieldtype","type":"application/javascript"},"$:/plugins/flibbles/relink/js/fieldtypes/reference.js":{"text":"function o(e){this.reference=e}exports.name='reference',o.prototype.name='reference',o.prototype.report=function(){return this.reference.field?['!!'+this.reference.field]:this.reference.index?['##'+this.reference.index]:['']},exports.relink=function(e,t,r,n){var i;return!e||(e=$tw.utils.parseTextReference(e)).title===t&&(i=new o(e),exports.canBePretty(r)?(e.title=r,i.output=exports.toString(e)):i.impossible=!0),i},exports.relinkInBraces=function(e,t,r,n){return(n=this.relink(e,t,r,n))&&n.output&&0<=r.indexOf('}')&&(delete n.output,n.impossible=!0),n},exports.toString=function(e){var t=e.title||'';return e.field?t+'!!'+e.field:e.index?t+'##'+e.index:t},exports.canBePretty=function(e){return!e||e.indexOf('!!')<0&&e.indexOf('##')<0};","module-type":"relinkfieldtype","type":"application/javascript"},"$:/plugins/flibbles/relink/js/fieldtypes/title.js":{"text":"exports.name='title',exports.relink=function(e,t,i,n){if(e===t)return{name:'title',output:i}},exports.aliases=['field','yes'];","module-type":"relinkfieldtype","type":"application/javascript"},"$:/plugins/flibbles/relink/js/fieldtypes/wikitext.js":{"text":"exports.name='wikitext';var h=require('$:/core/modules/parsers/wikiparser/wikiparser.js')['text/vnd.tiddlywiki'],l=require('$:/plugins/flibbles/relink/js/utils/rebuilder.js'),p=require('$:/plugins/flibbles/relink/js/utils/entry').newType('wikitext');function u(t,e,i,s,n){var r,o;this.entry=new p,this.builder=new l(e),this.options=n,this.relinkMethodsInjected||(o=Object.create(null),$tw.modules.forEachModuleOfType('relinkwikitextrule',function(t,e){var i=e.name;if('string'==typeof i&&(i=[i]),void 0!==i)for(var s=0;s<i.length;s++)o[i[s]]=e}),r=o,$tw.utils.each([this.pragmaRuleClasses,this.blockRuleClasses,this.inlineRuleClasses],function(t){for(var e in t)r[e]&&(delete r[e].name,$tw.utils.extend(t[e].prototype,r[e]))}),u.prototype.relinkMethodsInjected=!0),this.fromTitle=i,this.toTitle=s,h.call(this,t,e,n)}u.prototype=Object.create(h.prototype),u.prototype.parsePragmas=function(){for(;this.skipWhitespace(),!(this.pos>=this.sourceLength);){var t=this.findNextMatch(this.pragmaRules,this.pos);if(!t||t.matchIndex!==this.pos)break;this.relinkRule(t)}return[]},u.prototype.parseInlineRunUnterminated=function(t){for(var e=this.findNextMatch(this.inlineRules,this.pos);this.pos<this.sourceLength&&e;)e.matchIndex>this.pos&&(this.pos=e.matchIndex),this.relinkRule(e),e=this.findNextMatch(this.inlineRules,this.pos);this.pos=this.sourceLength},u.prototype.parseInlineRunTerminated=function(t,e){e=e||{},t.lastIndex=this.pos;for(var i=t.exec(this.source),s=this.findNextMatch(this.inlineRules,this.pos);this.pos<this.sourceLength&&(i||s);){if(i&&(!s||s.matchIndex>=i.index))return this.pos=i.index,e.eatTerminator&&(this.pos+=i[0].length),[];s&&(s.matchIndex>this.pos&&(this.pos=s.matchIndex),this.relinkRule(s),s=this.findNextMatch(this.inlineRules,this.pos),t.lastIndex=this.pos,i=t.exec(this.source))}return this.pos=this.sourceLength,[]},u.prototype.parseBlock=function(t){if(this.skipWhitespace(),this.pos>=this.sourceLength)return[];var e=this.findNextMatch(this.blockRules,this.pos);return e&&e.matchIndex===this.pos?this.relinkRule(e):this.parseInlineRun(/(\\r?\\n\\r?\\n)/gm)},u.prototype.relinkRule=function(t){var e;t.rule.relink?void 0!==(e=t.rule.relink(this.source,this.fromTitle,this.toTitle,this.options))&&(this.entry.add(e),e.output&&this.builder.add(e.output,t.matchIndex,this.pos)):void 0!==t.rule.matchRegExp?this.pos=t.rule.matchRegExp.lastIndex:t.rule.parse()},u.prototype.amendRules=function(t,e){var i;if(h.prototype.amendRules.call(this,t,e),'only'===t)i=!0;else{if('except'!==t)return;i=!1}i!==0<=e.indexOf('macrodef')&&(this.options.placeholder=void 0),i!==0<=e.indexOf('html')&&(this.options.noWidgets=!0),i!==0<=e.indexOf('prettylink')&&(this.options.noPrettylinks=!0)},exports.relink=function(t,e,i,s){if(s.settings.survey(t,e,s)){var n=$tw.utils.extend({},s);return n.settings=s.settings.createChildLibrary(s.currentTiddler),0<(n=new u(s.type,t,e,i,n)).entry.children.length?(n.entry.output=n.builder.results(),n.entry):void 0}};","module-type":"relinkfieldtype","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/fields.js":{"text":"'use strict';require('$:/plugins/flibbles/relink/js/settings.js');var f=require('$:/plugins/flibbles/relink/js/utils/entry').newType('field');f.prototype.report=function(){var i=this,t=[];return $tw.utils.each(this.children,function(e){e.report?$tw.utils.each(e.report(),function(e){e?t.push(i.field+': '+e):t.push(i.field)}):t.push(i.field)}),t},exports.fields=function(s,r,l,n,u){var e=u.settings.getFields();$tw.utils.each(e,function(e,i){var t=s.fields[i];void 0!==(e=e.relink(t,r,l,u))&&((t=new f).field=i,t.output=e.output,t.add(e),n[i]=t)})};","module-type":"relinkoperator","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text.js":{"text":"'use strict';var a=Object.create(null);$tw.modules.applyMethods('relinktextoperator',a);var s={'$:/DefaultTiddlers':'text/x-tiddler-filter'};exports.text=function(t,e,l,i,r){var d=t.fields;d.text&&(d=s[d.title]||d.type||'text/vnd.tiddlywiki',!a[d]||(r=a[d].call(this,t,e,l,r))&&(i.text=r))};","module-type":"relinkoperator","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/filtertext.js":{"text":"'use strict';var l=require('$:/plugins/flibbles/relink/js/settings').getType('filter');exports['text/x-tiddler-filter']=function(e,t,i,r){return l.relink(e.fields.text,t,i,r)};","module-type":"relinktextoperator","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext.js":{"text":"'use strict';var s=require('$:/plugins/flibbles/relink/js/utils/placeholder.js'),u=require('$:/plugins/flibbles/relink/js/settings.js').getType('wikitext');exports['text/vnd.tiddlywiki']=function(e,t,i,l){var r=new s,l=$tw.utils.extend({currentTiddler:e.fields.title,placeholder:r},l);return(l=u.relink(e.fields.text,t,i,l))&&l.output&&(r=r.getPreamble(),l.output=r+l.output),l};","module-type":"relinktextoperator","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/code.js":{"text":"exports.name=['codeinline','codeblock'],exports.relink=function(e,s,t,n){var r;this.parser.pos=this.matchRegExp.lastIndex,(r=2<this.match[0].length?/\\r?\\n```$/gm:new RegExp(this.match[1],'mg')).lastIndex=this.parser.pos,e=r.exec(e),this.parser.pos=e?e.index+e[0].length:this.parser.sourceLength};","module-type":"relinkwikitextrule","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/comment.js":{"text":"exports.name=['commentinline','commentblock'],exports.relink=function(e,n,t,o){this.parser.pos=this.endMatchRegExp.lastIndex};","module-type":"relinkwikitextrule","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/filteredtransclude.js":{"text":"exports.name=['filteredtranscludeinline','filteredtranscludeblock'];var a=require('$:/plugins/flibbles/relink/js/settings').getType('filter'),o=require('./utils.js'),p=require('$:/plugins/flibbles/relink/js/utils/entry').newType('filteredtransclude');p.prototype.report=function(){var r=[],i=this;return $tw.utils.each(this.children,function(e){var t;'filter'===e.name?(t='}}}',i.template&&(t='||'+i.template+t),$tw.utils.each(e.report(),function(e){r.push('{{{'+e+t)})):r.push('{{{'+i.filter+'||}}}')}),r},exports.relink=function(e,t,r,i){var l=this.match;filter=l[1],tooltip=l[2],template=l[3],style=l[4],classes=l[5],parser=this.parser,entry=new p,parser.pos=this.matchRegExp.lastIndex;var n=!1,s=a.relink(filter,t,r,i);if(void 0!==s&&(entry.add(s),s.output&&(n=!0,filter=s.output)),$tw.utils.trim(template)===t&&(template=template.replace(t,r),entry.add({name:'title',output:template}),n=!0),n)void 0===(i=this.makeFilteredtransclude(filter,tooltip,template,style,classes,i))?entry.impossible=!0:entry.output=i+o.getEndingNewline(l[0]),entry.filter=filter;else if(entry.children.length<=0)return;return entry.template=template,entry},exports.makeFilteredtransclude=function(e,t,r,i,l,n){return(s=e).indexOf('|')<0&&s.indexOf('}}')<0&&(!(s=r)||s.indexOf('|')<0&&s.indexOf('{')<0&&s.indexOf('}')<0)?'{{{'+e+(s=void 0===(s=t)?'':'|'+s)+(s=void 0===(s=r)?'':'||'+s)+'}}'+(i||'')+'}'+(s=void 0===(s=l)?'':'.'+s):n.noWidgets?void 0:function(e,t,r,i,l,n){var s=!1;function a(e,t,r){if(!t)return'';if(void 0===(i=o.wrapAttributeValue(t))){if(!n.placeholder)return void(s=!0);var r=r?void 0:e,i='<<'+n.placeholder.getPlaceholderFor(t,r,n)+'>>'}return' '+e+'='+i}if(void 0!==l&&(l=l.split('.').join(' ')),l=['<$list',a('filter',e),a('tooltip',t),a('template',r,!0),a('style',i),a('itemClass',l),'/>'],!s)return l.join('')}(e,t,r,i,l,n);var s};","module-type":"relinkwikitextrule","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html.js":{"text":"var T=require('./utils.js'),y=require('$:/plugins/flibbles/relink/js/utils/rebuilder'),k=(e=require('$:/plugins/flibbles/relink/js/settings.js')).getType('reference'),$=e.getType('filter'),j=require('./macrocall.js'),e=require('$:/plugins/flibbles/relink/js/utils/entry');exports.name='html';var w=e.newCollection('html');w.prototype.forEachChildReport=function(e,t,i){return'filtered'===i?t+='={{{'+e+'}}}':'indirect'===i?t+='={{'+e+'}}':'macro'===i?t+='='+e:0<e.length&&(t+='=\"'+e+'\"'),'<'+this.element+' '+t+' />'},exports.relink=function(e,t,i,r){r.settings.getAttribute(this.nextTag.tag);var n,a,l,s,u,o,g,p=new y(e,this.nextTag.start),d=new w;for(a in d.attributes=Object.create(null),d.element=this.nextTag.tag,this.nextTag.attributes){var f=this.nextTag.attributes[a],c=e.indexOf('=',f.start);if(!(c<0||c>f.end)){'$importvariables'===this.nextTag.tag&&'filter'===a&&(n=f);var h=void 0;if('string'===f.type){var b,v=function(e,t,i){if('$macrocall'===e.tag){var r=e.attributes.$name;if(r=r&&i.settings.getMacro(r.value))return r[t]}else if(e=i.settings.getAttribute(e.tag))return e[t]}(this.nextTag,a,r);if(!v)continue;if(void 0===(m=v.relink(f.value,t,i,r)))continue;m.output&&(c=T.determineQuote(e,f),b=f.value.length+2*c.length,void 0===(h=T.wrapAttributeValue(m.output,c))&&(r.placeholder?h='<<'+r.placeholder.getPlaceholderFor(m.output,v.name,r)+'>>':m.impossible=!0))}else if('indirect'===f.type){if(void 0===(m=k.relinkInBraces(f.textReference,t,i,r)))continue;m.output&&(b=f.textReference.length+4,h='{{'+m.output+'}}')}else if('filtered'===f.type){if(void 0===(m=$.relinkInBraces(f.filter,t,i,r)))continue;m.output&&(b=f.filter.length+6,h='{{{'+m.output+'}}}')}else if('macro'===f.type){var m,x=f.value;if(void 0===(m=j.relinkAttribute(x,e,t,i,r)))continue;m.impossible||(b=x.end-x.start,h=m.output)}d.addChild(m,a,f.type),void 0!==h&&('$importvariables'===this.nextTag.tag&&'filter'===a&&(n=h),x=f.end-b,p.add(h,x,f.end))}}if(n&&(s=r,'string'==typeof(l=n)&&(l=$tw.utils.parseAttribute('p='+l,0)),o=s,l=u='filtered'===(u=l).type?(g=o.settings.getVariableWidget(),o.wiki.filterTiddlers(u.filter,g)[0]||''):'indirect'===u.type?(g=o.settings.getVariableWidget(),o.wiki.getTextReference(u.textReference,'',g.variables.currentTiddler.value)):'macro'===u.type?(g=o.settings.getVariableWidget()).getVariable(u.value.name,{params:u.value.params}):u.value,s.settings.import(l)),this.parser.pos=this.nextTag.end,d.hasChildren())return d.output=p.results(this.nextTag.end),d};","module-type":"relinkwikitextrule","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/image.js":{"text":"var C=require('$:/plugins/flibbles/relink/js/utils/rebuilder'),q=require('$:/plugins/flibbles/relink/js/fieldtypes/reference'),w=require('$:/plugins/flibbles/relink/js/settings').getType('filter'),$=require('./macrocall.js'),A=require('./utils.js'),e=require('$:/plugins/flibbles/relink/js/utils/entry');exports.name='image';var V=e.newCollection('image');V.prototype.forEachChildReport=function(e,t,i){var r='source'===t?this.tooltip?'[img['+this.tooltip.value+']]':'[img[]]':('indirect'===i?r='{{'+e+'}}':'filtered'===i?r='{{{'+e+'}}}':'macro'===i&&(r=e),'[img '+t+'='+r+']');return r},exports.relink=function(e,t,i,r){var l,a,n=this.nextImage.start,d=new C(e,n),u=!1,o=!1,s=new V;s.attributes=Object.create(null),this.nextImage.attributes.source.value!==t||(l=i,a=this.nextImage.attributes.tooltip,l.indexOf(']')<0&&(a||l.indexOf('|')<0))||(r.noWidgets||!A.wrapAttributeValue(i)&&!r.placeholder?o=!0:(u=!0,d.add('<$image',n,n+4))),n+=4;var p,f,g,h,c,m,x,v,b,O=!1;for(p in this.nextImage.attributes){var k,y,I,j=this.nextImage.attributes[p];'source'!==p&&'tooltip'!==p||(O?n=e.indexOf('|',n):(n=e.indexOf('[',n),O=!0),u&&(0<=' \\t\\n'.indexOf(e[n-1])?d.add('',n,n+1):d.add(' ',n,n+1)),n+=1),'source'===p?(n=e.indexOf(j.value,n),j.value===t&&(k={name:'title'},u?void 0===(I=A.wrapAttributeValue(i))?(y=r.placeholder.getPlaceholderFor(i,void 0,r),d.add('source=<<'+y+'>>',n,n+t.length)):d.add('source='+I,n,n+t.length):o?k.impossible=!0:d.add(i,n,n+t.length),s.addChild(k,p,'string')),n=e.indexOf(']]',n),u&&d.add('/>',n,n+2),n+=2):'tooltip'===p?(u&&(n=e.indexOf(j.value,n),I=A.wrapAttributeValue(j.value),d.add('tooltip='+I,n,n+j.value.length)),s.tooltip=this.nextImage.attributes.tooltip):(f=j,g=t,h=i,c=s,m=r,k=y=b=v=x=void 0,y=(j=d).text,k=y.indexOf(f.name,f.start),k+=f.name.length,k=y.indexOf('=',k),'string'===f.type?v=(k=y.indexOf(f.value,k))+(v=A.determineQuote(y,f)).length+f.value.length:'indirect'===f.type?(v=(k=y.indexOf('{{',k))+f.textReference.length+4,(x=q.relinkInBraces(f.textReference,g,h,m))&&(c.addChild(x,f.name,'indirect'),x.output&&j.add('{{'+x.output+'}}',k,v))):'filtered'===f.type?(v=(k=y.indexOf('{{{',k))+f.filter.length+6,void 0!==(x=w.relinkInBraces(f.filter,g,h,m))&&(c.addChild(x,f.name,'filtered'),x.output&&(b='{{{'+x.output+'}}}',j.add(b,k,v)))):'macro'===f.type&&(k=y.indexOf('<<',k),v=f.value.end,b=f.value,oldValue=f.value,void 0!==(m=$.relinkAttribute(b,y,g,h,m))&&(c.addChild(m,f.name,'macro'),m.output&&j.add(m.output,k,v))),n=v)}if(this.parser.pos=n,s.hasChildren())return s.output=d.results(n),s};","module-type":"relinkwikitextrule","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/import.js":{"text":"var s=require('$:/plugins/flibbles/relink/js/settings.js').getType('filter');function u(t){this.filter=t}exports.name='import',u.prototype.name='import',u.prototype.eachChild=function(t){return t(this.filter)},u.prototype.report=function(){return this.filter.report().map(function(t){return 0<t.length?'\\\\import '+t:'\\\\import'})},exports.relink=function(t,r,e,i){var n=this.matchRegExp.lastIndex,o=this.parse()[0].attributes.filter.value,p=void 0;return void 0!==(e=s.relink(o,r,e,i))&&(p=new u(e),n=t.substring(n+o.length,this.parser.pos),e.output&&(o=e.output,p.output='\\\\import '+o+n)),i.settings.import(o),p};","module-type":"relinkwikitextrule","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrocall.js":{"text":"var d=require('./utils.js'),i=require('$:/plugins/flibbles/relink/js/utils/rebuilder'),e=(require('$:/plugins/flibbles/relink/js/settings.js'),require('$:/plugins/flibbles/relink/js/utils/entry'));function x(){}exports.name=['macrocallinline','macrocallblock'],x.prototype.impossible=!0,x.prototype.name='macroparam',x.prototype.report=function(){return[]};var b=e.newCollection('macrocall');function p(e,t,r,a,n,i){var s=i.settings.getMacro(e.name),l=!1;if(s&&!e.params.every(function(e){return!i.settings.survey(e.value,r,i)})){var u,o,p=$tw.utils.extend({},e),m=new b;for(u in m.parameters=Object.create(null),p.params=e.params.slice(),s){try{o=function(e,t,r,a){var n=!1;for(u=0;u<r.length;u++){var i=r[u].name;if(i===t)return u;void 0===i&&(n=!0)}if(!n)return-1;var s=w(e,t,a);if(0<=s)for(var l=0,u=0;u<r.length;u++)if(void 0===r[u].name){if(l===s)return u;l++}else w(e,r[u].name,a)<s&&l++;return-1}(e.name,u,e.params,i)}catch(e){if(e instanceof x){m.addChild(e);continue}}if(!(o<0)){var c=e.params[o],h=s[u],f=h.relink(c.value,r,a,i);if(void 0!==f&&(m.addChild(f,u,'string'),f.output)){var v=d.determineQuote(t,c),g=d.wrapParameterValue(f.output,v),c=$tw.utils.extend({},c);if(void 0===g){if(!n||!i.placeholder){f.impossible=!0;continue}h=i.placeholder.getPlaceholderFor(f.output,h.name,i),c.newValue='<<'+h+'>>',c.type='macro'}else c.start=c.end-(c.value.length+2*v.length),c.value=f.output,c.newValue=g;p.params[o]=c,l=!0}}}return m.hasChildren()?(m.macro=e.name,l&&(m.output=p),m):void 0}}function m(e,t){for(var r=new i(t,e.start),a=0;a<e.params.length;a++){var n=e.params[a];n.newValue&&r.add(n.newValue,n.start,n.end)}return r.results(e.end)}function w(e,t,r){if(void 0===(e=r.settings.getMacroDefinition(e)))throw new x;for(var a=e.params||[],n=0;n<a.length;n++)if(a[n].name===t)return n;return-1}b.prototype.forEachChildReport=function(e,t,r){return t=0<e.length?t+': \"'+e+'\"':t,'<<'+this.macro+' '+t+'>>'},exports.relink=function(e,t,r,a){var n,i,s=this.nextCall?(u=this.nextCall.params,o=this.nextCall.name,n=0<u.length?e.substring($tw.utils.skipWhiteSpace(e,u[0].start),u[u.length-1].end):'',i=e.substring(this.nextCall.start,this.nextCall.end),this.parser.pos=this.nextCall.end,this.nextCall.start):(o=this.match[1],n=this.match[2],i=this.match[0],this.parser.pos=this.matchRegExp.lastIndex,this.matchRegExp.lastIndex-i.length);if(a.settings.survey(i,t,a)&&a.settings.getMacro(o)){var l=o.length+2,u=function(e,t){for(var r=[],a=/\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/gm,n=a.exec(e);n;){var i={value:n[2]||n[3]||n[4]||n[5]||n[6]};n[1]&&(i.name=n[1]),i.end=a.lastIndex+t,r.push(i),n=a.exec(e)}return r}(n,$tw.utils.skipWhiteSpace(i,l)+s),o={name:o,start:s,end:this.parser.pos,params:u},s=!a.noWidgets;return void 0===(u=function(e,t,r){var a=Object.create(null),n=new Array(t.length),i=!1;for(o=0;o<t.length;o++){var s=t[o].name;s?a[n[o]=s]=!0:i=!0}if(i){if(void 0===(e=r.settings.getMacroDefinition(e)))return;for(var l=e.params||[],u=0,o=0;o<t.length;o++)if(void 0===n[o]){for(;u<l.length&&a[l[u].name];)u++;if(l.length<=u)break;n[o]=l[u].name,a[l[u].name]=!0}}return n}(o.name,o.params,a))&&(s=!1),(s=p(o,e,t,r,s,a))&&s.output&&(s.output=function(e,t,r){if(function(e){for(var t=0;t<e.params.length;t++)if('macro'===e.params[t].type)return 1}(e)){for(var a=[],n=0;n<e.params.length;n++){var i=(i=e.params[n]).newValue||d.wrapAttributeValue(i.value);a.push(' '+r[n]+'='+i)}return'<$macrocall $name='+d.wrapAttributeValue(e.name)+a.join('')+'/>'}return m(e,t)}(s.output,e,u)),s}},exports.relinkAttribute=function(e,t,r,a,n){return(a=p(e,t,r,a,!1,n))&&a.output&&(a.output=m(a.output,t)),a};","module-type":"relinkwikitextrule","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrodef.js":{"text":"var d=require('$:/plugins/flibbles/relink/js/settings');function c(t,e){this.macro=t,this.body=e}exports.name='macrodef',c.prototype.name='macrodef',c.prototype.eachChild=function(t){return t(this.body)},c.prototype.report=function(){var e='\\\\define '+this.macro+'()';return this.body.report?this.body.report().map(function(t){return e+' '+t}):[e]},exports.relink=function(t,e,r,s){var i,n,o=this.parse(),p=this.match;s.settings.addMacroDefinition(o[0]),this.parser.pos=this.matchRegExp.lastIndex,p[3]?(a=/\\r?\\n\\\\end[^\\S\\n\\r]*(?:\\r?\\n|$)/gm,n=''):(u=$tw.utils.skipWhiteSpace(t,this.parser.pos),a=/(?:\\r?\\n|$)/gm,n=t.substring(this.parser.pos,u),this.parser.pos=u),a.lastIndex=this.parser.pos;var a,h,u=a.exec(t);return u&&(a=t.substring(this.parser.pos,u.index),t=(t=/^relink-(?:(\\w+)-)?(\\d+)$/.exec(p[1]))&&''===p[2]?t[1]||'title':'wikitext',(t=d.getType(t))&&(h=t.relink(a,e,r,s)),void 0!==h&&(i=new c(p[1],h),h.output&&(i.output=p[0]+n+h.output+u[0])),this.parser.pos=u.index+u[0].length),i};","module-type":"relinkwikitextrule","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/prettylink.js":{"text":"var e,a=require('./utils.js');function l(){}function d(t,e){if(e.wiki.renderText('text/plain','text/vnd.tiddlywiki',t)===t&&t.indexOf('</$link>')<=0)return t;var i=a.wrapAttributeValue(t);return i?'<$text text='+i+'/>':e.placeholder?'<$text text=<<'+e.placeholder.getPlaceholderFor(t,'caption',e)+'>>/>':void 0}l.prototype.name='prettylink',l.prototype.report=function(){return['[['+(this.caption||this.link)+']]']},exports.name='prettylink',exports.relink=function(t,e,i,r){this.parser.pos=this.matchRegExp.lastIndex;var n,o=this.match;if(o[2]===e)n=o[1];else if(void 0!==o[2]||o[1]!==e)return;return(o=new l).caption=n,o.link=e,o.output=this.makeLink(i,n,r),void 0===o.output&&(o.impossible=!0),o},exports.makeLink=function(t,e,i){var r,n,o,l;if(!i.noPrettylinks&&this.canBePretty(t,!!e))l=t,l=e?'[['+e+'|'+l+']]':'[['+l+']]';else if(i.noWidgets)l=void 0;else if(void 0===e)if(exports.shorthandSupported(i)){if(!(r=a.wrapAttributeValue(t))){if(!i.placeholder)return;r='<<'+i.placeholder.getPlaceholderFor(t,void 0,i)+'>>'}l='<$link to='+r+'/>'}else i.placeholder&&(l='<$link to=<<'+(n=i.placeholder.getPlaceholderFor(t,void 0,i))+'>>><$text text=<<'+n+'>>/></$link>');else(r=a.wrapAttributeValue(t))?void 0!==(o=d(e,i))&&(l='<$link to='+r+'>'+o+'</$link>'):i.placeholder&&(l='<$link to=<<'+(n=i.placeholder.getPlaceholderFor(t,void 0,i))+'>>>'+(o=d(e,i))+'</$link>');return l},exports.canBePretty=function(t,e){return t.indexOf(']]')<0&&']'!==t[t.length-1]&&(e||t.indexOf('|')<0)},exports.shorthandSupported=function(t){return void 0===e&&(t=t.wiki.renderText('text/plain','text/vnd.tiddlywiki','<$link to=test/>'),e='test'===t),e};","module-type":"relinkwikitextrule","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/relink.js":{"text":"var p=require('$:/plugins/flibbles/relink/js/settings.js'),l=require('$:/plugins/flibbles/relink/js/language.js');exports.name='relink',exports.types={pragma:!0},exports.init=function(e){this.parser=e,this.matchRegExp=/^\\\\relink[^\\S\\n]+([^(\\s]+)([^\\r\\n]*)(\\r?\\n)?/gm},exports.parse=function(){var i;this.parser.pos=this.matchRegExp.lastIndex;var e,s=Object.create(null),n=void 0,t=[],a=this;return this.interpretSettings(function(e,t,r){i=e,r&&!p.getType(r)&&(n=l.getString('Error/UnrecognizedType',{variables:{type:r},wiki:a.parser.wiki})),s[t]=r}),i&&((e=Object.create(null))[i]=s,t.push({type:'set',attributes:{name:{type:'string',value:''}},children:[],isMacroDefinition:!0,relink:e})),n&&t.push({type:'element',tag:'span',attributes:{class:{type:'string',value:'tc-error tc-relink-error'}},children:[{type:'text',text:n}]}),t},exports.relink=function(e,t,r,i){this.parser.pos=this.matchRegExp.lastIndex,this.interpretSettings(function(e,t,r){i.settings.addSetting(e,t,r,i.currentTiddler)})},exports.interpretSettings=function(e){var t=this.match[2];if(''!==t)for(var r=this.match[1],i=/\\s*([A-Za-z0-9\\-_]+)(?:\\s*:\\s*([^\\s]+))?/gm,s=i.exec(t);s;)e(r,s[1],s[2]),s=i.exec(t)};","module-type":"wikirule","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/rules.js":{"text":"exports.name='rules',exports.relink=function(){this.parse()};","module-type":"relinkwikitextrule","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/syslink.js":{"text":"require('./utils.js');var n=require('$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/prettylink.js');function r(){}exports.name='syslink',r.prototype.name='syslink',r.prototype.report=function(){return['~'+this.link]},exports.relink=function(t,i,e,n){var s=void 0;return this.parser.pos=this.matchRegExp.lastIndex,this.match[0]===i&&'~'!==this.match[0][0]&&((s=new r).link=i,s.output=this.makeSyslink(e,n),void 0===s.output&&(s.impossible=!0)),s},exports.makeSyslink=function(t,i){var e=t.match(this.matchRegExp);return e&&e[0]===t&&'~'!==t[0]?t:n.makeLink(t,void 0,i)};","module-type":"relinkwikitextrule","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/transclude.js":{"text":"var d=require('$:/plugins/flibbles/relink/js/fieldtypes/reference'),s=require('./utils.js');function u(){}function o(e,t){e=$tw.utils.trim(e);var i=s.wrapAttributeValue(e);return void 0===i&&t.placeholder&&(i='<<'+t.placeholder.getPlaceholderFor(e,void 0,t)+'>>'),i}function a(e){return!e||e.indexOf('}')<0&&e.indexOf('{')<0&&e.indexOf('|')<0}function c(e,t,i){if(t){var r=s.wrapAttributeValue(t);if(void 0===r){if(!i.placeholder)return;r='<<'+i.placeholder.getPlaceholderFor(t,e,i)+'>>'}return' '+e+'='+r}return''}function p(e,t){return'string'!=typeof e&&(e=d.toString(e)),e=e||'',void 0!==t?'{{'+e+'||'+t+'}}':'{{'+e+'}}'}exports.name=['transcludeinline','transcludeblock'],u.prototype.name='transclude',u.prototype.report=function(){var e,t=this.reference||{},i=[];return this.referenceChanged&&(e=t.index?'##'+t.index:t.field?'!!'+t.field:'',this.template&&(e=e+'||'+this.template),i.push('{{'+e+'}}')),this.templateChanged&&(t=d.toString(t),i.push('{{'+t+'||}}')),i},exports.relink=function(e,t,i,r){var n=this.match,l=$tw.utils.parseTextReference(n[1]),d=n[2],o=new u,a=!1;if(this.parser.pos=this.matchRegExp.lastIndex,$tw.utils.trim(l.title)===t&&(l.title=l.title.replace(t,i),a=!0,o.referenceChanged=!0),$tw.utils.trim(d)===t&&(d=d.replace(t,i),a=!0,o.templateChanged=!0),a)return o.reference=l,o.template=d,(r=this.makeTransclude(l,d,r))?(r+=s.getEndingNewline(n[0]),o.output=r):o.impossible=!0,o},exports.makeTransclude=function(e,t,i){var r,n,l;return a(t)?(l=e.title,d.canBePretty(l)&&a(l)?r=p(e,t):i.noWidgets||void 0!==(n=o(e.title,i))&&(r='<$tiddler tiddler='+n+'>'+p({field:e.field,index:e.index},t)+'</$tiddler>')):i.noWidgets||void 0!==(t=o(t,i))&&(e.title?(n=o(e.title,i),l=e.field,e=e.index,i=void 0!==(l=[c('field',l,l=i),c('index',e,l)])[0]&&void 0!==l[1]?l.join(''):void 0,void 0!==n&&void 0!==i&&(r='<$tiddler tiddler='+n+'><$transclude tiddler='+t+i+'/></$tiddler>')):r='<$transclude tiddler='+t+'/>'),r};","module-type":"relinkwikitextrule","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/utils.js":{"text":"function f(n,r){if(r={'':function(n){return n},'\\'':function(n){return'\\''+n+'\\''},'\"':function(n){return'\"'+n+'\"'},'\"\"\"':function(n){return'\"\"\"'+n+'\"\"\"'},'[[':function(n){return'[['+n+']]'}}[r])return r(n)}exports.wrapAttributeValue=function(n,r){var t=['','\\'','\"','\"\"\"'],e={'':function(n){return!/([\\/\\s<>\"'=])/.test(n)},'\\'':function(n){return n.indexOf('\\'')<0},'\"':function(n){return n.indexOf('\"')<0},'\"\"\"':function(n){return n.indexOf('\"\"\"')<0&&'\"'!=n[n.length-1]}};if(e[r]&&e[r](n))return f(n,r);for(var u=0;u<t.length;u++){var i=t[u];if(e[i](n))return f(n,i)}},exports.wrapParameterValue=function(n,r){var t=['','\\'','\"','[[','\"\"\"'],e={'':function(n){return!/([\\s>\"'=])/.test(n)},'\\'':function(n){return n.indexOf('\\'')<0},'\"':function(n){return n.indexOf('\"')<0},'[[':exports.canBePrettyOperand,'\"\"\"':function(n){return n.indexOf('\"\"\"')<0&&'\"'!=n[n.length-1]}};if(e[r]&&e[r](n))return f(n,r);for(var u=0;u<t.length;u++){var i=t[u];if(e[i](n))return f(n,i)}},exports.canBePrettyOperand=function(n){return n.indexOf(']')<0},exports.determineQuote=function(n,r){var t=r.end-1;return'\\''===n[t]?'\\'':'\"'===n[t]?'\"\"\"'===n.substr(t-2,3)?'\"\"\"':'\"':']]'===n.substr(t-1,2)&&'[['===n.substr(t-r.value.length-3,2)?'[[':''},exports.getEndingNewline=function(n){var r=n.length;return'\\n'===n[r-1]?'\\r'===n[r-2]?'\\r\\n':'\\n':''};","module-type":"library","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/wikilink.js":{"text":"require('./utils.js');var e=require('$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/prettylink.js');function k(){}exports.name='wikilink',k.prototype.name='wikilink',k.prototype.report=function(){return[$tw.config.textPrimitives.unWikiLink+this.link]},exports.relink=function(i,t,e,n){var r=void 0;return this.parser.pos=this.matchRegExp.lastIndex,this.match[0]===t&&this.match[0][0]!==$tw.config.textPrimitives.unWikiLink&&((r=new k).link=t,r.output=this.makeWikilink(e,n),void 0===r.output&&(r.impossible=!0)),r},exports.makeWikilink=function(i,t){return i.match(this.matchRegExp)&&i[0]!==$tw.config.textPrimitives.unWikiLink?i:e.makeLink(i,void 0,t)};","module-type":"relinkwikitextrule","type":"application/javascript"},"$:/plugins/flibbles/relink/js/surveyors/raw.js":{"text":"exports.survey=function(e,n,r){return 0<=e.indexOf(n)};","module-type":"relinksurveyor","type":"application/javascript"},"$:/plugins/flibbles/relink/js/utils/entry.js":{"text":"function r(){this.children=[]}function i(){this.children=Object.create(null),this.types=Object.create(null)}(module.exports=r).newType=function(t){function e(){r.apply(this,arguments)}return(e.prototype=Object.create(r.prototype)).name=t,e},r.prototype.eachChild=function(t){if(this.children)for(var e=0;e<this.children.length;e++)t(this.children[e])},r.prototype.add=function(t){this.children.push(t)},r.prototype.report=function(){var e=[];return $tw.utils.each(this.children,function(t){$tw.utils.each(t.report(),function(t){e.push(t)})}),e},r.newCollection=function(t){function e(){i.apply(this,arguments)}return(e.prototype=Object.create(i.prototype)).name=t,e},i.prototype.eachChild=function(t){for(var e in this.children)t(this.children[e])},i.prototype.addChild=function(t,e,r){this.children[e]=t,this.types[e]=r},i.prototype.report=function(){var t,e=[];for(t in this.children){var r=this.children[t],i=this.types[t];if(r.report)for(var n=r.report(),o=0;o<n.length;o++)e.push(this.forEachChildReport(n[o],t,i));else e.push(this.forEachChildReport('',t,i))}return e},i.prototype.hasChildren=function(){return 0<Object.keys(this.children).length};","module-type":"library","type":"application/javascript"},"$:/plugins/flibbles/relink/js/utils/macroConfig.js":{"text":"var n=require('$:/plugins/flibbles/relink/js/settings.js'),e=require('$:/core/modules/widgets/widget.js').widget;function i(t,e,i){this.macros=Object.create(null),this.parent=e,this.title=i,this.wiki=t,this.widgetList=[],this.reservedmacroNames=Object.create(null)}(module.exports=i).prototype.import=function(t){this.parent&&(r=this.getVariableWidget());var e,i,r=(e=this.wiki,i=r,(i=e.makeWidget({tree:[{type:'importvariables',attributes:{filter:{type:'string',value:t}}}]},{parentWidget:i})).execute(),i.renderChildren(),i.children[0]);this._compileList(r.tiddlerList),this.widgetList.push(r),this.addWidget(r)},i.prototype.refresh=function(t){if(this.parent.refresh(t),this.widget.refresh(t)){this.macros=Object.create(null);for(var e=0;e<this.widgetList.length;e++)this._compileList(this.widgetList[e].tiddlerList);return!0}return!1},i.prototype.getType=function(t){return n.getType(t)},i.prototype.getFields=function(){return this.parent.getFields()},i.prototype.getOperators=function(){return this.parent.getOperators()},i.prototype.getAttributes=function(){return this.parent.getAttributes()},i.prototype.survey=function(t,e,i){return this.parent.survey(t,e,i)},i.prototype.getAttribute=function(t){return this.parent.getAttribute(t)},i.prototype.getMacros=function(){var t,e=this.parent.getMacros();for(t in this.macros){var i,r=this.macros[t];for(i in r)e[t+'/'+i]=r[i]}return e},i.prototype.getMacro=function(t){var e,i=this.macros[t];return this.parent&&(e=this.parent.getMacro(t)),i&&e?$tw.utils.extend(Object.create(null),i,e):i||e},i.prototype.addSetting=function(t,e,i,r){var s=this.macros[t];i=i||n.getDefaultType(this.wiki),void 0===s&&(s=this.macros[t]=Object.create(null)),(i=n.getType(i))&&(i.source=r,r=this.wiki.getTiddler(r),i.fields=r.fields,s[e]=i)},i.prototype.createChildLibrary=function(t){return new i(this.wiki,this,t)},i.prototype.addWidget=function(t){for(this.widget=t;0<this.widget.children.length;)this.widget=this.widget.children[0]},i.prototype.getVariableWidget=function(){var t;return this.widget||(t=this.parent&&this.parent.widget,(t=new e({},{parentWidget:t})).setVariable('currentTiddler',this.title),t=new e({},{parentWidget:t}),this.addWidget(t)),this.widget},i.prototype.reserveMacroName=function(t){this.reservedmacroNames[t]={value:'',params:[]}},i.prototype.addMacroDefinition=function(t){(t=this.getVariableWidget().makeChildWidget(t)).computeAttributes(),t.execute(),this.addWidget(t)},i.prototype.getMacroDefinition=function(t){return this.getVariableWidget().variables[t]||$tw.macros[t]||this.reservedmacroNames[t]},i.prototype._compileList=function(t){for(var e=0;e<t.length;e++){var i=this.wiki.parseTiddler(t[e]);if(i)for(var r=i.tree[0];r&&'set'===r.type;){if(r.relink)for(var s in r.relink){var n=r.relink[s];for(paramName in n)this.addSetting(s,paramName,n[paramName],t[e])}r=r.children&&r.children[0]}}};","module-type":"library","type":"application/javascript"},"$:/plugins/flibbles/relink/js/utils/placeholder.js":{"text":"function e(){this.placeholders=Object.create(null),this.reverseMap=Object.create(null)}(module.exports=e).prototype.getPlaceholderFor=function(e,r,t){var i=this.reverseMap[e],o=t.settings||t.wiki.getRelinkConfig();if(i)return i;var n=0,l='relink-';for(r&&'title'!==r&&(l+=r+'-');i=l+(n+=1),o.getMacroDefinition(i););return o.reserveMacroName(i),this.placeholders[i]=e,this.reverseMap[e]=i},e.prototype.getPreamble=function(){var e,r=[];for(e in this.placeholders){var t=this.placeholders[e];r.push('\\\\define '+e+'() '+t+'\\n')}return r.join('')};","module-type":"library","type":"application/javascript"},"$:/plugins/flibbles/relink/js/utils/rebuilder.js":{"text":"function t(t,i){this.text=t,this.index=i||0,this.pieces=[]}(module.exports=t).prototype.add=function(t,i,e){this.pieces.push(this.text.substring(this.index,i),t),this.index=e},t.prototype.changed=function(){return 0<this.pieces.length},t.prototype.results=function(t){if(this.changed())return this.pieces.push(this.text.substring(this.index,t)),this.pieces.join('')};","module-type":"library","type":"application/javascript"},"$:/config/flibbles/relink/attributes/$button/set":{"text":"reference"},"$:/config/flibbles/relink/attributes/$button/setTo":{"text":"title"},"$:/config/flibbles/relink/attributes/$button/to":{"text":"title"},"$:/config/flibbles/relink/attributes/$checkbox/tiddler":{"text":"title"},"$:/config/flibbles/relink/attributes/$checkbox/tag":{"text":"title"},"$:/config/flibbles/relink/attributes/$count/filter":{"text":"filter"},"$:/config/flibbles/relink/attributes/$draggable/tiddler":{"text":"title"},"$:/config/flibbles/relink/attributes/$draggable/filter":{"text":"filter"},"$:/config/flibbles/relink/attributes/$edit-bitmap/tiddler":{"text":"title"},"$:/config/flibbles/relink/attributes/$edit-text/tiddler":{"text":"title"},"$:/config/flibbles/relink/attributes/$edit/tiddler":{"text":"title"},"$:/config/flibbles/relink/attributes/$encrypt/filter":{"text":"filter"},"$:/config/flibbles/relink/attributes/$fieldmangler/tiddler":{"text":"title"},"$:/config/flibbles/relink/attributes/$fields/tiddler":{"text":"title"},"$:/config/flibbles/relink/attributes/$image/source":{"text":"title"},"$:/config/flibbles/relink/attributes/$importvariables/filter":{"text":"filter"},"$:/config/flibbles/relink/attributes/$linkcatcher/to":{"text":"title"},"$:/config/flibbles/relink/attributes/$linkcatcher/set":{"text":"title"},"$:/config/flibbles/relink/attributes/$link/to":{"text":"title"},"$:/config/flibbles/relink/attributes/$list/filter":{"text":"filter"},"$:/config/flibbles/relink/attributes/$list/template":{"text":"title"},"$:/config/flibbles/relink/attributes/$list/editTemplate":{"text":"title"},"$:/config/flibbles/relink/attributes/$list/emptyMessage":{"text":"wikitext"},"$:/config/flibbles/relink/attributes/$list/history":{"text":"title"},"$:/config/flibbles/relink/attributes/$navigator/story":{"text":"title"},"$:/config/flibbles/relink/attributes/$navigator/history":{"text":"title"},"$:/config/flibbles/relink/attributes/$radio/tiddler":{"text":"title"},"$:/config/flibbles/relink/attributes/$range/tiddler":{"text":"title"},"$:/config/flibbles/relink/attributes/$reveal/stateTitle":{"text":"title"},"$:/config/flibbles/relink/attributes/$select/tiddler":{"text":"title"},"$:/config/flibbles/relink/attributes/$setvariable/tiddler":{"text":"title"},"$:/config/flibbles/relink/attributes/$setvariable/subtiddler":{"text":"title"},"$:/config/flibbles/relink/attributes/$setvariable/filter":{"text":"filter"},"$:/config/flibbles/relink/attributes/$set/tiddler":{"text":"title"},"$:/config/flibbles/relink/attributes/$set/subtiddler":{"text":"title"},"$:/config/flibbles/relink/attributes/$set/filter":{"text":"filter"},"$:/config/flibbles/relink/attributes/$tiddler/tiddler":{"text":"title"},"$:/config/flibbles/relink/attributes/$transclude/tiddler":{"text":"title"},"$:/config/flibbles/relink/attributes/$transclude/subtiddler":{"text":"title"},"$:/config/flibbles/relink/attributes/$view/tiddler":{"text":"title"},"$:/config/flibbles/relink/attributes/$view/subtiddler":{"text":"title"},"$:/plugins/flibbles/relink/configuration":{"text":"<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/flibbles/relink/Configuration]!has[draft.of]]\" \"$:/plugins/flibbles/relink/ui/configuration/Fields\">>\n</div>\n"},"$:/config/flibbles/relink/fields/caption":{"text":"wikitext"},"$:/config/flibbles/relink/fields/filter":{"text":"filter"},"$:/config/flibbles/relink/fields/list":{"text":"list"},"$:/config/flibbles/relink/fields/list-after":{"text":"title"},"$:/config/flibbles/relink/fields/list-before":{"text":"title"},"$:/config/flibbles/relink/fields/tags":{"text":"list"},"$:/plugins/flibbles/relink/language/Buttons/Delete/Hint":{"text":"delete"},"$:/plugins/flibbles/relink/language/Buttons/LinkToInline/Hint":{"text":"go to defining tiddler"},"$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Hint":{"text":"Specify a new widget/element attribute to be updated whenever a tiddler is renamed"},"$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Caption":{"text":"add"},"$:/plugins/flibbles/relink/language/Buttons/NewField/Hint":{"text":"Specify a new field to be updated whenever a tiddler is renamed"},"$:/plugins/flibbles/relink/language/Buttons/NewField/Caption":{"text":"add"},"$:/plugins/flibbles/relink/language/Buttons/NewOperator/Hint":{"text":"Specify a new filter operator to be considered whenever a tiddler is renamed"},"$:/plugins/flibbles/relink/language/Buttons/NewOperator/Caption":{"text":"add"},"$:/plugins/flibbles/relink/language/Buttons/NewParameter/Hint":{"text":"Specify a new macro parameter to be updated whenever a tiddler is renamed"},"$:/plugins/flibbles/relink/language/Buttons/NewParameter/Caption":{"text":"add"},"$:/plugins/flibbles/relink/language/Error/InvalidAttributeName":{"text":"Illegal characters in attribute name \"<$text text=<<attributeName>>/>\". Attributes cannot contain slashes ('/'), closing angle or square brackets ('>' or ']'), quotes or apostrophes ('\"' or \"'\"), equals ('='), or whitespace"},"$:/plugins/flibbles/relink/language/Error/InvalidElementName":{"text":"Illegal characters in element/widget name \"<$text text=<<elementName>>/>\". Element tags can only contain letters and the characters hyphen (`-`) and dollar sign (`$`)"},"$:/plugins/flibbles/relink/language/Error/InvalidMacroName":{"text":"Illegal characters in macro name \"<$text text=<<macroName>>/>\". Macros cannot contain whitespace"},"$:/plugins/flibbles/relink/language/Error/InvalidParameterName":{"text":"Illegal characters in parameter name \"<$text text=<<parameterName>>/>\". Parameters can only contain letters, digits, and the characters underscore (`_`) and hyphen (`-`)"},"$:/plugins/flibbles/relink/language/Error/RelinkFilterOperator":{"text":"Filter Error: Unknown suffix for the 'relink' filter operator"},"$:/plugins/flibbles/relink/language/Error/ReportFailedRelinks":{"text":"Relink could not update '<<from>>' to '<<to>>' inside the following tiddlers:"},"$:/plugins/flibbles/relink/language/Error/UnrecognizedType":{"text":"Relink parse error: Unrecognized field type '<<type>>'"},"$:/plugins/flibbles/relink/language/Help/Attributes":{"text":"See the <a href={{{[{$:/plugins/flibbles/relink!!demo}addsuffix[#Attributes]]}}}>Attributes documentation page</a> for details."},"$:/plugins/flibbles/relink/language/Help/Fields":{"text":"See the <a href={{{[{$:/plugins/flibbles/relink!!demo}addsuffix[#Fields]]}}}>Fields documentation page</a> for details."},"$:/plugins/flibbles/relink/language/Help/Macros":{"text":"See the <a href={{{[{$:/plugins/flibbles/relink!!demo}addsuffix[#Macros]]}}}>Macros documentation page</a> for details."},"$:/plugins/flibbles/relink/language/Help/Operators":{"text":"See the <a href={{{[{$:/plugins/flibbles/relink!!demo}addsuffix[#Operators]]}}}>Operators documentation page</a> for details."},"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Empty":{"text":"No tiddlers contain any fields, links, macros, transclusions, or widgets referencing this one"},"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Description":{"text":"The following tiddlers contain fields, links, macros, transclusions, or widgets referencing this one:"},"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Caption":{"text":"//Relink// References"},"$:/plugins/flibbles/relink/language/ui/Attributes/Caption":{"text":"Attributes"},"$:/plugins/flibbles/relink/language/ui/Fields/Caption":{"text":"Fields"},"$:/plugins/flibbles/relink/language/ui/Macros/Caption":{"text":"Macros"},"$:/plugins/flibbles/relink/language/ui/Operators/Caption":{"text":"Operators"},"$:/plugins/flibbles/relink/license":{"type":"text/vnd.tiddlywiki","text":"<a href={{$:/plugins/flibbles/relink!!demo}}>Relink Plugin</a> Copyright (c) 2019-<<now YYYY>> Cameron Fischer\n\n[[BSD 3-Clause License|https://raw.githubusercontent.com/flibbles/tw5-relink/master/LICENSE]]\n"},"$:/config/flibbles/relink/macros/csvtiddlers/filter":{"text":"filter"},"$:/config/flibbles/relink/macros/datauri/title":{"text":"title"},"$:/config/flibbles/relink/macros/jsontiddler/title":{"text":"title"},"$:/config/flibbles/relink/macros/jsontiddlers/filter":{"text":"filter"},"$:/config/flibbles/relink/macros/list-links/filter":{"text":"filter"},"$:/config/flibbles/relink/macros/list-links-draggable/tiddler":{"text":"title"},"$:/config/flibbles/relink/macros/list-links-draggable/itemTemplate":{"text":"title"},"$:/config/flibbles/relink/macros/list-tagged-draggable/tag":{"text":"title"},"$:/config/flibbles/relink/macros/list-tagged-draggable/itemTemplate":{"text":"title"},"$:/config/flibbles/relink/macros/tabs/buttonTemplate":{"text":"title"},"$:/config/flibbles/relink/macros/tabs/default":{"text":"title"},"$:/config/flibbles/relink/macros/tabs/tabsList":{"text":"filter"},"$:/config/flibbles/relink/macros/tabs/template":{"text":"title"},"$:/config/flibbles/relink/macros/tag/tag":{"text":"title"},"$:/config/flibbles/relink/macros/tag-pill/tag":{"text":"title"},"$:/config/flibbles/relink/macros/timeline/subfilter":{"text":"filter"},"$:/config/flibbles/relink/macros/toc/tag":{"text":"title"},"$:/config/flibbles/relink/macros/toc/itemClassFilter":{"text":"filter"},"$:/config/flibbles/relink/macros/toc-expandable/tag":{"text":"title"},"$:/config/flibbles/relink/macros/toc-expandable/itemClassFilter":{"text":"filter"},"$:/config/flibbles/relink/macros/toc-expandable/exclude":{"text":"list"},"$:/config/flibbles/relink/macros/toc-selective-expandable/tag":{"text":"title"},"$:/config/flibbles/relink/macros/toc-selective-expandable/itemClassFilter":{"text":"filter"},"$:/config/flibbles/relink/macros/toc-selective-expandable/exclude":{"text":"list"},"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/tag":{"text":"title"},"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/selectedTiddler":{"text":"title"},"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/unselectedText":{"text":"wikitext"},"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/missingText":{"text":"wikitext"},"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/template":{"text":"title"},"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/tag":{"text":"title"},"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/selectedTiddler":{"text":"title"},"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/unselectedText":{"text":"wikitext"},"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/missingText":{"text":"wikitext"},"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/template":{"text":"title"},"$:/config/flibbles/relink/operators/list":{"text":"reference"},"$:/config/flibbles/relink/operators/tag":{"text":"title"},"$:/config/flibbles/relink/operators/title":{"text":"title"},"$:/config/flibbles/relink/operators/field:title":{"text":"title"},"$:/language/EditTemplate/Title/Impossibles/Prompt":{"text":"''Warning:'' Not all references in the following tiddlers can be updated by //Relink// due to the complexity of the new title:"},"$:/language/EditTemplate/Title/References/Prompt":{"text":"The following tiddlers will be updated if relinking:"},"$:/language/EditTemplate/Title/Relink/Prompt":{"text":"Use //Relink// to update ''<$text text=<<fromTitle>>/>'' to ''<$text text=<<toTitle>>/>'' across all other tiddlers"},"$:/core/ui/EditTemplate/title":{"tags":"$:/tags/EditTemplate","text":"<$edit-text field=\"draft.title\" class=\"tc-titlebar tc-edit-texteditor\" focus=\"true\" tabindex={{$:/config/EditTabIndex}}/>\n\n<$reveal state=\"!!draft.title\" type=\"nomatch\" text={{!!draft.of}} tag=\"div\">\n\n<$vars pattern=\"\"\"[\\|\\[\\]{}]\"\"\" bad-chars=\"\"\"`| [ ] { }`\"\"\">\n\n<$list filter=\"[all[current]regexp:draft.title<pattern>]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/BadCharacterWarning}}\n\n</div>\n\n</$list>\n\n</$vars>\n\n<$list filter=\"[{!!draft.title}!is[missing]]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/Exists/Prompt}}\n\n</div>\n\n</$list>\n\n<$list filter=\"[{!!draft.of}!is[missing]]\" variable=\"listItem\">\n\n<$vars fromTitle={{!!draft.of}} toTitle={{!!draft.title}}>\n\n<$checkbox tiddler=\"$:/config/RelinkOnRename\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> {{$:/language/EditTemplate/Title/Relink/Prompt}}</$checkbox>\n\n<$list filter=\"[all[relinkable]relink:references<fromTitle>limit[1]]\" variable=\"listItem\">\n\n<$vars stateTiddler=<<qualify \"$:/state/edit/references\">> >\n\n<$tiddler tiddler=<<fromTitle>> >\n\n<$set\n\tname=\"prompt\"\n\tfilter=\"[all[relinkable]relink:impossible<toTitle>]\"\n\tvalue=\"EditTemplate/Title/Impossibles/Prompt\"\n\temptyValue=\"EditTemplate/Title/References/Prompt\" >\n<$reveal type=\"nomatch\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"show\" class=\"tc-btn-invisible\">{{$:/core/images/right-arrow}}\n<$macrocall $name=lingo title=<<prompt>> />\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"hide\" class=\"tc-btn-invisible\">{{$:/core/images/down-arrow}}\n<$macrocall $name=lingo title=<<prompt>> />\n</$button>\n</$reveal>\n</$set>\n\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$list variable=\"listItem\" filter=\"[all[relinkable]!title[$:/StoryList]relink:references<fromTitle>sort[title]]\" template=\"$:/plugins/flibbles/relink/ui/ListItemTemplate\">\n</$list>\n</$reveal>\n</$tiddler>\n\n</$vars>\n\n</$list>\n\n</$vars>\n\n</$list>\n\n</$reveal>\n"},"$:/config/flibbles/relink/PluginLibrary":{"caption":"//Relink// Library","url":"https://flibbles.github.io/tw5-relink/library/index.html","tags":"$:/tags/PluginLibrary","text":"The //Relink// library contains //Relink// as well as its supplemental plugins. It is maintained by Flibbles. See the [[github page|https://github.com/flibbles/tw5-relink]] for more information.\n"},"$:/plugins/flibbles/relink/readme":{"type":"text/vnd.tiddlywiki","text":"When renaming a tiddler, Relink can update the fields, filters, and widgets\nof all other tiddlers. However, it works through whitelisting.\n\nIt's already configured to update tiddler titles for all core widgets, filters,\nand fields, but the whitelists can be customized for each of this in the\nconfiguration panel.\n\nSee <a href={{$:/plugins/flibbles/relink!!source}}>the tw5-relink website</a> for more details and examples.\n"},"$:/config/flibbles/relink/settings/default-type":{"text":"title"},"$:/plugins/flibbles/relink/ui/ListItemTemplate":{"text":"<$set\n\tname=\"classes\"\n\tfilter=\"[<listItem>relink:impossible<toTitle>]\"\n\tvalue=\"tc-menu-list-item tc-relink-impossible\"\n\temptyValue=\"tc-menu-list-item\">\n<div class=<<classes>>>\n<$link to=<<listItem>>><$text text=<<listItem>> /></$link>\n</div>\n</$set>\n"},"$:/plugins/flibbles/relink/ui/TiddlerInfo/References":{"caption":"{{$:/plugins/flibbles/relink/language/TiddlerInfo/References/Caption}}","tags":"$:/tags/TiddlerInfo","text":"\\define lingo-base() $:/plugins/flibbles/relink/language/TiddlerInfo/\n\\define filter() [relink:references<currentTiddler>!title[$:/StoryList]!prefix[$:/temp/]sort[title]]\n<$list filter=\"[subfilter<filter>first[]]\">\n\n<<lingo References/Description>>\n</$list>\n\n<table class=\"tc-relink-references-table\">\n<tbody>\n<$list filter=<<filter>> emptyMessage=<<lingo References/Empty>> variable=\"listItem\" template=\"$:/plugins/flibbles/relink/ui/TiddlerInfo/ReferencesTemplate\" />\n</tbody>\n</table>\n"},"$:/plugins/flibbles/relink/ui/TiddlerInfo/ReferencesTemplate":{"text":"<tr class=\"tc-relink-references\">\n<td class=\"tc-relink-references-title\">\n<$link to=<<listItem>>/>\n</td>\n<td class=\"tc-relink-references-report\">\n<$list filter=\"[<listItem>relink:report<currentTiddler>]\">\n\n<$text text=<<currentTiddler>> />\n</$list>\n\n</td>\n</tr>\n"},"$:/plugins/flibbles/relink/ui/components/button-delete":{"text":"\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define prefix() $:/config/flibbles/relink/\n\n<$list filter=\"[all[current]prefix<prefix>]\" >\n<$button class=\"tc-btn-invisible\" tooltip={{$:/plugins/flibbles/relink/language/Buttons/Delete/Hint}}><$list filter=\"[all[current]is[tiddler]]\">\n<$action-deletetiddler $tiddler=<<currentTiddler>> />\n</$list><$list filter=\"[all[current]is[shadow]]\">\n<$action-setfield $tiddler=<<tiddlerName>> text=\"\" />\n</$list>\n{{$:/core/images/delete-button}}\n</$button>\n</$list><$list filter=\"[all[current]!prefix<prefix>]\">\n<$link><$button class=\"tc-btn-invisible\" tooltip={{$:/plugins/flibbles/relink/language/Buttons/LinkToInline/Hint}}>{{$:/core/images/link}}</$button></$link>\n</$list>\n"},"$:/plugins/flibbles/relink/ui/components/select-fieldtype":{"text":"\\define prefix() $:/config/flibbles/relink/\n\n<$vars type={{{ [<signature>relink:type[]] }}} >\n<$list filter=\"[all[current]prefix<prefix>]\" >\n<$select tiddler=<<currentTiddler>> >\n<$list variable=\"option\" filter=\"[relink:types[]]\">\n<option><$text text=<<option>> /></option>\n</$list>\n</$select>\n</$list><$list filter=\"[all[current]!prefix<prefix>]\">\n<$text text=<<type>> />\n</$list>\n</$vars>\n"},"$:/plugins/flibbles/relink/ui/components/tables":{"text":"\\define .make-table(title, plugin, default-table-state:yes)\n\n<$list variable=\"render\" filter=\"[relink:signatures<__plugin__>prefix<__category__>first[]]\">\n<$set name=\"table-state\" value=<<qualify \"\"\"$:/state/flibbles/relink/tables/$title$\"\"\">>>\n<tr><th class=\"tc-relink-header-plugin\" colspan=<<column-count>> >\n<$reveal type=\"nomatch\" state=<<table-state>> text=\"yes\" default=\"\"\"$default-table-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<table-state>> setTo=\"yes\">\n{{$:/core/images/right-arrow}} ''$title$''\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<table-state>> text=\"yes\" default=\"\"\"$default-table-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<table-state>> setTo=\"no\">\n{{$:/core/images/down-arrow}} ''$title$''\n</$button>\n</$reveal>\n</th></tr>\n<$list\n\tvariable=\"signature\"\n\tfilter=\"[relink:signatures<__plugin__>prefix<__category__>sort[]]\">\n<$vars key={{{ [<signature>removeprefix<__category__>removeprefix[/]] }}} >\n<$tiddler tiddler={{{[<signature>relink:source[]]}}} >\n<$reveal tag=\"tr\" type=\"match\" state=<<table-state>> text=\"yes\" default=\"\"\"$default-table-state$\"\"\">\n<$macrocall $name=<<__list-row-macro__>> signature=<<signature>> />\n<td class=\"tc-relink-column-type\">{{||$:/plugins/flibbles/relink/ui/components/select-fieldtype}}</td>\n<td class=\"tc-relink-column-delete\">{{||$:/plugins/flibbles/relink/ui/components/button-delete}}</td>\n</$reveal>\n</$tiddler>\n</$vars>\n</$list>\n</$set>\n</$list>\n\\end\n\n\\define tables(category, list-row-macro, header-list)\n<$vars\n\tcolumn-count={{{[enlist<__header-list__>] [[DeleteColumn]] +[count[]]}}}>\n\n<table class=\"tc-relink-whitelist\"><tbody>\n<tr>\n<$list variable=\"header\" filter=\"[enlist<__header-list__>butlast[]]\"><th><<header>></th></$list>\n<!-- We have the last column extend into the delete/link column, which is unlabeled. -->\n<th colspan=2><$text text={{{ [enlist<__header-list__>last[]] }}} /></th>\n</tr>\n\n<<.make-table Custom \"\" yes>>\n\n<$list\n\tfilter=\"[plugin-type[plugin]![$:/core]![$:/plugins/flibbles/relink]]\">\n<$set name=\"subtitle\" value={{!!description}} emptyValue={{!!title}} >\n<$macrocall $name=\".make-table\" title=<<subtitle>> plugin=<<currentTiddler>> />\n</$set>\n</$list>\n\n<<.make-table Core \"$:/plugins/flibbles/relink\">>\n\n</tbody></table>\n</$vars>\n\\end\n"},"$:/plugins/flibbles/relink/ui/configuration/Attributes":{"caption":"{{$:/plugins/flibbles/relink/language/ui/Attributes/Caption}}","tags":"$:/tags/flibbles/relink/Configuration","text":"\\import $:/plugins/flibbles/relink/ui/components/tables\n\\define prefix-attr() $:/config/flibbles/relink/attributes/\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define element-name-tiddler() $:/state/flibbles/relink/element-name\n\\define attribute-name-tiddler() $:/state/flibbles/relink/attribute-name\n\n\\define row()\n<$set name=\"element\"\n filter=\"[<key>splitbefore[/]removesuffix[/]]\">\n<$set name=\"attribute\"\n filter=\"[<key>removeprefix<element>removeprefix[/]]\">\n<td><$text text=<<element>> /></td>\n<td><$text text=<<attribute>> /></td>\n</$set></$set>\n\\end\n\\define body()\n\n{{$:/plugins/flibbles/relink/language/Help/Attributes}}\n\n<em class=\"tc-edit\">Add a new attribute:</em>\n<$edit-text\n\ttiddler=<<element-name-tiddler>>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"widget/element\" />\n<$edit-text\n\ttiddler=<<attribute-name-tiddler>>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"attribute\" />\n<$reveal type=\"nomatch\" text=\"\" state=<<element-name-tiddler>> >\n<$reveal type=\"nomatch\" text=\"\" state=<<attribute-name-tiddler>> >\n<$relinkmangler>\n<$button\n\ttooltip={{$(lingo-base)$NewAttribute/Hint}}\n\taria-label={{$(lingo-base)$NewAttribute/Caption}}>\n<$action-sendmessage\n\t$message=\"relink-add-attribute\"\n\telement={{$(element-name-tiddler)$}}\n\tattribute={{$(attribute-name-tiddler)$}} />\n<$action-deletetiddler $tiddler=<<attribute-name-tiddler>> />\n<$action-deletetiddler $tiddler=<<element-name-tiddler>> />\n<$text text={{$(lingo-base)$NewAttribute/Caption}}/>\n</$button>\n</$relinkmangler>\n</$reveal>\n<$reveal type=\"match\" text=\"\" state=<<attribute-name-tiddler>> >\n<$button>\n<$text text={{$(lingo-base)$NewAttribute/Caption}}/>\n</$button>\n</$reveal>\n</$reveal>\n<$reveal type=\"match\" text=\"\" state=<<element-name-tiddler>> >\n<$button>\n<$text text={{$(lingo-base)$NewAttribute/Caption}}/>\n</$button>\n</$reveal>\n\n<$macrocall\n\t$name=tables\n\tcategory=\"attributes\"\n\theader-list=\"[[Widget/HTML Element]] Attribute Type\"\n\tlist-row-macro=\"row\" />\n\\end\n\n<<body>>\n"},"$:/plugins/flibbles/relink/ui/configuration/Fields":{"caption":"{{$:/plugins/flibbles/relink/language/ui/Fields/Caption}}","tags":"$:/tags/flibbles/relink/Configuration","text":"\\import $:/plugins/flibbles/relink/ui/components/tables\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define field-name-tiddler() $:/state/flibbles/relink/field-name\n\n\\define row()\n<td><$text text=<<key>> /></td>\n\\end\n\\define body()\n\n{{$:/plugins/flibbles/relink/language/Help/Fields}}\n\n<em class=\"tc-edit\">Add a new field:</em>\n<$edit-text\n\ttiddler=<<field-name-tiddler>>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"field name\" />\n<$reveal type=\"nomatch\" text=\"\" state=<<field-name-tiddler>> >\n<$relinkmangler>\n<$button\n\ttooltip={{$(lingo-base)$NewField/Hint}}\n\taria-label={{$(lingo-base)$NewField/Caption}}>\n<$action-sendmessage\n\t$message=\"relink-add-field\"\n\tfield={{$(field-name-tiddler)$}} />\n<$action-deletetiddler $tiddler=<<field-name-tiddler>> />\n<$text text={{$(lingo-base)$NewField/Caption}}/>\n</$button>\n</$relinkmangler>\n</$reveal>\n<$reveal type=\"match\" text=\"\" state=<<field-name-tiddler>> >\n<$button>\n<$text text={{$(lingo-base)$NewField/Caption}}/>\n</$button>\n</$reveal>\n\n\n<$macrocall\n\t$name=tables\n\tcategory=\"fields\"\n\theader-list=\"[[Field Name]] [[Field Type]]\"\n\tlist-row-macro=\"row\" />\n\\end\n\n<<body>>\n"},"$:/plugins/flibbles/relink/ui/configuration/Macros":{"caption":"{{$:/plugins/flibbles/relink/language/ui/Macros/Caption}}","tags":"$:/tags/flibbles/relink/Configuration","text":"\\import $:/plugins/flibbles/relink/ui/components/tables\n\\define prefix-macro() $:/config/flibbles/relink/macros/\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define macro-name-tiddler() $:/state/flibbles/relink/macro-name\n\\define parameter-name-tiddler() $:/state/flibbles/relink/parameter-name\n\n\\define row()\n<$set name=\"parameter\"\n filter=\"[<key>relink:splitafter[/]]\">\n<$set name=\"macro\"\n filter=\"[<key>removesuffix<parameter>removesuffix[/]]\">\n<td><$text text=<<macro>> /></td>\n<td><$text text=<<parameter>> /></td>\n</$set></$set>\n\\end\n\\define body()\n\n{{$:/plugins/flibbles/relink/language/Help/Macros}}\n\n<em class=\"tc-edit\">Add a new macro parameter:</em>\n<$edit-text\n\ttiddler=<<macro-name-tiddler>>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"macro\" />\n<$edit-text\n\ttiddler=<<parameter-name-tiddler>>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"parameter\" />\n<$reveal type=\"nomatch\" text=\"\" state=<<macro-name-tiddler>> >\n<$reveal type=\"nomatch\" text=\"\" state=<<parameter-name-tiddler>> >\n<$relinkmangler>\n<$button\n\ttooltip={{$(lingo-base)$NewParameter/Hint}}\n\taria-label={{$(lingo-base)$NewParameter/Caption}}>\n<$action-sendmessage\n\t$message=\"relink-add-parameter\"\n\tmacro={{$(macro-name-tiddler)$}}\n\tparameter={{$(parameter-name-tiddler)$}} />\n<$action-deletetiddler $tiddler=<<parameter-name-tiddler>> />\n<$action-deletetiddler $tiddler=<<macro-name-tiddler>> />\n<$text text={{$(lingo-base)$NewParameter/Caption}}/>\n</$button>\n</$relinkmangler>\n</$reveal>\n<$reveal type=\"match\" text=\"\" state=<<parameter-name-tiddler>> >\n<$button>\n<$text text={{$(lingo-base)$NewParameter/Caption}}/>\n</$button>\n</$reveal>\n</$reveal>\n<$reveal type=\"match\" text=\"\" state=<<macro-name-tiddler>> >\n<$button>\n<$text text={{$(lingo-base)$NewParameter/Caption}}/>\n</$button>\n</$reveal>\n\n\n<$macrocall\n\t$name=tables\n\tcategory=\"macros\"\n\theader-list=\"Macro Parameter Type\"\n\tlist-row-macro=\"row\" />\n\\end\n\n<<body>>\n"},"$:/plugins/flibbles/relink/ui/configuration/Operators":{"caption":"{{$:/plugins/flibbles/relink/language/ui/Operators/Caption}}","tags":"$:/tags/flibbles/relink/Configuration","text":"\\import $:/plugins/flibbles/relink/ui/components/tables\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define operator-name-tiddler() $:/state/flibbles/relink/operator-name\n\n\\define row()\n<td><$text text=<<key>> /></td>\n\\end\n\\define body()\n\n{{$:/plugins/flibbles/relink/language/Help/Operators}}\n\n<em class=\"tc-edit\">Add a new filter operator:</em>\n<$edit-text\n\ttiddler=<<operator-name-tiddler>>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"operator name\" />\n<$reveal type=\"nomatch\" text=\"\" state=<<operator-name-tiddler>>>\n<$relinkmangler>\n<$button\n\ttooltip={{$(lingo-base)$NewOperator/Hint}}\n\taria-label={{$(lingo-base)$NewOperator/Caption}}>\n<$action-sendmessage\n\t$message=\"relink-add-operator\"\n\toperator={{$(operator-name-tiddler)$}} />\n<$action-deletetiddler $tiddler=<<operator-name-tiddler>> />\n<$text text={{$(lingo-base)$NewOperator/Caption}}/>\n</$button>\n</$relinkmangler>\n</$reveal>\n<$reveal type=\"match\" text=\"\" state=<<operator-name-tiddler>>>\n<$button>\n<$text text={{$(lingo-base)$NewOperator/Caption}}/>\n</$button>\n</$reveal>\n\n<$macrocall\n\t$name=tables\n\tcategory=\"operators\"\n\theader-list=\"[[Filter Operator]] [[Operand Type]]\"\n\tlist-row-macro=\"row\" />\n\\end\n\n<<body>>\n"},"$:/plugins/flibbles/relink/ui/stylesheet.css":{"text":".tc-relink-references {\n}\n\n.tc-relink-references-table {\n\twidth: 100%;\n\tborder: none;\n}\n\n.tc-relink-references-table td {\n\tborder-left: none;\n}\n\n.tc-relink-references-table tr:first-child td {\n\tborder-top: none;\n}\n\n.tc-relink-references-title {\n\ttext-align: left;\n\tvertical-align: top;\n}\n\n.tc-relink-references-occurrence {\n\tfont-style: italic;\n\ttext-align: left;\n\tfont-weight: 200;\n\tpadding-left: 25px;\n\tvertical-align: top;\n}\n\n.tc-relink-header-plugin {\n\ttext-align: left;\n}\n\n.tc-relink-header-plugin button {\n\twidth: 100%\n}\n\n.tc-relink-column-type {\n\twidth: 8em;\n}\n\n.tc-relink-column-type select {\n\twidth: 100%;\n}\n\n.tc-relink-column-delete {\n\tborder-left: none;\n\ttext-align: left;\n}\n\n.tc-relink-column-delete button {\n\tpadding-left: 1em;\n}\n\n.tc-relink-impossible a.tc-tiddlylink {\n\tcolor: red;\n}\n","tags":"$:/tags/Stylesheet","type":"text/css"}}}
{"tiddlers":{"$:/plugins/kookma/commander/buttons/pagecontrol":{"caption":"{{$:/plugins/kookma/commander/images/file-alt}} {{$:/language/Buttons/Commander/Caption}}","created":"20190724145015836","description":"Open tiddler commander","list-after":"$:/core/ui/Buttons/advanced-search","modified":"20210102140141074","tags":"$:/tags/PageControls","type":"text/vnd.tiddlywiki","text":"\\whitespace trim\n\\define commander-button(class)\n<$button to=\"$:/Commander\" tooltip={{$:/language/Buttons/Commander/Hint}} aria-label={{$:/language/Buttons/Commander/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/plugins/kookma/commander/images/commander.svg}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Commander/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/Commander]]\" emptyMessage=<<commander-button>>>\n<<commander-button \"tc-selected\">>\n</$list>\n"},"$:/plugins/kookma/commander/config/AutoFocus":{"created":"20190212055413944","modified":"20200324070652337","tags":"","type":"text/vnd.tiddlywiki","text":"yes"},"$:/plugins/kookma/commander/config/commonfields":{"created":"20200114192650891","modified":"20200324070652345","tags":"","type":"text/vnd.tiddlywiki","text":"created creator modified modifier revision bag"},"$:/plugins/kookma/commander/config/minlength":{"created":"20200110122842113","modified":"20200324070652355","tags":"","type":"text/vnd.tiddlywiki","text":"3"},"$:/plugins/kookma/commander/config/relink":{"created":"20190911153159143","modified":"20200324070652362","tags":"","type":"text/vnd.tiddlywiki","text":"\\define relink-plugin-notExisted() Update title in //tags// and //list// fields of other tiddlers\n<$checkbox tiddler=\"$:/config/RelinkOnRename\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\">\n<$list filter=\"[[$:/plugins/flibbles/relink]] +[has[title]]\" emptyMessage=<<relink-plugin-notExisted>> >\nUse //Relink// to update title across all other tiddlers\n</$list>\n</$checkbox>"},"$:/plugins/kookma/commander/config/systemfields":{"created":"20200106164439016","modified":"20200324070652372","tags":"","type":"text/vnd.tiddlywiki","text":"title text tags \ncreated modified craetor modifier \ntype bag revision\nlist caption"},"$:/plugins/kookma/commander/field/macros/add":{"created":"20200112073000701","modified":"20200325055206697","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define add-new-field-bulk(datafieldsTid:\"\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<<create-log-tiddler \"add-new-field-bulk\">>\n<$vars datafieldsTid=<<__datafieldsTid__>> >\n<$list filter=\"[subfilter<searchfilter>]\" variable=\"newTitle\">\n<<add-bulk-fields>>\n<$wikify name=newFields text=<<getFieldsname>> >\n<$macrocall $name=\"log-add-single-operation\" msg={{{[<newFields>addprefix[new fields:]addsuffix[added]]}}} tidItem=<<newTitle>> />\n</$wikify>\n</$list>\n</$vars>\n</$list>\n\\end\n\n\\define getFieldsname()\n<$list filter=\"[<__datafieldsTid__>indexes[]prefix[fldn]]\" variable=item>\n{{{ [<__datafieldsTid__>getindex<item>trim[]lowercase[]split[ ]join[_]] }}} \n</$list>\n\\end"},"$:/plugins/kookma/commander/field/macros/bulkfields":{"created":"20200109104450902","modified":"20200913180532516","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define numfilter() [range[1,$(flt)$]]\n\\define id_fldName() fldn$(cnt)$\n\\define id_fldValue() fldv$(cnt)$\n\n\\define add-bulk-fields()\n<$set name=\"flt\" tiddler=<<datafieldsTid>> field=\"counter\" emptyValue=\"1\"><!-- when the datafieldsTid is not exist, there is at least one field row -->\n<$list filter=<<numfilter>> variable=\"cnt\">\n<$list filter=\"[<datafieldsTid>getindex<id_fldName>]\" variable=\"newField\">\n<$action-setfield $tiddler=<<newTitle>> \n $field={{{ [<newField>trim[]lowercase[]split[ ]join[_]] }}}\n $value={{{ [<datafieldsTid>getindex<id_fldValue>] }}} />\n</$list>\n</$list>\n</$set>\n\\end\n\n\\define getInputs()\n<$edit-text tiddler=<<datafieldsTid>> index=<<id_fldName>> tag=input default=\"\" placeholder=\"field name\" />\n<$edit-text tiddler=<<datafieldsTid>> index=<<id_fldValue>> tag=input default=\"\" placeholder=\"field value\"/>\n\\end\n\n\\define add-reset()\n<$button>insert\n<$action-setfield $tiddler=<<datafieldsTid>> counter={{{[<datafieldsTid>get[counter]add[1]]~[[2]]}}}/>\n</$button>\n<$button>reset\n<$action-setfield $tiddler=<<datafieldsTid>> counter=\"1\"/>\n<$action-setfield $tiddler=<<datafieldsTid>> text=\"\"/>\n</$button>\n\\end\n\n\\define create-field-inputbox()\n<$wikify name=flt text={{{ [<datafieldsTid>get[counter]]~[[1]] }}} >\n<$list filter=<<numfilter>> variable=cnt>\n\n<<getInputs>>\n</$list>\n</$wikify>\n\\end\n\n\\define add-more-fields-ui(datafieldsTid:\"\")\n<$vars datafieldsTid=<<__datafieldsTid__>> >\n<<add-reset>>\n<<create-field-inputbox>>\n</$vars>\n\\end\n\n\\define add-more-fields-selective-ui(datafieldsTid:\"\", stateTiddler:\"$:/state/commander/tiddler-addfields-status\")\n<$checkbox \n tiddler=<<__stateTiddler__>>\n field=\"text\" \n checked=\"addfields\" unchecked=\"nofields\"\n default=\"nofields\" > \n Add fields\n</$checkbox>\n<$reveal type=\"match\" state=<<__stateTiddler__>> text=\"addfields\" default=\"nofields\" >\n<$vars datafieldsTid=<<__datafieldsTid__>> >\n<<add-reset>>\n<div style=\"padding-left:88px;\">\n<<create-field-inputbox>>\n</div>\n</$vars>\n</$reveal>\n\\end"},"$:/plugins/kookma/commander/field/macros/remove":{"created":"20200109083928203","modified":"20200325055328423","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define xx-add-new-field-bulk(newField:\"\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<$list filter=\"[<__newField__>!is[blank]]\">\n<<create-log-tiddler \"add-new-field-bulk\">>\n<$list filter=\"[subfilter<searchfilter>]+[!is[missing]]-[has:field[$newField$]]\">\n<$fieldmangler>\n<$action-sendmessage $message=\"tm-add-field\" $param=<<__newField__>> />\n</$fieldmangler>\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"new field `$newField$` added\"\"\" tidItem=<<currentTiddler>> />\n</$list>\n</$list>\n</$list>\n\\end\n\n\n\\define remove-old-field-bulk(oldField:\"\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<$list filter=\"[<__oldField__>!is[blank]]\">\n<<create-log-tiddler \"remove-old-field-bulk\">>\n<$list filter=\"[subfilter<searchfilter>]+[!is[missing]]+[has:field[$oldField$]]\">\n<$fieldmangler>\n<$action-sendmessage $message=\"tm-remove-field\" $param=<<__oldField__>> />\n</$fieldmangler>\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"old field `$oldField$` removed\"\"\" tidItem=<<currentTiddler>> />\n</$list>\n</$list>\n</$list>\n\\end\n\n\\define set-field-value-bulk(fieldName:\"Empty\", fieldValue:\"Empty\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<$list filter=\"[<__fieldName__>!is[blank]]\" variable=null>\n<$list filter=\"[<__fieldValue__>!is[blank]]\" variable=null>\n<<create-log-tiddler \"set-field-value-create-bulk\">>\n<$list filter=\"[subfilter<searchfilter>]-[$fieldName$[$fieldValue$]]\">\n<$list filter=\"[<currentTiddler>has:field[$fieldName$]]\" variable=ignore \nemptyMessage=\"\"\"<$macrocall $name=\"log-add-single-operation\" msg=\"//has not `$fieldName$` field. Operation ignored//\" tidItem=<<currentTiddler>> />\"\"\" >\n<$action-setfield $field=<<__fieldName__>> $value=<<__fieldValue__>> />\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"field `$fieldName$` got a value\"\"\" tidItem=<<currentTiddler>> />\n</$list>\n</$list>\n</$list>\n</$list>\n</$list>\n\\end\n\n"},"$:/plugins/kookma/commander/field/macros/rename":{"created":"20200107051937869","modified":"20200325055328448","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define rename-field-bulk(oldField:\"\", newField:\"\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore>\n<$list filter=\"[<__oldField__>!is[blank]]\" variable=null>\n<$list filter=\"[<__newField__>!is[blank]]\" variable=null>\n<<create-log-tiddler \"rename-field-bulk\">>\n<$list filter=\"[subfilter<searchfilter>]\">\n<$list filter=\"[<currentTiddler>has:field[$oldField$]]\" variable=ignore\n emptyMessage=\"\"\"<$macrocall $name=\"log-add-single-operation\" msg=\"//has not field `$oldField$`. Operation ignored.//\" tidItem=<<currentTiddler>> /> \"\"\">\n<$set name=oldValue tiddler=<<currentTiddler>> field=<<__oldField__>> >\t\n<$action-setfield $tiddler=<<currentTiddler>> $field=<<__newField__>> $value=<<oldValue>>/>\n</$set>\n<$action-deletefield $tiddler=<<currentTiddler>> $field=<<__oldField__>> />\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"fied `$oldField$` renamed to `$newField$`\"\"\" tidItem=<<currentTiddler>> />\n</$list>\n</$list>\n</$list>\n</$list>\n</$list>\n\\end\n"},"$:/plugins/kookma/commander/field/macros/set":{"created":"20190212101155537","modified":"20200325055328470","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define set-field-value-bulk(fieldName:\"\", fieldValue:\"\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<$list filter=\"[<__fieldName__>!is[blank]]\" variable=null>\n<$list filter=\"[<__fieldValue__>!is[blank]]\" variable=null>\n<<create-log-tiddler \"set-field-value-create-bulk\">>\n<$list filter=\"[subfilter<searchfilter>]-[$fieldName$[$fieldValue$]]\">\n<$list filter=\"[<currentTiddler>has:field[$fieldName$]]\" variable=ignore \nemptyMessage=\"\"\"<$macrocall $name=\"log-add-single-operation\" msg=\"//has not `$fieldName$` field. Operation ignored//\" tidItem=<<currentTiddler>> />\"\"\" >\n<$action-setfield $field=<<__fieldName__>> $value=<<__fieldValue__>> />\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"field `$fieldName$` got a value\"\"\" tidItem=<<currentTiddler>> />\n</$list>\n</$list>\n</$list>\n</$list>\n</$list>\n\\end\n\n"},"$:/plugins/kookma/commander/field/ui":{"caption":"Field","created":"20190212061551615","list-after":"$:/plugins/kookma/commander/tag/ui","modified":"20200324070652439","tags":"$:/tags/Commander","type":"text/vnd.tiddlywiki","text":"<<tabs \ntabsList:\"[all[shadows+tiddlers]tag[$:/tags/Commander/FieldOps]!has[draft.of]]\"\ndefault:\"$:/plugins/kookma/commander/field/uicomp/add-fields\" \nclass:\"tc-vertical cmd-tab-colorful cmd-tab-wd\"\n>>\n\n"},"$:/plugins/kookma/commander/field/uicomp/add-fields":{"caption":"Add fields","created":"20200109083519146","modified":"20200325055328482","tags":"$:/tags/Commander/FieldOps","type":"text/vnd.tiddlywiki","text":"<!-- create the interface-->\n<$macrocall $name=\"add-more-fields-ui\" datafieldsTid=\"$:/temp/commander/tiddler/datafields/addfield\" />\n\n\n<!-- call action macro -->\n<$button class=\"cmd-btn cmd-btn-wd\"> Add new fields\n<$macrocall $name=\"add-new-field-bulk\" \n datafieldsTid=\"$:/temp/commander/tiddler/datafields/addfield\" />\n</$button><br>\n,,Note: This will overwrite the existing fileds!,,"},"$:/plugins/kookma/commander/field/uicomp/remove-fields":{"caption":"Remove fields","created":"20190314051054548","list-after":"$:/plugins/kookma/commander/field/uicomp/add-fields","modified":"20200325055328489","tags":"$:/tags/Commander/FieldOps","type":"text/vnd.tiddlywiki","text":"<label class=\"kk-cmd-label\">Old field</label><$select class=\"cmd-select-wd\" tiddler=\"$:/temp/commander/field-remove\" default=\"\">\n<$list filter=\"[subfilter<searchfilter>fields[]sort[]] -title -tags\" >\n<option><$view field=\"title\"/></option>\n</$list>\n</$select>\n<$button class=\"cmd-btn cmd-btn-wd\"> Remove old field\n<$macrocall $name=\"remove-old-field-bulk\" oldField={{$:/temp/commander/field-remove}} />\n</$button>"},"$:/plugins/kookma/commander/field/uicomp/rename-fields":{"caption":"Rename fields","created":"20200107052908832","list-after":"$:/plugins/kookma/commander/field/uicomp/remove-fields","modified":"20200325055328499","tags":"$:/tags/Commander/FieldOps","type":"text/vnd.tiddlywiki","text":"<label class=\"kk-cmd-label\">Old field</label><$select class=\"cmd-select-wd\" \n tiddler=\"$:/temp/commander/rename-field/old\" default=\"\" >\n<$list filter=\"[subfilter<searchfilter>fields[]sort[]] -[<systemFieldsTid>get[text]split[ ]]\" > \n<option><$view field=\"title\"/></option>\n</$list>\n</$select>\n\n<label class=\"kk-cmd-label\">New field</label><$edit-text\ntiddler=\"$:/temp/commander/rename-field/new\"\ntag=\"input\"\ndefault=\"\"\nclass=\"cmd-txt-area\"\nplaceholder=\" new field name\"\n/>\n<$button class=\"cmd-btn cmd-btn-wd\"> Rename field\n<$macrocall $name=\"rename-field-bulk\" \noldField={{$:/temp/commander/rename-field/old}} \nnewField={{{ [[$:/temp/commander/rename-field/new]get[text]lowercase[]trim[]split[ ]join[_]] }}} />\n</$button>\n\n<!-- new field name is checked to be lowecase and leading and trailing spaces are removed and space between words replaced by underscore (_).\n-->"},"$:/plugins/kookma/commander/field/uicomp/set-field-value":{"caption":"Set field value","created":"20190212120609737","list-after":"$:/plugins/kookma/commander/field/uicomp/rename-fields","modified":"20200325055328506","tags":"$:/tags/Commander/FieldOps","type":"text/vnd.tiddlywiki","text":"<label class=\"kk-cmd-label\">Field name</label><$select class=\"cmd-select-wd\" \n tiddler=\"$:/temp/commander/field-name\" default=\"\" >\n<$list filter=\"[subfilter<searchfilter>fields[]sort[]] -[<systemFieldsTid>get[text]split[ ]]\" >\n<option><$view field=\"title\"/></option>\n</$list>\n</$select>\n\n<label class=\"kk-cmd-label\">Field value</label><$edit-text\ntiddler=\"$:/temp/commander/field-value\"\ntag=\"input\" default=\"\"\nclass=\"cmd-txt-area\" placeholder=\" field value\"/>\n<$button class=\"cmd-btn cmd-btn-wd\"> Set field value\n<$macrocall \n $name=\"set-field-value-bulk\" \n fieldName={{$:/temp/commander/field-name}} \n fieldValue={{$:/temp/commander/field-value}} \n/>\n</$button>"},"$:/plugins/kookma/commander/filters/Drafts":{"created":"20190214135512125","description":"{{$:/language/Filters/Drafts}}","filter":"[has[draft.of]sort[title]]","modified":"20200324070652476","tags":"$:/tags/Commander/Filter","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/commander/filters/geneal":{"created":"20190725091830350","description":"General filter","filter":"[all[shadows+tiddlers]search[your keywrods]]","modified":"20200324070652484","tags":"$:/tags/Commander/Filter","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/commander/filters/Missing":{"created":"20190214140029091","description":"{{$:/language/Filters/Missing}}","filter":"[all[missing]sort[title]]","modified":"20200324070652492","tags":"$:/tags/Commander/Filter","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/commander/filters/Orphans":{"created":"20190214135426497","description":"{{$:/language/Filters/Orphans}}","filter":"[all[orphans]sort[title]]","modified":"20200324070652498","tags":"$:/tags/Commander/Filter","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/commander/filters/RecentSystemTiddlers":{"created":"20190214135950458","description":"{{$:/language/Filters/RecentSystemTiddlers}}","filter":"[has[modified]!sort[modified]limit[50]]","modified":"20200324070652508","tags":"$:/tags/Commander/Filter","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/commander/filters/RecentTiddlers":{"created":"20190214135912493","description":"{{$:/language/Filters/RecentTiddlers}}","filter":"[!is[system]has[modified]!sort[modified]limit[50]]","modified":"20200324070652513","tags":"$:/tags/Commander/Filter","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/commander/filters/SessionTiddlers":{"created":"20190214135831279","description":"Tiddlers modified since the wiki was loaded","filter":"[haschanged[]]","modified":"20200324070652525","tags":"$:/tags/Commander/Filter","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/commander/filters/StoryList":{"created":"20190214135246552","description":"{{$:/language/Filters/StoryList}}","filter":"[list[$:/StoryList]] -$:/AdvancedSearch","modified":"20200324070652532","tags":"$:/tags/Commander/Filter","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/commander/filters/temp-and-state":{"created":"20190214141452091","description":"Temporary and state tiddlers","filter":"[prefix[$:/temp]] [prefix[$:/state]]","modified":"20200324070652542","tags":"$:/tags/Commander/Filter","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/commander/help/ui":{"caption":"Help","created":"20190314050052494","icon":"$:/core/images/help","list-after":"$:/plugins/kookma/commander/setting/ui","modified":"20200324070652550","tags":"$:/tags/Commander","type":"text/vnd.tiddlywiki","text":"<<tabs \ntabsList:\"[all[shadows+tiddlers]tag[$:/tags/Commander/Help]!has[draft.of]]\" \ndefault:\"$:/plugins/kookma/commander/help/uicomp/quick-tutorial\"\nclass:\"tc-vertical cmd-tab-colorful cmd-tab-wd\">>\n\n\n"},"$:/plugins/kookma/commander/help/uicomp/quick-tutorial":{"caption":"Quick tutorial","created":"20190314050138754","modified":"20200325092740142","tags":"$:/tags/Commander/Help","type":"text/vnd.tiddlywiki","text":"# Use ''Combo search'' to list possible tiddlers\n#* example: `concept` performs a standard search and find all matches in title, text, and tags\n#* example: `[tag[xx]]` finds all tiddlers tagged with //xx//\n#* example: `[prefix[tt]` finds all tiddlers have title started with //tt//\n#* example: `[has[draft.of]sort[title]]` finds all draft tiddlers\n\n# Use ''Select tiddlers'' for the resulting list to identify which specific tiddlers to do a batch operation on\n#* this step lets you to do a batch operation on selected tiddlers NOT all items by ''Combo search''!\n#* it is possible to select/deselect all tiddlers from ''Combo search'' result at once! Note that, by default all tiddlers are considered for bulk operation until selective operation is activated!\n# From ''Batch operations tabs'' select the batch operation you wish to perform on selected tiddlers\n#* example: title, tag, and field operations\n#* example: Snr operation\n#* Inspect tab can be used to inspect tiddlers before or after performing operations\n\n* Notes:\n** Multiple batch operations can be done on the same set (unless you change something in the search criteria)\n** Sometimes it is useful to use an intermediate batch to help, like tag tiddlers with a \"working\" tag, using multiple searches, then then use the \"working\" tag to apply a batch operation to\n\n<div class=\"commander-alert\">''Note'': For good operation a tiddler width of 800px is recommended. You can also use //Sidebar layout// as `Fluid story`.</div>\n\n\nFor detailed docummention go to [[Demo page|https://kookma.github.io/TW-Commander/]]\n\n!!! Footenote\n# [[Use filter expression|https://tiddlywiki.com/prerelease/#Filters:Filters%20%5B%5BFilter%20Expression%5D%5D%20%5B%5BFilter%20Syntax%5D%5D%20%5B%5BFilter%20Operators%5D%5D%20%5B%5BFilter%20Parameter%5D%5D%20%5B%5BFilter%20Run%5D%5D%20%5B%5BFilter%20Step%5D%5D%20%5B%5BFilter%20Whitespace%5D%5D]]"},"$:/plugins/kookma/commander/help/uicomp/regular-expression":{"caption":"Regular expressions","created":"20190314084511720","list-after":"$:/plugins/kookma/commander/help/uicomp/snr","modified":"20200325093450357","tags":"$:/tags/Commander/Help","type":"text/vnd.tiddlywiki","text":"!! Regular Expressions Quick Reference\n\n|''FLAGS'' |<|<|h\n| i |ignore case|case insensitive matching|\n| |whole words|match strings of a-z, 0-9 and _|\n| g |global|field start=^, field end=$, all matches|\n| m |multi-line|line start=^, line end=$, first match|\n| |first match|field start=^, field end=$, first match|\n|''MATCH'' |<|<|h\n|''Anchors''|<|<|\n| ^ |start of scope|see Flags, match is zero length|\n| $ |end of scope|see Flags, match is zero length|\n| \\b |word boundary|anchor to edge of word, zero length|\n| \\B |not word boundary|anchor inside word, zero length|\n|''Character Classes''|<|<|\n| [c] |class of characters|any one matches, e.g. [abc123]|\n| [^c] |negated class of characters|any one doesn't match, e.g. [^abc123]|\n|''Shorthand Character Classes''|<|<|\n| . |any character except newline|same as [^\\n]|\n| \\d |decimal|same as [0-9]|\n| \\D |not decimal|same as [^0-9]|\n| \\s |white-space|same as [\\ \\t\\n]|\n| \\S |not white-space|same as [^\\ \\t\\n]|\n| \\t |tab|same as [\\t]|\n| \\n |newline|same as [\\n]|\n| \\w |word character|same as [a-zA-Z0-9_]|\n| \\W |not word character|same as [^a-zA-Z0-9_]|\n|''Capturing Groups''|<|<|\n| (match) |match placed in variable $x|can be used in Replace|\n| (\\x) |repeats match pattern of $x|can be used in Replace|\n|''Quantifiers''|<|<|\n| ? |single match|match 0 or 1 time|\n| * |greedy match 0+|match 0 or as many times as possible|\n| *? |lazy match 0+|match 0 or as few times as possible|\n| + |greedy match 1+|match 1 or as many times as possible|\n| +? |lazy match 1+|match 1 or as few times as possible|\n| {x} |match x times|match x times|\n| {x,y} |match x to y times|match x times to exactly y times|\n| {x,} |match x or more times|match x times or as many as possible|\n|''Escapes''|<|<|\n| \\ |escape special characters|add to \\ [ ] ( ) { } ^ $ . ? * + for literals|\n|''REPLACE'' |<|<|h\n| $& |return the full match|<|\n| $x |return $x where x is the numeric index of a Capturing Group|<|\n|''NOTE'' |<|<|h\n|This Reference supports most ordinary uses of regular expressions.<br> For advanced options: [[MDN Reference|https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Using_simple_patterns]]; examples: [[regular-expressions.info|https://www.regular-expressions.info/tutorial.html]].|<|<|\n\n"},"$:/plugins/kookma/commander/help/uicomp/relink":{"caption":"Relink on rename","created":"20190912052826269","list-after":"$:/plugins/kookma/commander/help/uicomp/regular-expression","modified":"20200325093202388","tags":"$:/tags/Commander/Help","type":"text/vnd.tiddlywiki","text":"!! Relink on rename\nWhen Tiddler Commander is used to rename bulk tiddlers in operation like\n\n* Title operation\n** add/remove prefix\n** add/remove suffix\n** remove chars from the begining or end of title\n* ~SnR\n** Search and replace in tiddlers title\n\nIt is possible to update all links to title. This includes //tags// and //list//. If [[Relink|https://flibbles.github.io/tw5-relink/]] plugin is installed, then not only title will be updated in //tags// and //list// field, but also in all filters, transclusions, text field and evrywhere.\n\n<div class=\"commander-alert\"> ''Note'': Relink does not update all forms of title e.g those created from different segments, but it will update any occurances</div>\n\n\n!! How to integrate with ''Relink''?\n\nSimply install the [[Relink|https://flibbles.github.io/tw5-relink/]] plugin and it will be appeared as an option when Tiddler Commander title operations including ~SnR are performed!\n"},"$:/plugins/kookma/commander/help/uicomp/snr":{"caption":"Search-n-Replace","created":"20190307104654008","list-after":"$:/plugins/kookma/commander/help/uicomp/quick-tutorial","modified":"20200925143424505","tags":"$:/tags/Commander/Help","type":"text/vnd.tiddlywiki","text":"!! Search and replace using Snr\nSnr stands for search and replace, is a powerful tool uses regular expression for searching all fields and lets replace chars, words, phrases with new values.\n\n!! How to use\n* Enter a search filter or keywords in ''Combo search'' box like `[tag[myTag]]` or `concept`\n* Use ''Select tiddlers'' for the resulting list to identify which specific tiddlers to do a Snr operation on\n** If selective operation is unchecked, all tiddlers from step one will be included in Snr operation.\n* From ''Tiddler title'' drop down menu select a tiddler\n* From ''Field name'' drop down menu select a tiddler field like `text`\n** all fileds even `title` can be selected\n* In the ''Search text'' type the search term for example `this`\n* In the ''Replace with'' type the term you want to replace with like `that`\n* Check the ''Differences'' and if you are satisfied with the result, press the `Replace?` button\n* You can press `Replace all?` if you want to search and replace in all selected tiddlers\n\n;Remarks\n: The `Replace all?` lets you to search and replace in all selected tiddlers at once! It is possible to search and replace even in `title` field!\n\n<$list filter=\"[[snr.png]is[tiddler]]\"><<image-pretty img:\"snr.png\" width:\"60%\" align:\"center\" caption:\"Fig 1. Search and replace using regular expression\">></$list>\n\n!! Special characters\n<<<\nAs `SNR` uses ''regexp'' pattern to make search and replace, when special characters are used in the ''Search text'' box, they shall be escaped among them are `*`, `+`, `[]`, `?` ...\nTo use these characters do like below\n\n```\n\\[ \\] \\( \\) \\{ \\} \\. \\* \\+ \\? \\^ \\$ \\\\ \\|\n```\n<<<\n\n!! Warning\n<<<\n* SNR replace the contents of tiddlers.<br> ''//The action can not be undone//''. So always make a backup before performing any replace action\n<<<"},"$:/plugins/kookma/commander/help/uicomp/warning":{"caption":"Warning","created":"20200325092841002","list-after":"$:/plugins/kookma/commander/help/uicomp/relink","modified":"20200325093538187","tags":"$:/tags/Commander/Help","type":"text/vnd.tiddlywiki","text":";Note i\n:Tiddler Commander is a very powerful tool, it can change any field in any tiddler.// Make sure what you are doing//!\n\n;Note ii\n:Tiddler Commander uses two steps tiddler selection. It uses a combo search box to screen (using standard or filter search) possible tiddlers and then uses a selective list of tiddlers from first step for batch operation!\n:# If selective operation is unchecked, then all tiddlers from step one are used for batch operation\n:# If selective operation is checked, then user has to manually select among tiddlers, and the selected ones are used for batch operation \n\n;Note iii\n://Commander do not perform operation on shadow tiddlers//, unless they are overriden. Because shadow tiddlers aren’t stored as ''real'' tiddlers. They are intentionally excluded from most operations by default so that they don’t clutter filters made by users unless explicitly required. \n\n<div class=\"commander-alert\">''Warning''\nBefore using Tiddler commander for bulk operation on your own valuable, irreplaceable data, ''backup them''.\n</div>"},"$:/plugins/kookma/commander/history":{"created":"20200324061906253","modified":"20210102152245874","tags":"","type":"text/vnd.tiddlywiki","text":"Full change log https://kookma.github.io/TW-Commander/#ChangeLog\n\n* ''2.1.2'' -- 2021.01.02 -- Saq Imtiaz release\n* ''2.1.0'' -- 2020.03.25 -- stable release\n* ''0.1.0'' -- 2019.02.12 -- mature public release\n"},"$:/plugins/kookma/commander/images/commander.svg":{"caption":"file-alt (Regular)","created":"20190724144859943","modified":"20210102140141641","type":"text/vnd.tiddlywiki","text":"<svg class=\"tc-image-file-alt tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 384 512\"><path d=\"M288 248v28c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-28c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm-12 72H108c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-28c0-6.6-5.4-12-12-12zm108-188.1V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h204.1C264.8 0 277 5.1 286 14.1L369.9 98c9 8.9 14.1 21.2 14.1 33.9zm-128-80V128h76.1L256 51.9zM336 464V176H232c-13.3 0-24-10.7-24-24V48H48v416h288z\"/></svg>"},"$:/plugins/kookma/commander/inspect/comp/edit-fileds":{"created":"20190313061511585","modified":"20200325055328517","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define lingo-base() $:/language/EditTemplate/\n\\define config-title()\n$:/config/EditTemplateFields/Visibility/$(currentField)$\n\\end\n\n\\define config-filter()\n[[hide]] -[title{$(config-title)$}] \n\\end\n\n\\define new-field()\n<$vars name={{$:/temp/newfieldname}}>\n<$reveal type=\"nomatch\" text=\"\" default=<<name>>>\n<$button class=\"cmd-btn\">\n<$action-sendmessage $message=\"tm-add-field\"\n$name=<<name>>\n$value={{$:/temp/newfieldvalue}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldname\"/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldvalue\"/>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" text=\"\" default=<<name>>>\n<$button class=\"cmd-btn\">\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n</$vars>\n\\end\n\n\\define compInspect-edit-fileds(commonFields:\"\")\n\n<div class=\"tc-edit-fields\">\n<table class=\"tc-edit-fields\">\n<tbody>\n<$list filter=\"[all[current]fields[]] +[sort[title]]\" variable=\"currentField\">\n<$list filter=<<config-filter>> variable=\"temp\">\n<tr class=\"tc-edit-field\">\n<td class=\"tc-edit-field-name\">\n<$text text=<<currentField>>/>:</td>\n<td class=\"tc-edit-field-value\">\n<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}}/>\n</td>\n<td class=\"tc-edit-field-remove\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\n<$action-deletefield $field=<<currentField>>/>\n{{$:/core/images/delete-button}}\n</$button>\n</td>\n</tr>\n</$list>\n</$list>\n\n\n<$list filter=\"created creator modified modifier -[enlist<__commonFields__>]\" variable=\"currentField\">\n<tr class=\"tc-edit-field\">\n<td class=\"tc-edit-field-name\">\n<$text text=<<currentField>>/>:</td>\n<td class=\"tc-edit-field-value\">\n<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}}/>\n</td>\n<td class=\"tc-edit-field-remove\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\n<$action-deletefield $field=<<currentField>>/>\n{{$:/core/images/delete-button}}\n</$button>\n</td>\n</tr>\n</$list>\n\n\n\n\n</tbody>\n</table>\n</div>\n\n<$fieldmangler>\n<div class=\"tc-edit-field-add\">\n<em class=\"tc-edit\">\n<<lingo Fields/Add/Prompt>>\n</em>\n<span class=\"tc-edit-field-add-name\">\n<$edit-text tiddler=\"$:/temp/newfieldname\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}} focusPopup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-edit-texteditor tc-popup-handle\"/>\n</span>\n<$button popup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/field-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$linkcatcher to=\"$:/temp/newfieldname\">\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/User>>\n</div>\n<$list filter=\"[!is[shadow]!is[system]fields[]search:title{$:/temp/newfieldname}sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type\" variable=\"currentField\">\n<$link to=<<currentField>>>\n<<currentField>>\n</$link>\n</$list>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/System>>\n</div>\n<$list filter=\"[fields[]search:title{$:/temp/newfieldname}sort[]] -[!is[shadow]!is[system]fields[]]\" variable=\"currentField\">\n<$link to=<<currentField>>>\n<<currentField>>\n</$link>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>\n<span class=\"tc-edit-field-add-value\">\n<$edit-text tiddler=\"$:/temp/newfieldvalue\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class=\"tc-edit-texteditor\"/>\n</span>\n<span class=\"tc-edit-field-add-button\">\n<$macrocall $name=\"new-field\"/>\n</span>\n</div>\n</$fieldmangler>\n\\end"},"$:/plugins/kookma/commander/inspect/comp/edit-preview":{"created":"20200115050859257","modified":"20200325055328524","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define compInspect-edit-preview(tiddler, commonFields:\"\")\n<div class=\"tc-edit-fields\">\n<table class=\"tc-edit-fields\">\n<tbody>\n<tr class=\"tc-edit-field\"><td class=\"tc-edit-field-name\">title:</td>\n<td class=\"tc-edit-field-value\"><$link to=<<__tiddler__>> ><$text text=<<__tiddler__>> /></$link></td>\n</tr>\n<tr class=\"tc-edit-field\"><td class=\"tc-edit-field-name\">tags:</td>\n<td class=\"tc-edit-field-value\">{{$tiddler$||$:/core/ui/EditTemplate/tags}}</td>\n</tr>\n<tr class=\"tc-edit-field\"><td class=\"tc-edit-field-name\">text:</td>\n<td class=\"tc-edit-field-value\"><$macrocall $name=compInspect-get-field tiddler=<<__tiddler__>> field=\"text\" tag=\"textarea\" /></td>\n</tr>\n</tbody>\n</table>\n</div>\n\n<$tiddler tiddler=<<__tiddler__>> >\n<$macrocall $name=\"compInspect-edit-fileds\" commonFields=<<__commonFields__>> />\n</$tiddler>\n\\end\n\n\\define compInspect-get-field(tiddler, field, tag:\"input\") \n<$edit-text class=\"tc-edit-texteditor\" tiddler=<<__tiddler__>> field=<<__field__>> tag=<<__tag__>> default=\"\" placeholder={{$:/language/EditTemplate/Body/Placeholder}}/>\n\\end"},"$:/plugins/kookma/commander/inspect/comp/main":{"created":"20190308151331101","modified":"20200325055328536","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define compInspect(filter, stateTiddler:\"thisTiddler\")\n<$set name=\"state\" \n value={{{ [[$:/state/compInspect/]addsuffix<__stateTiddler__>] }}} >\n<$vars\n slStateTid={{{ [<state>addsuffix[/]addsuffix[selectState-tiddler]] }}}\n rvStateTid={{{ [<state>addsuffix[/]addsuffix[revealState-tiddler]] }}}\n chStateTid={{{ [<state>addsuffix[/]addsuffix[checkboxState-tiddler]] }}} >\n\nSelect tiddler <$macrocall $name=compSelect filter=<<__filter__>> stateTiddler=<<slStateTid>> />\n \n<$macrocall $name=\"check-common-fields\" stateTiddler=<<chStateTid>> />\n \n<$reveal stateTitle=<<rvStateTid>> type=\"nomatch\" text=\"edit\">\n<$button class=\"tc-btn-invisible\" setTitle=<<rvStateTid>> setTo=\"edit\" tooltip=\"edit tiddler\">{{$:/core/images/edit-button}}</$button>\n<$macrocall $name=compInspect-show-preview tiddler={{{ [<slStateTid>get[text]]+[subfilter<__filter__>] }}} commonFields={{{ [<chStateTid>get[text]] }}}/>\n</$reveal>\n<$reveal stateTitle=<<rvStateTid>> type=\"match\" text=\"edit\">\n<$button class=\"tc-btn-invisible\" setTitle=<<rvStateTid>> setTo=\"\" tooltip=\"confirm changes\">{{$:/core/images/done-button}}</$button>\n<$macrocall $name=compInspect-edit-preview tiddler={{{ [<slStateTid>get[text]]+[subfilter<__filter__>] }}} commonFields={{{ [<chStateTid>get[text]] }}}/>\n</$reveal>\n\n</$vars>\n</$set>\n\\end\n\n\\define check-common-fields(stateTiddler)\n<$vars commonFields={{{[<commonFieldsTid>get[text]]}}}>\n<$checkbox \n tiddler=<<__stateTiddler__>>\n field=\"text\" \n checked=<<commonFields>>\n unchecked=\"\"\n default=\"\"\n> Exclude common fields?</$checkbox>\n</$vars>\n\\end"},"$:/plugins/kookma/commander/inspect/comp/select":{"created":"20190308070713468","modified":"20200325055328546","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define compSelect(filter:\"\", stateTiddler:\"\", default:\"\", class:\"\", showButtons:\"show\")\n<$select tiddler=<<__stateTiddler__>> default=<<__default__>> class=<<__class__>> >\n<option value=\"\">None</option>\n<$list filter=<<__filter__>> variable=item>\n<option value=<<item>>><$text text=<<item>> /></option>\n</$list>\n</$select>\n<$reveal type=\"match\" text=\"show\" default=<<__showButtons__>> >\n<$vars myfilter=<<__filter__>> mystateTiddler=<<__stateTiddler__>> myitem={{{ [<__stateTiddler__>get[text]] }}} >\n<$button actions=<<cs-prev-item>> class=\"cmd-btn\"> prev </$button>\n<$button actions=<<cs-next-item>> class=\"cmd-btn\"> next </$button>\n</$vars>\n</$reveal>\n\\end\n\n\\define cs-prev-item()\n<$list filter=\"[subfilter<myfilter>] +[before<myitem>]\" variable=\"prev-item\" >\n<$action-setfield $tiddler=<<mystateTiddler>> text=<<prev-item>> />\n</$list>\n\\end\n\n\\define cs-next-item()\n<$list filter=\"[subfilter<myfilter>] +[after<myitem>]\" variable=\"next-item\" >\n<$action-setfield $tiddler=<<mystateTiddler>> text=<<next-item>> />\n</$list>\n\\end\n\n<!-- used by\n - $:/plugins/kookma/commander/compInspect/main\n-->"},"$:/plugins/kookma/commander/inspect/comp/show-preview":{"created":"20190308070953891","modified":"20200325055328553","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define compInspect-show-preview(tiddler, commonFields:\"\")\n<$vars mainFields=\"title tags text\">\n<table class=\"cmd-ci-table\">\n<tr><td class=\"leftcol\">title</td>\n<td class=\"rightcol\"><$link to=<<__tiddler__>> ><$text text=<<__tiddler__>> /></$link></td>\n</tr>\n\n<tr><td class=\"leftcol\">tags</td>\n<td style=\"padding:3px;\"><$macrocall $name=showTags tiddler=<<__tiddler__>> /></td>\n</tr>\n<tr><td class=\"leftcol\">text</td>\n<td><$transclude tiddler=<<__tiddler__>> field=\"text\" mode=\"block\"/></td>\n</tr>\n<$list filter=\"[<__tiddler__>fields[]] -[enlist<mainFields>] -[enlist<__commonFields__>]\" variable=\"otherFld\">\n<tr><td class=\"leftcol\"><<otherFld>></td>\n<td class=\"rightcol\"><$transclude tiddler=<<__tiddler__>> field=<<otherFld>> mode=\"inline\"/></td>\n</tr>\n</$list>\n</table>\n</$vars>\n\\end\n\n\\define showTags(tiddler)\n<$list filter=\"[<__tiddler__>tags[]]\" variable=tagItem >\n<$macrocall $name=tag tag=<<tagItem>> />\n</$list>\n\\end\n"},"$:/plugins/kookma/commander/inspect/ui":{"caption":"Inspect","created":"20190313075823496","list-after":"$:/plugins/kookma/commander/field/ui","modified":"20200325055328564","tags":"$:/tags/Commander","type":"text/vnd.tiddlywiki","text":"<<tabs \ntabsList:\"[all[shadows+tiddlers]tag[$:/tags/Commander/InspectOps]!has[draft.of]]\" \ndefault:\"$:/plugins/kookma/commander/inspect/uicomp/Inspection\"\nclass:\"tc-vertical cmd-tab-wd\">>\n"},"$:/plugins/kookma/commander/inspect/uicomp/Inspection":{"caption":"Inspect","created":"20190313080119081","modified":"20200325055328571","tags":"$:/tags/Commander/InspectOps","type":"text/vnd.tiddlywiki","text":"<$macrocall \n $name=compInspect\n filter=<<searchfilter>>\n stateTiddler=\"commander\"\n/>"},"$:/plugins/kookma/commander/license":{"created":"20200324061906254","modified":"20200324061959559","tags":"","type":"text/vnd.tiddlywiki","text":"Distributed under an MIT license.\n\nCopyright (c) 2018-2020 [[Mohammad Rahmani|https://github.com/kookma]]\n\n<<<\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n<<<"},"$:/plugins/kookma/commander/log/ui":{"caption":"Log status","created":"20190221152805807","modified":"20200324070652656","tags":"","type":"text/vnd.tiddlywiki","text":"<div class=\"commander-alert\" style=\"padding:5px;font-size:0.90em;\">\n<$button class=\"tc-btn-invisible tc-tiddlylink\" actions=<<delete-all-log-tiddlers>>>Clear log</$button>\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[tag[$:/tags/Commander/LogOps]]\" />\"\"\">\n<div class=\"tc-search-results\">\n<span class=\"kk-commander-log-note\">Recent number of operations: <<resultCount>></span><br>\n<$list filter=\"[tag[$:/tags/Commander/LogOps]] +[!sort[created]]\" variable=\"logTid\">\n<b><$view tiddler=<<logTid>> field=\"created\" format=\"date\" template=\"YYYY-0MM-0DD 0hh:0mm:0ss\"/> \n<$view tiddler=<<logTid>> field=\"caption\">\n <$view tiddler=<<logTid>> field=\"title\"></$view>\n</$view>\n</b>\n<ol><$list filter=\"[<logTid>indexes[]]\" variable=\"item\">\n<li><$link to=<<item>>><<item>></$link>\n<$set name=\"myItem\" tiddler=<<logTid>> index=<<item>> >\n<$list filter=\"[<myItem>!search[existed]]\" variable=\"ignore\" \n emptyMessage=\"\"\"<span style=\"color:red;\"><<myItem>></span>\"\"\" >\n<span class=\"kk-commander-log-item\"><<myItem>></span>\n</$list>\n</$set>\n</li>\n</$list></ol>\n</$list>\n</div>\n</$set>\n</div>"},"$:/plugins/kookma/commander/macros/compConfirmAction":{"created":"20190301145916990","modified":"20200324070652662","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define compConfirmAction(\nbtnLabel:\"Delete these tiddlers\", \nconfirmMessage:\"Are you sure you wish to delete\", \nstateTiddler:\"\"\ncountFilter:\"\", \nactionMacro:\"\")\n<$set name=resultCount value={{{ [subfilter<__countFilter__>count[]] }}} >\n<$reveal type=\"gt\" text=\"0\" default=<<resultCount>> >\n<$button popup=<<qualify \"\"\"$stateTiddler$\"\"\">> class=\"cmd-btn\">$btnLabel$</$button>\n</$reveal>\n<$reveal state=<<qualify \"\"\"$stateTiddler$\"\"\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<div class=\"tc-dropdown-item-plain\">\n$confirmMessage$ <<resultCount>> tiddler(s)?\n</div>\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"cmd-btn\"> $btnLabel$\n<$macrocall $name=<<__actionMacro__>> />\n</$button>\n</div>\n</div>\n</div>\n</$reveal>\n</$set>\n\\end"},"$:/plugins/kookma/commander/macros/definition":{"created":"20200102195320611","description":"some macro are not used REMOVE THEM","modified":"20200325055328579","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define tempPath() $:/temp/commander\n\n\\define searchboxTid() $(tempPath)$/search-box\n\\define selectiveOpsTid() $(tempPath)$/selective-operation\n\n\n\\define workingTag() $:/tags/Commander/Working\n\\define exportTagTid() $:/temp/commander/exportTag\n\\define systemFieldsTid() $:/plugins/kookma/commander/config/systemfields\n\\define commonFieldsTid() $:/plugins/kookma/commander/config/commonfields"},"$:/plugins/kookma/commander/macros/logging":{"created":"20190221163406469","modified":"20200325055356563","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define set-title() $:/temp/commander/logs/tid-{{{[tag[$:/tags/Commander/LogOps]count[]add[1]]}}}\n\n\\define create-log-tiddler(msg)\n<$wikify name=\"myTitle\" text=\"\"\"<<set-title>>\"\"\">\n<$wikify name=\"myCaption\" text=\"\"\"<$macrocall $name=\"set-caption\" msg=<<__msg__>> />\"\"\">\n<$action-createtiddler $basetitle=<<myTitle>>\n$savetitle=\"$:/state/commander/log-tiddler\"\ntags=\"$:/tags/Commander/LogOps\"\ntype=\"application/json\"\ncaption=<<__msg__>>\n/>\n</$wikify>\n</$wikify>\n\\end\n\n\\define log-add-single-operation(msg:\"commander operation\", tidItem:\"no item\")\n<$action-setfield $tiddler={{$:/state/commander/log-tiddler}} $index=<<__tidItem__>> $value=<<__msg__>> />\n\\end\n\n\n\\define delete-all-log-tiddlers()\n<$action-deletetiddler $filter=\"[tag[$:/tags/Commander/LogOps]]\" />\n\\end"},"$:/plugins/kookma/commander/macros/remove-workingtag":{"created":"20200103172259595","modified":"20200325055328597","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define remove-working-tag(oldTag)\n<$list filter=\"[all[shadows+tiddlers]tag<workingTag>limit[1]]\" variable=ignore>\n<<create-log-tiddler \"remove-workingTag\">>\n<$list filter=\"[all[shadows+tiddlers]tag<workingTag>]\">\n<$fieldmangler>\n<$action-sendmessage $message=\"tm-remove-tag\" $param=<<__oldTag__>> />\n</$fieldmangler>\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"working tag `$oldTag$` removed\"\"\" tidItem=<<currentTiddler>> />\n</$list>\n</$list>\n\\end\n\n\n"},"$:/plugins/kookma/commander/macros/slider":{"created":"20200105085554618","modified":"20200325065829776","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define commander-slider(title, default:\"closed\")\n<$set name=\"revealState\" value=<<qualify \"$:/state/commander/reveal/$title$\">>>\n<h2>\n <$reveal type=\"nomatch\" state=<<revealState>> text=\"open\" default=\"$default$\">\n <$button class=\"tc-btn-invisible tc-tiddlylink\" set=<<revealState>> setTo=\"open\">\n {{$:/core/images/right-arrow}}\n </$button>\n </$reveal>\n <$reveal type=\"match\" state=<<revealState>> text=\"open\" default=\"$default$\">\n <$button class=\"tc-btn-invisible tc-tiddlylink\" set=<<revealState>> setTo=\"closed\">\n {{$:/core/images/down-arrow}}\n </$button>\n </$reveal>\n <$view tiddler=\"$title$\" field=\"caption\">\n <$view tiddler=\"$title$\" field=\"title\"></$view>\n </$view>\n \n</h2>\n\n<$reveal type=\"match\" state=<<revealState>> text=\"open\" default=\"$default$\">\n<$transclude tiddler=\"$title$\" mode=\"block\" />\n</$reveal>\n</$set>\n\\end"},"$:/plugins/kookma/commander/macros/utility":{"created":"20190315092752816","modified":"20200325055356631","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define display(label,text)\n<$set name=\"stateTid\" value=\"$:/temp/commander/display/popup/$label$\" >\n<$button popup=<<stateTid>> class=\"tc-btn-invisible\"><span style=\"text-decoration: underline\">$label$</span></$button>\n<$reveal type=\"nomatch\" text=\"\" default=\"\" state=<<stateTid>> animate=\"yes\">\n<span style=\"color:blue;\"><$text text=<<__text__>> /></span></$reveal>\n</$set>\n\\end\n\n\\define is-filterSeearch-newer-than-selectedTitles(TidA, TidB)\n<$set name=\"tidAMod\" value={{{ [[$TidA$]get[modified]] }}}>\n<$set name=\"tidBMod\" value={{{ [[$TidB$]get[modified]] }}}>\n<$set name=\"tidAText\" value={{{ [[$TidA$]get[text]] }}}>\n<$set name=\"tidBText\" value={{{ [[$TidB$]get[text]] }}}>\n<$list filter=\"[<__TidB__>get[text]minlength[1]]\" variable=ignore>\n<$reveal type=\"nomatch\" default=<<tidAText>> text=<<tidBText>>>\n<$list filter=\"[<tidAMod>] [<tidBMod>] +[nsort[]last[1]removesuffix<tidBMod>]\">\nA new filter search has been detected, click on the search button to apply it.\n</$list>\n</$reveal>\n</$list>\n</$set>\n</$set>\n</$set>\n</$set>\n\\end\n\n!!Remarks\n;is-filterSeearch-newer-than-selectedTitles\n* Checks `TidA` and `TidB` for modified date and text\n* If They are not empty, then\n** checks if the text of two are equal, if not\n** checks to see if `TidB` is newer or not\n** if newer shows a message, to apply the new search filter\n* Note\n** `TidA=\"$:/temp/commander\"`\n** `TidB=\"$:/temp/commander/search-box\"`\n* is-filterSeearch-newer-than-selectedTitles is called from $:/plugins/kookma/commander/search/ui\n\n;display\n* gets a label and a text\n* create an inline label\n* on click label, the text is displayed as temporary popup\n* losing focus, the text goes hidden\n* this macro is used in customized compSelective to show the active filter"},"$:/plugins/kookma/commander/readme":{"created":"20200324061906254","modified":"20210102142228008","tags":"","type":"text/vnd.tiddlywiki","text":"; Tiddler Commander\nTiddler Commander, in short ''Commander'' is a unique tool for batch operations on tiddlers. Commander has the below features\n\n* Bulk tiddler creation/deletion\n* Combo search to filter and select tiddlers\n* Title operation: add, remove prefixes and suffixes, also remove cahras form begining and end of title (on renaming tiddlers, [[relink|$:/plugins/kookma/commander/help/uicomp/relink]] can be used to update title in other tiddlers)\n* Tag operation: add, remove, replace\n* Field operation: add, remove, rename, and set field value\n* SNR, search and replace in all fields including text, tags, //title//, and common fields\n* Inspect, to review and inspect tiddlers in one place, scroll among them and edit all fields (including common fields), tags, text (title is an exception!)\n* Log, create logs of all operations\n* Search, //save and load// any combination of filter search\n\n; Start Commander\n* Normally Commander adds its icon: <span class=\"cmd-doc\">{{$:/plugins/kookma/commander/images/commander.svg}}</span> to page controls.\n* Open the right sidebar and click on the <span class=\"cmd-doc\">{{$:/plugins/kookma/commander/images/commander.svg}}</span> Commander is started\n* In standard Tiddlywiki, control buttons are shown on the right sidebar under site title.\n\n; Code and demo\nFor learning plugin features, syntax, tutorial and examples see the plugin demo and code pages\n\n* Demo: https://kookma.github.io/TW-Commander/\n* Code: https://github.com/kookma/TW-Commander\n\n<style>\n.cmd-doc svg{\nwidth: 1.2em;\nheight: 1.2em;\nvertical-align: middle;}\n</style>"},"$:/plugins/kookma/commander/search/filter-button/clear":{"created":"20190214132946159","list-after":"$:/plugins/kookma/commander/search/filter-button/search","modified":"20200325055356645","tags":"$:/tags/Commander/Search/FilterButton","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/commander/macros/definition\n\n<$reveal type=\"nomatch\" stateTitle=<<searchboxTid>> stateField=\"text\" text=\"\">\n<$button class=\"tc-btn-invisible\" tooltip=\"clear search box and selected tiddlers\">\n<$action-setfield $tiddler=<<searchboxTid>> $field=\"text\" $value=\"\"/>\n<$action-setfield $tiddler=\"$:/temp/commander\" $field=\"text\" $value=\"\"/>\n<$action-setfield $tiddler=\"$:/state/commander/snr/select-tiddler\" $field=\"text\" $value=\"\"/><!-- SNR selection -->\n<$action-setfield $tiddler=\"$:/state/compInspect/temp/commander/selectState-tiddler\" $field=\"text\" $value=\"\"/> <!-- Inspect selection -->\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n\n<!--\nthere is extra action should be removed\n-->"},"$:/plugins/kookma/commander/search/filter-button/dropdown":{"created":"20190214133424013","modified":"20200325055328632","tags":"$:/tags/Commander/Search/FilterButton","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/commander/macros/definition\n\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/commander/filterDropdown\">> class=\"tc-btn-invisible\" tooltip=\"select a search filter\">\n{{$:/core/images/down-arrow}}\n</$button>\n</span>\n\n<$reveal state=<<qualify \"$:/state/commander/filterDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher to=<<searchboxTid>> >\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Commander/Filter]]\"><$link to={{!!filter}}><$transclude field=\"description\"/></$link>\n</$list>\n</div>\n</div>\n</$linkcatcher>\n</$set>\n</$reveal>"},"$:/plugins/kookma/commander/search/filter-button/save":{"created":"20190214141644228","list-after":"$:/plugins/kookma/commander/search/filter-button/clear","modified":"20200325055356657","tags":"$:/tags/Commander/Search/FilterButton","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/commander/macros/definition\n\n<$reveal type=\"nomatch\" stateTitle=<<searchboxTid>> stateField=\"text\" text=\"\">\n<$button class=\"tc-btn-invisible\" tooltip=\"save current search\" popup=<<qualify \"$:/state/commander/SaveDropdown\">> >\n{{$:/core/images/file}}\n</$button>\n</$reveal>\n\n<$reveal state=<<qualify \"$:/state/commander/SaveDropdown\">> type=\"popup\" class=\"tc-popup-keep\" position=\"belowleft\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<div class=\"tc-dropdown-item-plain\">\nSave new search filter<br><br>\n<$edit-text\ntiddler=\"$:/temp/commander/save-new-filter\"\ntag=\"input\"\ndefault=\"\"\nclass=\"cmd-txt-area\"\nplaceholder=\"description for new filter\"\n/> <br><br>\n\n<$button class=\"tc-btn\"> Save new filter\n<$macrocall $name=\"create-new-filter\" \n description={{$:/temp/commander/save-new-filter}} \n\tbasetitle=\"$:/plugins/kookma/commander/filters/yourFilter\" \n\tfilter={{{[<searchboxTid>get[text]]}}} \t/>\n<$action-deletetiddler $tiddler=\"$:/temp/commander/save-new-filter\"/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/commander/SaveDropdown\">> />\n</$button>\n</div>\n</div>\n</div>\n</$reveal>\n\n<!-- ToDO\ncorrect classes for textbox\n-->"},"$:/plugins/kookma/commander/search/macros/create-new-filter":{"created":"20190214142032323","modified":"20200325055356665","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define create-new-filter(description:\"\", basetitle:\"\", filter:\"\")\n<$list filter=\"[<__description__>!is[blank]]\" variable=\"ignore\">\n<$action-createtiddler \n $basetitle=\"\"\"$basetitle$\"\"\"\n tags=\"$:/tags/Commander/Filter\"\n description=<<__description__>>\n filter=\"\"\"$filter$\"\"\"\n /> \n</$list>\n\\end\n"},"$:/plugins/kookma/commander/search/macros/select-deselect":{"created":"20200106121946448","modified":"20200325055328657","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define select-all()\n<$list filter=\"[subfilter<filtertext>!is[missing]!tag<workingTag>]\">\n<$fieldmangler>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<workingTag>> />\n</$fieldmangler>\n\\end\n\n\\define deselect-all()\n<$list filter=\"[tag<workingTag>]\">\n<$fieldmangler>\n<$action-sendmessage $message=\"tm-remove-tag\" $param=<<workingTag>> />\n</$fieldmangler>\n\\end"},"$:/plugins/kookma/commander/search/macros/warning":{"created":"20200106143244633","modified":"20200325055328672","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define warn-for-selectedTids-from-previous-operation()\n<$list filter=\"[tag<workingTag>]-[subfilter<filtertext>]+[count[]!match[0]] \">\n<span style=\"color:red;font-size:0.85em\">There are remained selected tiddlers from previous search! Remove them by pressing ''deselect all''!</span>\n</$list>\n\\end"},"$:/plugins/kookma/commander/search/selection":{"caption":"Select tiddlers","created":"20190725144912018","modified":"20200325055328684","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/commander/macros/definition\n<$checkbox tiddler=<<selectiveOpsTid>> field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\" uncheckactions=<<deselect-all>> > Selective operation?</$checkbox>\n\n<$reveal type=\"nomatch\" stateTitle=<<selectiveOpsTid>> stateField=\"text\" text=\"yes\" tag=\"div\" class=\"kk-commander-tiddler-list kk-commander-columns3\">\n<$list filter=\"[subfilter<filtertext>!prefix[$:/temp/commander]!is[missing]]\"><$link/><br></$list>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<selectiveOpsTid>> stateField=\"text\" text=\"yes\" tag=\"div\">\n<$button actions=<<select-all>> > Select all</$button> <$button actions=<<deselect-all>> > Deselect all</$button>\n<small style=\"margin-left:10px;\">Number of tiddlers selected: <$count filter=\"[tag<workingTag>]\" /></small><br>\n<<warn-for-selectedTids-from-previous-operation>>\n</$reveal>\n\n\n<$reveal type=\"match\" stateTitle=<<selectiveOpsTid>> stateField=\"text\" text=\"yes\" tag=\"div\" class=\"kk-commander-tiddler-list kk-commander-columns3\">\n<$list filter=\"[subfilter<filtertext>!prefix[$:/temp/commander]!is[missing]]\">\n<$checkbox tag=<<workingTag>>> <$link/></$checkbox><br>\n</$list>\n</$reveal>\n\n<!-- Description\nThis tiddler implement interface to selectivly add tiddlers for commander operations.\nEach selected tiddler gets a working tag\n-->"},"$:/plugins/kookma/commander/search/ui":{"caption":"Commander filter search","created":"20190212055219117","modified":"20200325055356672","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/commander/macros/definition\n<!-- above statement is not required and only prevent this tiddler overwritten when this is opened by its own -->\n<div class=\"tc-search tc-advanced-search\" style=\"margin-bottom:-12px;\"><!-- negative margin for displaying matches -->\nCombo search <$edit-text tiddler=<<searchboxTid>> type=\"search\" tag=\"input\" default=\"\" placeholder=\"enter keywords or make a filter search e.g. [tag[myTag]]\" focus={{$:/plugins/kookma/commander/config/AutoFocus}}/>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Commander/Search/FilterButton]!has[draft.of]]\"><$transclude/></$list>\n</div>"},"$:/plugins/kookma/commander/setting/ui":{"caption":"Setting","created":"20190214140835173","icon":"$:/core/images/options-button","list-after":"$:/plugins/kookma/commander/inspect/ui","modified":"20200324070652760","tags":"$:/tags/Commander","type":"text/vnd.tiddlywiki","text":"<<tabs \ntabsList:\"[all[shadows+tiddlers]tag[$:/tags/Commander/Setting]!has[draft.of]]\" \ndefault:\"$:/plugins/kookma/commander/setting/uicomp/snr\"\nclass:\"tc-vertical cmd-tab-colorful cmd-tab-wd\">>\n"},"$:/plugins/kookma/commander/setting/uicomp/delete-all-temp-tiddlers":{"caption":"Temporary tiddlers","created":"20190301184304348","list-after":"$:/plugins/kookma/commander/setting/uicomp/relink","modified":"20200325055328690","tags":"$:/tags/Commander/Setting","type":"text/vnd.tiddlywiki","text":"\\define delete-all-temps()\n<$action-deletetiddler $filter=\"[search:title[$:/temp/commander/]]\" />\n\\end\n\n<$set name=numTids value={{{ [search:title[$:/temp/commander/]count[]] }}}>\n<$reveal type=\"match\" text=\"0\" default=<<numTids>> >\nNo temporary tiddlers is existed to delete!\n</$reveal>\n<$reveal type=\"gt\" text=\"0\" default=<<numTids>> >\nNumber of temporary tiddlers (including log tiddlers): <<numTids>><br>\n</$reveal>\n</$set>\n\n<$macrocall $name=\"compConfirmAction\"\nbtnLabel=\"Delete temp tiddlers\" \nconfirmMessage=\"Are you sure you wish to delete\"\nstateTiddler=\"$:/state/commander/setting/delete-temps\"\ncountFilter=\"[search:title[$:/temp/commander/]]\"\nactionMacro=\"delete-all-temps\"/>"},"$:/plugins/kookma/commander/setting/uicomp/minlength":{"caption":"Search minimum length","created":"20200110132540295","modified":"20200324070652774","tags":"$:/tags/Commander/Setting","type":"text/vnd.tiddlywiki","text":"Controls the minimum length of a search string before results are displayed.\n\n<label class=\"kk-cmd-label\">Minlength</label><$edit-text tiddler=\"$:/plugins/kookma/commander/config/minlength\" field=text default=3 placeholder=\"enter a number\" tag=input/>"},"$:/plugins/kookma/commander/setting/uicomp/search-filters":{"caption":"Search filter","created":"20200116114041370","modified":"20200325055328703","tags":"$:/tags/Commander/Setting","type":"text/vnd.tiddlywiki","text":"The below list shows the Commander search filter. To edit click on the link and edit tiddler for filter syntax or description\n\n<details>\n<summary>Commander saved filter search</summary>\n<dl>\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/Commander/Filter]]\" >\n<dt><$link/></dt>\n<dd><span style=\"display:inline-block;font-weight:700;width:100px\">Description:</span><$view field=\"description\"/></dd>\n<dd><span style=\"display:inline-block;font-weight:700;width:100px\">Filter:</span><$view field=\"filter\"/></dd>\n</$list>\n</dl>\n</details>"},"$:/plugins/kookma/commander/setting/uicomp/snr":{"caption":"Snr setting","created":"20190324051157188","modified":"20200324070652789","tags":"$:/tags/Commander/Setting","type":"text/vnd.tiddlywiki","text":"<<snr-difftext-cleanup>>\n<div style=\"padding-left:25px;font-size:0.9em\">\n\nThe cleanup attribute determines which optional post-processing should be applied to the diffs:\n\n* none: no cleanup is performed\n* semantic (default): rewrites the diffs for human readability\n* efficient: rewrites the diffs to minimise the number of operations for subsequent processing\n</div>"},"$:/plugins/kookma/commander/snr/macros/actions":{"created":"20190307164924193","modified":"20200325055328711","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define regexp-flags()\n{{$:/state/commander/snr/gm}}{{$:/state/commander/snr/case-sensitive}}{{$:/state/commander/snr/unicode}}\n\\end\n\n\\define snr-ui-show-diffs()\n<form class=\"cmd-snr-form\" style=\"width:100%;\">\n <fieldset>\n <legend style=\"color:#FF0000;\">Differences</legend>\nTiddler: <$link to={{$:/state/commander/snr/select-tiddler}}><$text text={{$:/state/commander/snr/select-tiddler}}/></$link>\n\n<$wikify name=flags text=<<regexp-flags>> >\n\n<$macrocall $name=\"replace-text-diff\" \n tiddler={{$:/state/commander/snr/select-tiddler}} \n field={{$:/state/commander/snr/select-tiddler/field}} \n replace={{$:/state/commander/snr/replace-text}} \n replaceWith={{$:/state/commander/snr/replace-text-with}} \n flags=<<flags>> \n wholeWords={{$:/state/commander/snr/whole-words}}\n/>\n\n</$wikify>\n</fieldset>\n</form>\n\\end\n\n\\define snr-check-diffs(tiddler:\"\", field:\"\")\n\\whitespace trim\n<$wikify name=flags text=<<regexp-flags>> >\n<$wikify name=\"result\" text=\"\"\"\n<$macrocall $name=\"replace-text\" \n tiddler=<<__tiddler__>>\n field=<<__field__>>\n replace={{$:/state/commander/snr/replace-text}} \n replaceWith={{$:/state/commander/snr/replace-text-with}} \n flags=<<flags>> \n wholeWords={{$:/state/commander/snr/whole-words}}\n/>\"\"\">\n<$reveal type=\"match\" text={{{ [<__tiddler__>get<__field__>] }}} default=<<result>> >\nsame\n</$reveal>\n<$reveal type=\"nomatch\" text={{{ [<__tiddler__>get<__field__>] }}} default=<<result>> >\ndifferent\n</$reveal>\n</$wikify>\n</$wikify>\n\\end\n\n\\define search-replace-in-tiddler-field(tiddler:\"\",field:\"\",replace:\"\",replaceWith:\"\")\n<$wikify name=ss text=<<snr-check-diffs \"\"\"$tiddler$\"\"\" \"\"\"$field$\"\"\">> >\n<$list filter=\"[<ss>] -same\" variable=ignore>\n<$list filter=\"[<__tiddler__>has[title]]\" variable=\"ignore\">\n<$wikify name=flags text=<<regexp-flags>> >\n<$macrocall $name=\"replace-text-button\" \n tiddler=<<__tiddler__>> \n field=<<__field__>>\n replace=<<__replace__>>\n replaceWith=<<__replaceWith__>> \n flags=<<flags>> \n wholeWords={{$:/state/commander/snr/whole-words}}\n/>\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"`$field$` field has been changed\"\"\" tidItem=<<__tiddler__>> />\n<$macrocall $name=\"clear-select-tiddler-if-field-is-title\" tiddler=<<__tiddler__>> field=<<__field__>> />\n</$wikify>\n</$list>\n</$list>\n</$wikify>\n\\end\n\n\\define clear-select-tiddler-if-field-is-title(tiddler, field)\n<$list filter=\"[<__field__>] +[search[title]]\" variable=\"ignore\">\n<$action-setfield $tiddler=\"$:/state/commander/snr/select-tiddler\" text=\"\"/>\n<$action-setfield $tiddler=\"$:/temp/commander/selected-titles\" $index=<<__tiddler__>> />\n</$list>\n\\end\n\n\\define search-replace-in-field-bulk()\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<<create-log-tiddler \"SNR operation\">>\n<$list filter=\"[subfilter<searchfilter>!is[missing]]\" >\n <$macrocall \n $name=\"search-replace-in-tiddler-field\"\n tiddler=<<currentTiddler>> \n field={{$:/state/commander/snr/select-tiddler/field}} \n replace={{$:/state/commander/snr/replace-text}} \n replaceWith={{$:/state/commander/snr/replace-text-with}} \n />\n</$list>\n</$list>\n\\end\n\n\\define search-replace-in-field-single-tiddler()\n<<create-log-tiddler \"SNR operation\">>\n <$macrocall \n $name=\"search-replace-in-tiddler-field\"\n tiddler={{$:/state/commander/snr/select-tiddler}}\n field={{$:/state/commander/snr/select-tiddler/field}} \n replace={{$:/state/commander/snr/replace-text}} \n replaceWith={{$:/state/commander/snr/replace-text-with}} \n />\n\\end\n\n\\define snr-actions()\n<$button actions=<<search-replace-in-field-single-tiddler>> tooltip=\"search and replace in a single tiddler\" class=\"cmd-btn\">\nReplace?\n</$button> \n<!-- replace in bulk tiddler with confirmation -->\n<$macrocall $name=\"compConfirmAction\"\ncountFilter=<<searchfilter>>\nactionMacro=\"search-replace-in-field-bulk\"\nstateTiddler=\"$:/state/commander/SelectiveReplaceAllDropdown\"\nconfirmMessage=\"Are you sure you wish to replace text in\" \nbtnLabel=\"Replace all?\"/>\n\\end"},"$:/plugins/kookma/commander/snr/macros/inputs":{"created":"20190306203626597","modified":"20200325055328720","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define snr-ui-inputs()\n<form class=\"cmd-snr-form\">\n <fieldset>\n <legend>Search and Replace</legend>\n\n<div class=\"item\">\n<label>Tiddler title</label>\n<$select tiddler=\"$:/state/commander/snr/select-tiddler\" default=\"\" class=\"cmd-snr-textbox\">\n<option value=\"\">None</option>\n<$list filter=\"[subfilter<searchfilter>]\" >\n<option value=<<currentTiddler>>><$text text=<<currentTiddler>>/></option>\n</$list>\n</$select>\n</div>\n\n<div class=\"item\">\n<label>Field name</label>\n<$select tiddler=\"$:/state/commander/snr/select-tiddler/field\" default=\"text\">\n<$list filter=\"[subfilter<searchfilter>fields[]]\">\n<option value=<<currentTiddler>>><$text text=<<currentTiddler>>/></option>\n</$list>\n</$select>\n</div>\n\n<div class=\"item\">\n<label>Search text</label>\n<$edit-text \n tiddler=\"$:/state/commander/snr/replace-text\" \n tag=\"input\" \n default=\"\" \n placeholder=\" text to replace\"\n class=\"cmd-snr-textbox\"/>\n</div>\n\n<div class=\"item\">\n<label>Replace with </label>\n<$edit-text \n tiddler=\"$:/state/commander/snr/replace-text-with\" \n tag=\"input\" \n default=\"\" \n placeholder=\" new text\"\n class=\"cmd-snr-textbox\"/>\n</div>\n<!-- Use relink to update titles -->\n<$list filter=\"[[$:/state/commander/snr/select-tiddler/field]get[text]match[title]]\" variable=ignore>\n<div class=\"item-relink\">{{$:/plugins/kookma/commander/config/relink}}</div>\n</$list>\n</fieldset>\n</form>\n\n\n\\end"},"$:/plugins/kookma/commander/snr/macros/regexp-flags":{"created":"20190306182052441","modified":"20200325055328730","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define snr-regexp-flags()\n\n<form class=\"cmd-snr-form\">\n<fieldset>\n<legend>Search flags</legend>\n\n<$checkbox \n tiddler=\"$:/state/commander/snr/case-sensitive\" \n field=\"text\" \n checked=\"i\" \n unchecked=\"\"\n/> ignore case<br>\n\n<$checkbox \n tiddler=\"$:/state/commander/snr/whole-words\" \n field=\"text\" \n checked=\"words\" \n unchecked=\"characters\"\n/> whole words<br>\n\n<$checkbox \n tiddler=\"$:/state/commander/snr/unicode\" \n field=\"text\" \n checked=\"u\" \n unchecked=\"\"\n/> unicode<br>\n\n<br>\n\n<$radio\n tiddler=\"$:/state/commander/snr/gm\" \n field=\"text\" \n value=\"\"> first match \n</$radio><br>\n\n<$radio\n tiddler=\"$:/state/commander/snr/gm\" \n field=\"text\" \n value=\"g\"> global match\n</$radio><br>\n\n<$radio\n tiddler=\"$:/state/commander/snr/gm\" \n field=\"text\" \n value=\"m\"> multiline mode\n</$radio><br>\n\n<$radio\n tiddler=\"$:/state/commander/snr/gm\" \n field=\"text\" \n value=\"mg\"> global multiline mode\n</$radio>\n\n</fieldset>\n</form>\n\\end"},"$:/plugins/kookma/commander/snr/macros/regexpsub.js":{"text":"!function(){'use strict';exports.name='regexpsub',exports.params=[{name:'searchValue'},{name:'replaceValue'},{name:'sourceText'},{name:'flags'},{name:'wholeWords'}],exports.run=function(e,r,a,n='gi',s='characters'){try{var t='words'===s.toLowerCase()?'\\\\b'+e+'\\\\b':e,t=new RegExp(t,n);return a.replace(t,r)}catch(e){return'ERROR IN REG EXPRESSION. YOU MAY NEED TO ESCAPE VALUES'}}}();","created":"20190214160253135","type":"application/javascript","modified":"20200324070652819","module-type":"macro"},"$:/plugins/kookma/commander/snr/macros/replace-text":{"created":"20190227134610136","modified":"20200325055328737","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define nothing-to-replace(tiddler, field:\"text\") \n<$diff-text source={{{ [<__tiddler__>get<__field__>] }}} dest={{{ [<__tiddler__>get<__field__>] }}} />\n\\end\n\n\\define replace-text(tiddler:\"\",field:\"text\",replace:\"\",replaceWith:\"\",flags:\"\", wholeWords:\"\")\n\\whitespace trim\n<$wikify name=\"source\" text=\"\"\"<$view tiddler=<<__tiddler__>> field=<<__field__>> mode=\"block\" format=\"text\"/>\"\"\">\n<$wikify name=\"result\" \n text=\"\"\"<$macrocall $name=\"regexpsub\" $type=\"text/plain\" \n sourceText=<<source>> \n searchValue=<<__replace__>> \n replaceValue=<<__replaceWith__>> \n flags=<<__flags__>> \n wholeWords=<<__wholeWords__>> />\"\"\" \n >\n<$text text=<<result>>/>\n</$wikify>\n</$wikify>\n\\end\n\n\\define replace-text-diff(tiddler:\"\", field:\"text\", replace, replaceWith, flags:\"\", wholeWords:\"\")\n<$list filter=\"[<__tiddler__>get<__field__>minlength[1]]\" variable=null emptyMessage=\"No tiddler is selected, or tiddler is empty.\">\n<$list filter=\"[<__replace__>minlength[1]]\" variable=null emptyMessage=<<nothing-to-replace \"\"\"$tiddler$\"\"\" \"\"\"$field$\"\"\">> >\n\n<$wikify name=\"result\" \n text=\"\"\"<$macrocall $name=\"replace-text\" \n tiddler=<<__tiddler__>> field=<<__field__>> \n replace=<<__replace__>> \n replaceWith=<<__replaceWith__>> \n flags=<<__flags__>>\n wholeWords=<<__wholeWords__>> />\"\"\"\n >\n<$diff-text source={{{ [<__tiddler__>get<__field__>] }}} dest=<<result>> cleanup={{$:/state/commander/snr/setting/cleanup}}/>\n</$wikify>\n\n</$list>\n</$list>\n\\end\n\n\\define replace-text-button(tiddler:\"\", field:\"text\", replace:\"\", replaceWith:\"\", flags:\"\", wholeWords:\"\")\n\\whitespace trim\n<$list filter=\"[<__tiddler__>get<__field__>minlength[1]]\" variable=null>\n<$list filter=\"[<__replace__>minlength[1]]\" variable=null>\n<$wikify name=\"result\" \n text=\"\"\"<$macrocall $name=\"replace-text\" \n tiddler=<<__tiddler__>> \n field=<<__field__>> \n replace=<<__replace__>> \n replaceWith=<<__replaceWith__>> \n flags=<<__flags__>>\n wholeWords=<<__wholeWords__>> />\"\"\"\n >\n<$reveal type=\"nomatch\" default=\"title\" text=<<__field__>> >\n <$action-setfield $tiddler=<<__tiddler__>> $field=<<__field__>> $value=<<result>>/>\n</$reveal>\n<$reveal type=\"match\" default=\"title\" text=<<__field__>> >\n <$action-sendmessage $message=\"tm-rename-tiddler\" from=<<__tiddler__>> to=<<result>> />\n</$reveal>\n</$wikify>\n</$list>\n</$list>\n\\end\n"},"$:/plugins/kookma/commander/snr/ui":{"caption":"Snr","created":"20190220210055713","icon":"$:/core/images/gitter","list-after":"$:/plugins/kookma/commander/inspect/ui","modified":"20200324070652833","tags":"$:/tags/Commander","type":"text/vnd.tiddlywiki","text":"Search and replcae in tiddler fields!\n\n<<tabs \ntabsList:\"[all[shadows+tiddlers]tag[$:/tags/Commander/SnrOps]!has[draft.of]]\" \ndefault:\"$:/plugins/kookma/commander/snr/uicomp/replace-text\"\nclass:\"tc-vertical cmd-tab-colorful cmd-tab-wd\">>\n\n"},"$:/plugins/kookma/commander/snr/uicomp/replace-text":{"caption":"Search and replace","created":"20190220211138573","icon":"$:/core/images/gitter","modified":"20200325055328748","tags":"$:/tags/Commander/SnrOps","type":"text/vnd.tiddlywiki","text":"<div class=\"cmd-snr-row\">\n<div class=\"cmd-snr-double-column\">\n<<snr-ui-inputs>>\n</div>\n<div class=\"cmd-snr-column\">\n<<snr-regexp-flags>> \n</div>\n</div>\n<<snr-ui-show-diffs>>\n<<snr-actions>>"},"$:/plugins/kookma/commander/stylesheet/alert":{"text":".commander-alert {\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px dotted gray;\n border-radius: 0.25rem;\n color: #0c5460;\n background-color: #d1ecf1;\n border-color: #bee5eb;\n\t\n}","created":"20190725161822490","modified":"20200325092557277","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/commander/stylesheet/buttons":{"text":"/**\n.cmd-btn{\n font-size:0.85em;\n font-size:300;\n color: #666666;\n background-color: #d8d8d8;\n padding: 3px 8px 3px 8px;\n border: 1px solid #a1a1a1;\n}\n**/\n\n.cmd-btn-wd{\n\twidth:20ch;\n}","created":"20190317080436103","modified":"20200324070652859","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/commander/stylesheet/compInspect/table":{"text":"/*compInspect table*/\n.cmd-ci-table\n{border-collapse: collapse;}\n\n.cmd-ci-table .leftcol{\nwidth:20%;\nvertical-align: top;\ntext-align: right;\nbackground-color:#f0f0f0;\n}\n.cmd-ci-table .rightcol{\nwidth:650px;\n}\n","created":"20190308134702363","modified":"20200324070652871","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/commander/stylesheet/new":{"text":".kk-commander-log-note{\n\tfont-style:italic; font-size:small;\n}\n.kk-commander-log-item {\n\tcolor:green;\n}\n\n/* This is missing and I added it */\n.cmd-txt-area{\n\tmin-width:25ch;\n}\n\n.cmd-txt-area2{\n\tmin-width:50ch;\n}\n\n/* Correct this later*/\n.kk-cmd-label{\n\tdisplay:inline-block;\n\twidth:85px;\n}\n\n.kk-cmd-label2{\n\tdisplay:inline-block;\n\twidth:120px;\n}","created":"20200105140038538","modified":"20200324070652878","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/commander/stylesheet/select-width":{"text":".cmd-sl{\n width:8ch;\n}\n\n.cmd-select-wd{\n min-width:25ch;\n}\n","created":"20190218214027079","modified":"20200324070652887","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/commander/stylesheet/snr/flexbox":{"text":".cmd-snr-row {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n width: 100%;\n}\n.cmd-snr-column {\n display: flex;\n flex-direction: column;\n flex-basis: 100%;\n flex: 1\n}\n\n.cmd-snr-double-column {\n display: flex;\n flex-direction: column;\n flex-basis: 100%;\n flex: 2\n}\n\n@media screen and (min-width: 800px) {\n .cmd-snr-column {\n flex: 1\n }\n\n .cmd-snr-double-column {\n flex: 2\n }\n}","created":"20190306203517655","modified":"20200324070652893","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/commander/stylesheet/snr/form":{"text":".cmd-snr-form{\n width:100%;\n}\n\n.cmd-snr-textbox {\n width:100%;\n box-sizing: border-box;\n max-width:40ch;\n }\n\n.cmd-snr-form select, .cmd-snr-form input{\n margin: 0.2rem;\n}\n.cmd-snr-form legend{\n background: #f5f5f5;\n padding: 3px 6px;\n}\n\n.cmd-snr-form { padding:20px; }\n.cmd-snr-form .item { padding: 2px; margin:2px; }\n.cmd-snr-form .item label { display:inline-block; width:100px; margin-left:5px; }\n.cmd-snr-form .item input { display:inline-block; }\n.cmd-snr-form .item select { display:inline-block; }\n\n/* only for relink checkbox on renaming tiddler */\n.cmd-snr-form .item-relink { padding: 2px; margin:2px; }\n\n ","created":"20190306191714819","modified":"20200324070652907","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/commander/stylesheet/tiddler-list":{"text":".kk-commander-tiddler-list {\n font-size:small; \n\tborder-left:0.5px \n\tdotted grey;\n\tpadding-left:10px;\n\toverflow-y:auto;\n\tmax-width:100%;\n\tmax-height:$(height)$;\n}\n\n.kk-commander-columns1 { display:block; column-count:1; column-gap:1em; }\n.kk-commander-columns2 { display:block; column-count:2; column-gap:1em; }\n.kk-commander-columns3 { display:block; column-count:3; column-gap:1em; }\n.kk-commander-columns4 { display:block; column-count:4; column-gap:1em; }\n.kk-commander-columns5 { display:block; column-count:5; column-gap:1em; }","created":"20200103165931672","modified":"20200324070652922","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/commander/tag/macros/add-remove-replace":{"created":"20190212063435548","modified":"20200325055328754","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define add-new-tag-bulk(newTag:\"\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<$list filter=\"[<__newTag__>!is[blank]]\" variable=null>\n<<create-log-tiddler \"add-new-tag-bulk\">>\n<$list filter=\"[subfilter<searchfilter>!tag<__newTag__>]\">\n<$fieldmangler>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<__newTag__>> />\n</$fieldmangler>\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"new tag `$newTag$` added\"\"\" tidItem=<<currentTiddler>> />\n</$list>\n</$list>\n</$list>\n\\end\n\n\\define remove-old-tag-bulk(oldTag:\"\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore>\n<$list filter=\"[<__oldTag__>!is[blank]]\" variable=null>\n<<create-log-tiddler \"remove-old-tag-bulk\">>\n<$list filter=\"[subfilter<searchfilter>tag<__oldTag__>]\">\n<$fieldmangler>\n<$action-sendmessage $message=\"tm-remove-tag\" $param=<<__oldTag__>> />\n</$fieldmangler>\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"old tag `$oldTag$` removed\"\"\" tidItem=<<currentTiddler>> />\n</$list>\n</$list>\n</$list>\n\\end\n\n\n\\define replace-tag-bulk(oldTag:\"\", newTag:\"\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore>\n<$list filter=\"[<__oldTag__>!is[blank]]\" variable=null>\n<$list filter=\"[<__newTag__>!is[blank]]\" variable=null>\n<<create-log-tiddler \"replace-tag-bulk\">>\n<$list filter=\"[subfilter<searchfilter>]\">\n<$list filter=\"[<currentTiddler>tag<__oldTag__>]\" variable=ignore\n emptyMessage=\"\"\"<$macrocall $name=\"log-add-single-operation\" msg=\"//has not tag `$oldTag$`. Operation ignored.//\" tidItem=<<currentTiddler>> /> \"\"\">\n<$fieldmangler>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<__newTag__>> />\n<$action-sendmessage $message=\"tm-remove-tag\" $param=<<__oldTag__>> />\n</$fieldmangler>\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"tag `$oldTag$` replaced with `$newTag$`\"\"\" tidItem=<<currentTiddler>> />\n</$list>\n</$list>\n</$list>\n</$list>\n</$list>\n\\end\n\n"},"$:/plugins/kookma/commander/tag/ui":{"caption":"Tag","created":"20190212051852003","list-after":"$:/plugins/kookma/commander/title/ui","modified":"20200325055328765","tags":"$:/tags/Commander","type":"text/vnd.tiddlywiki","text":"<<tabs \ntabsList:\"[all[shadows+tiddlers]tag[$:/tags/Commander/TagOps]!has[draft.of]]\" default:\"$:/plugins/kookma/commander/tag/uicomp/add-remove-tags\" \nclass:\"tc-vertical cmd-tab-wd\">>\n\n"},"$:/plugins/kookma/commander/tag/uicomp/add-remove-tags":{"caption":"Add remove tags","created":"20190212063924640","modified":"20200325055328771","tags":"$:/tags/Commander/TagOps","type":"text/vnd.tiddlywiki","text":"<label class=\"kk-cmd-label\">New tag</label><$edit-text\ntiddler=\"$:/temp/commander/tag-add-remove/new\"\ntag=\"input\"\ndefault=\"\"\nclass=\"cmd-txt-area\"\nplaceholder=\" new tag\"/>\n<$button class=\"cmd-btn cmd-btn-wd\"> Add new tag\n<$macrocall $name=\"add-new-tag-bulk\" newTag={{$:/temp/commander/tag-add-remove/new}} />\n</$button>\n\n<label class=\"kk-cmd-label\">Old tag</label><$select class=\"cmd-select-wd\" tiddler=\"$:/temp/commander/tag-add-remove/old\" default=\"\" >\n<$list filter=\"[subfilter<searchfilter>!is[missing]tags[]sort[]]-[<workingTag>]\" >\n<option><$view field=\"title\"/></option>\n</$list>\n</$select>\n<$button class=\"cmd-btn cmd-btn-wd\"> Remove old tag\n<$macrocall $name=\"remove-old-tag-bulk\" oldTag={{$:/temp/commander/tag-add-remove/old}} />\n</$button>\n\n"},"$:/plugins/kookma/commander/tag/uicomp/replace-tags":{"caption":"Replace tags","created":"20190212080523588","list-after":"$:/plugins/kookma/commander/tag/uicomp/add-remove-tags","modified":"20200325055328782","tags":"$:/tags/Commander/TagOps","type":"text/vnd.tiddlywiki","text":"<label class=\"kk-cmd-label\">Old tag</label><$select class=\"cmd-select-wd\" tiddler=\"$:/temp/commander/replace-tags/old\" default=\"\">\n<$list filter=\"[subfilter<searchfilter>!is[missing]tags[]sort[]]-[<workingTag>]\" >\n<option><$view field=\"title\"/></option>\n</$list>\n</$select>\n\n<label class=\"kk-cmd-label\">New tag</label><$edit-text\ntiddler=\"$:/temp/commander/replace-tags/new\"\ntag=\"input\"\ndefault=\"\"\nclass=\"cmd-txt-area\"\nplaceholder=\" new tag\"\n/>\n<$button class=\"cmd-btn cmd-btn-wd\"> Replace tag\n<$macrocall $name=\"replace-tag-bulk\" \noldTag={{$:/temp/commander/replace-tags/old}} \nnewTag={{$:/temp/commander/replace-tags/new}} />\n</$button>\n\n"},"$:/plugins/kookma/commander/template/base":{"caption":"base","created":"20190213200622605","modified":"20200324070652960","tags":"$:/tags/Commander/Template","type":"text/vnd.tiddlywiki","text":"This is a simple one!"},"$:/plugins/kookma/commander/template/doc":{"caption":"documentation","created":"20190213200338381","modified":"20200324070652969","tags":"$:/tags/Commander/Template","type":"text/vnd.tiddlywiki","version":"beta","text":"!! Introduction\n<<<\nshort introduction\n<<<\n\n!! Content and parameters\n<<<\nThe content, attributes and parameters\n\n|!Parameter |!Description |\n|par1 |description |\n|par2 |description |\n<<<\n\n!! Example i\n<<<\nexample here\n<<<\n\n!! Example ii\n<<<\nanother example here\n<<<\n\n!! References\n<<<\n# one\n# Two\n<<<"},"$:/plugins/kookma/commander/template/simple":{"caption":"simple","created":"20190213200258460","modified":"20200324070652975","tags":"$:/tags/Commander/Template","type":"text/vnd.tiddlywiki","version":"beta","text":"! Heading one\nThis is sunsection i\n\n!! Heading two\nThis is subsection ii.\n\n* one\n* two\n* three\n\n!!! Heading three\nThis is subsction iii\n\n```\nA sample code\n```\n\n!! Sample table\n|Table 1. This is caption|c\n|Heading one|Heading Two|Heading Three|h\n|r1|100|200|\n|r2|02|03|\n|r3|-1|-2|\n"},"$:/plugins/kookma/commander/tiddler/macros/create":{"created":"20190212125920722","modified":"20200325055328790","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define log-create(msg:\"Tiddler existed, operation ignored\")\n<$action-setfield $tiddler={{$:/state/commander/log-tiddler}} $index=\"$(newTitle)$\" $value=\"$msg$\" />\n\\end\n\n\\define bulk-tiddler-creator(baseTitle, baseTags, datafieldsTid, numberTiddler:\"1\")\n<$list filter=\"[<__baseTitle__>!is[blank]]\" variable=ignore>\n<<create-log-tiddler \"bulk-tiddler-creator\">>\n<$list filter=\"[range[9]addprefix[00]] [range[10,99]addprefix[0]] [range[100,500]] +[limit<__numberTiddler__>]\" variable=\"L1\">\n<$list filter=\"[<__baseTitle__>addsuffix<L1>]\" variable=\"newTitle\">\n<$list filter=\"[<newTitle>] -[has[title]]\" variable=\"ignore\" emptyMessage=<<log-create>> >\n<$action-createtiddler $basetitle=<<newTitle>> tags=<<__baseTags__>> /> \n<$vars datafieldsTid=<<__datafieldsTid__>> >\n<<add-bulk-fields>>\n</$vars>\n<<log-create \"Tiddler created\">>\n</$list>\n</$list>\n</$list>\n</$list>\n\\end\n\n\\define oneTid-with-template()\n<$tiddler tiddler=<<newTitle>> >\n <$action-setfield $tiddler=<<myTemplate>> title=<<currentTiddler>> /> \n <$fieldmangler>\n <$list filter=\"[enlist<myTags>]\" variable=newTag>\n <$action-sendmessage $message=\"tm-add-tag\" $param=<<newTag>> />\n </$list><!--next remove extra tag used by template from new created tiddler-->\n <$action-sendmessage $message=\"tm-remove-tag\" $param=\"$:/tags/Commander/Template\" />\n</$fieldmangler>\n</$tiddler>\n\\end\n\n\n\\define bulk-tiddler-with-template-creator(baseTitle, baseTags, datafieldsTid, numberTiddler:\"1\", template:\"\")\n<$list filter=\"[<__baseTitle__>!is[blank]]\" variable=ignore>\n<<create-log-tiddler \"bulk-tiddler-creator with template\">>\n<$vars datafieldsTid=<<__datafieldsTid__>>\n myTags=<<__baseTags__>> \n myTemplate=<<__template__>> >\n<$list filter=\"[range[9]addprefix[00]] [range[10,99]addprefix[0]] [range[100,500]] +[limit<__numberTiddler__>]\" variable=\"L1\">\n<$list filter=\"[<__baseTitle__>addsuffix<L1>]\" variable=\"newTitle\">\n<$list filter=\"[<newTitle>!has[title]]\" variable=\"ignore\" emptyMessage=<<log-create>> >\n <<oneTid-with-template>>\n <<add-bulk-fields>>\n <<log-create \"Tiddler created\">>\n</$list>\n</$list>\n</$list>\n</$vars>\n</$list>\n\\end\n\n"},"$:/plugins/kookma/commander/tiddler/macros/delete":{"created":"20190215195221625","modified":"20200325055328801","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define log-delete-selectively(item, msg:\"Tiddler deleted\")\n<$action-setfield $tiddler={{$:/state/commander/log-tiddler}} $index=<<__item__>> $value=\"$msg$\" />\n\\end\n\n\\define delete-tiddlers-selective-bulk()\n<$list filter=\"[subfilter<searchfilter>limit[1]]\" variable=\"ignore\"><!-- at least searchfilter shall return one tiddler-->\n<<create-log-tiddler \"delete-tiddler-selectively\">>\n<$list filter=\"[subfilter<searchfilter>]\" variable=\"Item\">\n<$action-deletetiddler $tiddler=<<Item>> />\n<$macrocall $name=\"log-delete-selectively\" item=<<Item>> />\n</$list>\n</$list>\n\\end"},"$:/plugins/kookma/commander/tiddler/macros/export":{"created":"20200113101003510","modified":"20200325055328808","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define add-export-tag()\n<$list filter=<<searchfilter>> >\n<$fieldmangler>\n<$list filter=\"[enlist{$(exportTagTid)$}]~[[exported]]\" variable=\"exportTag\" ><!-- add all export tags-->\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<exportTag>> />\n</$list>\n<$action-sendmessage $message=\"tm-remove-tag\" $param=<<workingTag>> />\n</$fieldmangler>\n</$list>\n\\end\n\n\\define remove-export-tag()\n<$list filter=<<searchfilter>> >\n<$fieldmangler>\n<$list filter=\"[<selectiveOpsTid>get[text]match[yes]]\" variable=ignore>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<workingTag>> />\n</$list>\n<$list filter=\"[enlist{$(exportTagTid)$}]~[[exported]]\" variable=\"exportTag\" ><!-- remove all export tags-->\n<$action-sendmessage $message=\"tm-remove-tag\" $param=<<exportTag>> />\n</$list>\n</$fieldmangler>\n</$list>\n\\end\n\n\\define log-export-selectively(msg:\"Tiddler exported\")\n<$list filter=\"[subfilter<searchfilter>]\" variable=\"item\">\n<$action-setfield $tiddler={{$:/state/commander/log-tiddler}} $index=<<item>> $value=\"$msg$\" />\n</$list>\n\\end\n\n\n\\define commander-exportButton(exportFilter:\"[!is[system]sort[title]]\",lingoBase,baseFilename:\"tiddlers\")\n<span class=\"tc-popup-keep\"><$button popup=<<qualify \"$:/state/popup/export\">> tooltip={{$lingoBase$Hint}} aria-label={{$lingoBase$Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/export-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$lingoBase$Caption}}/></span>\n</$list>\n</$button></span><$reveal state=<<qualify \"$:/state/popup/export\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Exporter]]\">\n<$set name=\"extension\" value={{!!extension}}>\n<$button class=\"tc-btn-invisible\">\n<<create-log-tiddler \"exportButton: bulk tiddlers exported\">>\n<$macrocall $name=\"log-export-selectively\"/><!--log any tiddler exported-->\n<<add-export-tag>><!-- by Mohammad-->\n<$action-sendmessage $message=\"tm-download-file\" $param=<<currentTiddler>> exportFilter=\"\"\"$exportFilter$\"\"\" filename=<<exportButtonFilename \"\"\"$baseFilename$\"\"\">>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/export\">>/>\n<$transclude field=\"description\"/>\n<<remove-export-tag>><!-- by Mohammad-->\n</$button>\n</$set>\n</$list>\n</div>\n</$reveal>\n\\end"},"$:/plugins/kookma/commander/tiddler/ui":{"caption":"Tiddler","created":"20190212125319261","list-before":"$:/plugins/kookma/commander/title/ui","modified":"20200325055328821","tags":"$:/tags/Commander","type":"text/vnd.tiddlywiki","text":"<<tabs \ntabsList:\"[all[shadows+tiddlers]tag[$:/tags/Commander/TiddlerOps]!has[draft.of]]\"\ndefault:\"$:/plugins/kookma/commander/tiddler/uicomp/create-tiddlers\"\nclass:\"tc-vertical cmd-tab-colorful cmd-tab-wd\">>\n"},"$:/plugins/kookma/commander/tiddler/uicomp/create-tiddlers":{"caption":"Create tiddlers","created":"20190213193004029","modified":"20200325055328832","tags":"$:/tags/Commander/TiddlerOps","type":"text/vnd.tiddlywiki","text":"<label class=\"kk-cmd-label\">Base title</label>\n<$edit-text \n tiddler=\"$:/temp/commander/tiddler-base-title\" \n tag=\"input\" default=\"\"\n placeholder=\" base title\" \n class=\"cmd-txt-area\"/><br>\n\n<label class=\"kk-cmd-label\">Tags</label>\n<$edit-text \n tiddler=\"$:/temp/commander/tiddler-base-tags\" \n tag=\"input\" default=\"\"\n placeholder=\" tags\" \n class=\"cmd-txt-area\"\n/> \n\n<!-- add interface for adding fields -->\n<$macrocall $name=\"add-more-fields-selective-ui\"\n datafieldsTid=\"$:/temp/commander/tiddler/datafields/createTiddler\"\n stateTiddler=\"$:/state/commander/tiddler-addfields-status\" />\n\n\n<$checkbox \n tiddler=\"$:/state/commander/tiddler-template-status\" \n field=\"text\" \n checked=\"use-template\" unchecked=\"no-template\"\n default=\"no-template\"> \n Use template?\n</$checkbox>\n\n<$reveal type=\"match\" state=\"$:/state/commander/tiddler-template-status\" text=\"use-template\" default=\"no-template\" >\nTemplate\n<$select tiddler=\"$:/temp/commander/template-newtiddler\" \n default=\"$:/plugins/kookma/commander/template/base\">\n<$list filter='[all[shadows+tiddlers]tag[$:/tags/Commander/Template]]'>\n<option value=<<currentTiddler>> >\n<$view field=\"caption\"><$view field=\"title\"/></$view>\n</option>\n</$list>\n</$select>\n<$button class=\"tc-btn-invisible\"> {{$:/core/images/edit-button}}\n <$action-sendmessage $message=\"tm-edit-tiddler\" \n $param={{{ [[$:/temp/commander/template-newtiddler]get[text]]~[[$:/plugins/kookma/commander/template/base]] }}} />\n</$button>\n\n</$reveal>\n\nNumber of tiddlers \n<$select tiddler=\"$:/temp/commander/tiddler-base-number\" default='1'>\n<$list filter='[range[1,19, 1]] [range[20,50, 5]] [range[60,100,10]] [range[200,500,100]]'>\n<option value=<<currentTiddler>>><$view field='title'/></option>\n</$list>\n</$select>\n\n<!-- call macros for create tiddlers -->\n<$reveal type=\"nomatch\" state=\"$:/state/commander/tiddler-template-status\" text=\"use-template\" default=\"no-template\">\n <$button class=\"cmd-btn cmd-btn-wd\"> Create tiddlers\n <$macrocall $name=\"bulk-tiddler-creator\"\n baseTitle={{$:/temp/commander/tiddler-base-title}}\n baseTags={{$:/temp/commander/tiddler-base-tags}}\n datafieldsTid=\"$:/temp/commander/tiddler/datafields/createTiddler\"\n numberTiddler={{$:/temp/commander/tiddler-base-number}} />\n </$button>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/state/commander/tiddler-template-status\" text=\"use-template\" default=\"no-template\">\n <$button class=\"cmd-btn cmd-btn-wd\"> Create tiddlers\n <$macrocall $name=\"bulk-tiddler-with-template-creator\"\n baseTitle={{$:/temp/commander/tiddler-base-title}}\n baseTags={{$:/temp/commander/tiddler-base-tags}}\n datafieldsTid=\"$:/temp/commander/tiddler/datafields/createTiddler\"\n numberTiddler={{$:/temp/commander/tiddler-base-number}}\n template={{$:/temp/commander/template-newtiddler}}/>\n </$button>\n</$reveal>\n"},"$:/plugins/kookma/commander/tiddler/uicomp/delete-tiddlers":{"caption":"Delete tiddlers","created":"20190301144408502","list-after":"$:/plugins/kookma/commander/tiddler/uicomp/create-tiddlers","modified":"20200325055328839","tags":"$:/tags/Commander/TiddlerOps","type":"text/vnd.tiddlywiki","text":"<$set name=numTids value={{{[subfilter<searchfilter>!is[missing]count[]] }}}>\n<$reveal type=\"match\" text=\"0\" default=<<numTids>> >\nNo tiddlers is selected for deleteion!\n</$reveal>\n<$reveal type=\"gt\" text=\"0\" default=<<numTids>> >\n\nNumber of tiddlers selected for deletion: <<numTids>><br>\nNote that, the delete operation cannot be undone!!\n<br>\n\n<$macrocall $name=\"compConfirmAction\"\ncountFilter=\"[subfilter<searchfilter>]\"\nactionMacro=\"delete-tiddlers-selective-bulk\"\nstateTiddler=\"$:/state/commander/SelectiveDeleteDropdown\"\n/>\n\n</$reveal>\n</$set>\n\n\n"},"$:/plugins/kookma/commander/tiddler/uicomp/export-tiddlers":{"caption":"Export tiddlers","created":"20200112093148417","list-after":"$:/plugins/kookma/commander/tiddler/uicomp/delete-tiddlers","modified":"20200325055328851","tags":"$:/tags/Commander/TiddlerOps","type":"text/vnd.tiddlywiki","text":"\\define export-tiddler-ui(baseFilename)\n<$set name=\"exportList\" filter=<<searchfilter>> ><!-- without this $SetWidget the exportButton does not work -->\n<$vars tv-config-toolbar-text=\"yes\" tv-config-toolbar-class=\"tc-button tt-button\">\n<$macrocall $name=\"commander-exportButton\" exportFilter=<<exportList>> lingoBase=\"$:/language/Buttons/ExportTiddlers/\" baseFilename=\"\"\"$baseFilename$\"\"\"/>\n</$vars>\n</$set>\n\\end\n\n\\define exportFileName-and-Tags-ui() \n<label class=\"kk-cmd-label2\">Export filename</label><$edit-text tiddler=\"$:/temp/commander/exportFilename\" tag=input default=\"tiddlers\" placeholder=\"tiddlers\" class=\"cmd-txt-area\"/>\n<br>\n\n<label class=\"kk-cmd-label2\">Export tags</label><$edit-text tiddler=\"$:/temp/commander/exportTag\" tag=input default=\"exported\" placeholder=\"exported\" class=\"cmd-txt-area\"/><br>\n\\end\n\n<$set name=numTids value={{{[subfilter<searchfilter>!is[missing]count[]] }}}>\n<$reveal type=\"match\" text=\"0\" default=<<numTids>> >\nNo tiddlers is selected for export!\n</$reveal>\n\n<$reveal type=\"gt\" text=\"0\" default=<<numTids>> >\n\nNumber of tiddlers selected for export: <<numTids>><br>\n\n<<exportFileName-and-Tags-ui>>\n<$macrocall $name=\"export-tiddler-ui\" baseFilename={{{[[$:/temp/commander/exportFilename]get[text]]~[[tiddlers]]}}} />\n</$reveal>\n</$set>\n\n"},"$:/plugins/kookma/commander/title/macros/prefix":{"created":"20190212122742891","modified":"20200325055328857","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define log-changePrefix(message, oldTitle, newTitle)\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"$message$. New title [[$newTitle$]]\"\"\" tidItem=<<__oldTitle__>> />\n\\end\n\n\\define addPrefix-to-tiltle-bulk(prefix:\"\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<$list filter=\"[<__prefix__>!is[blank]]\" variable=null>\n<<create-log-tiddler \"addPrefix-to-tiltle-bulk\">>\n<$list filter=\"[subfilter<searchfilter>]\">\n<$list filter=\"\"\"[<currentTiddler>addprefix[$prefix$]] -[<currentTiddler>]\"\"\" variable=\"newTitle\">\n<$list filter=\"[<newTitle>] -[has[title]]\" variable=\"ignore\">\n <$action-sendmessage $message=\"tm-rename-tiddler\" from=<<currentTiddler>> to=<<newTitle>> />\n <$macrocall $name=log-changePrefix message=\"title prefix: `$prefix$` added\" oldTitle=<<currentTiddler>> newTitle=<<newTitle>> />\n</$list>\n</$list>\n</$list>\n</$list>\n</$list>\n\\end\n\n\\define removePrefix-from-tiltle-bulk(prefix:\"\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<$list filter=\"[<__prefix__>!is[blank]]\" variable=null>\n<<create-log-tiddler \"removePrefix-from-tiltle-bulk\">>\n<$list filter=\"[subfilter<searchfilter>]\">\n<$list filter=\"\"\"[<currentTiddler>removeprefix[$prefix$]] -[<currentTiddler>]\"\"\" variable=\"newTitle\">\n<$list filter=\"[<newTitle>] -[has[title]]\" variable=\"ignore\">\n <$action-sendmessage $message=\"tm-rename-tiddler\" from=<<currentTiddler>> to=<<newTitle>> />\n <$macrocall $name=log-changePrefix message=\"title prefix: `$prefix$` removed\" oldTitle=<<currentTiddler>> newTitle=<<newTitle>> />\n</$list> \n</$list>\n</$list>\n</$list>\n</$list>\n\\end\n"},"$:/plugins/kookma/commander/title/macros/remove-cahrs-end":{"created":"20190218190318901","modified":"20200325055328869","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define suffix-actions2()\n<$list filter=\"[subfilter<searchfilter>]+[prefix<sfx>]\" variable=\"item\">\n <$action-sendmessage $message=\"tm-rename-tiddler\" from=<<item>> to=<<sfx>> />\n <$macrocall $name=\"log-add-single-operation\" msg=\"\"\"characters removed from end. New title [[$(sfx)$]]\"\"\" tidItem=<<item>> />\n</$list>\n\\end\n\n\n\\define makelink2() [[$(newTitle)$]]\n\n\\define generate-suffixes2(n:\"0\")\n<$list filter=\"[<__n__>] -0\" variable=null>\n<$list filter=\"[subfilter<searchfilter>]\" variable=\"item\">\n<$list filter=\"\"\"[<item>split[]butlast[$n$]join[]trim[]]\"\"\" variable=\"newTitle\">\n<$text text=<<makelink2>>/>\n</$list>\n</$list>\n</$list>\n\\end\n\n\\define remove-chars-from-end-tiltle-bulk(num:\"0\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<$list filter=\"[<__num__>] -0\" variable=null>\n<<create-log-tiddler \"remove-chars-from-end-tiltle-bulk\">>\n<$vars n=<<__num__>> >\n<$wikify text=\"\"\"<<generate-suffixes2 n:\"$num$\">>\"\"\" name=\"outputs\">\n <$list filter=\"[subfilter<outputs>]\" variable=\"sfx\">\n<$list filter=\"[subfilter<searchfilter>]+[prefix<sfx>limit[2]count[]regexp[2]]\" emptyMessage=<<suffix-actions2>> variable=\"cnt\">\n</$list>\n</$list>\n</$wikify>\n</$vars>\n</$list>\n</$list>\n\\end\n"},"$:/plugins/kookma/commander/title/macros/remove-cahrs-start":{"created":"20190218214608685","modified":"20200325055328877","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define suffix-actions()\n<$list filter=\"[subfilter<searchfilter>]+[suffix<sfx>]\" variable=\"item\">\n <$action-sendmessage $message=\"tm-rename-tiddler\" from=<<item>> to=<<sfx>> />\n <$macrocall $name=\"log-add-single-operation\" msg=\"\"\"characters removed from start. New title [[$(sfx)$]]\"\"\" tidItem=<<item>> />\n</$list>\n\\end\n\n\n\\define makelink() [[$(newTitle)$]]\n\n\\define generate-suffixes(n:\"0\")\n<$list filter=\"[<__n__>] -0\" variable=null>\n<$list filter=\"[subfilter<searchfilter>has[title]]\" variable=\"item\">\n<$list filter=\"\"\"[<item>split[]rest[$n$]join[]trim[]]\"\"\" variable=\"newTitle\">\n<$text text=<<makelink>>/>\n</$list>\n</$list>\n</$list>\n\\end\n\n\\define remove-chars-from-begining-tiltle-bulk(num:\"0\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<$list filter=\"[<__num__>] -0\" variable=null>\n<<create-log-tiddler \"remove-chars-from-begining-tiltle-bulk\">>\n<$vars n=<<__num__>> >\n<$wikify text=\"\"\"<<generate-suffixes n:\"$num$\">>\"\"\" name=\"outputs\">\n <$list filter=\"[subfilter<outputs>]\" variable=\"sfx\">\n <$list filter=\"[subfilter<searchfilter>]+[suffix<sfx>limit[2]count[]regexp[2]]\" \n emptyMessage=<<suffix-actions>> variable=\"cnt\">\n </$list>\n </$list>\n</$wikify>\n</$vars>\n</$list>\n</$list>\n\\end\n"},"$:/plugins/kookma/commander/title/macros/suffix":{"created":"20190212143639636","modified":"20200325055328886","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define log-changeSuffix(message, oldTitle, newTitle)\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"$message$. New title [[$newTitle$]]\"\"\" tidItem=<<__oldTitle__>> />\n\\end\n\n\\define addSuffix-to-tiltle-bulk(suffix:\"\")\n<$list filter=\"[<__suffix__>!is[blank]]\" variable=null>\n<$list filter=\"[subfilter<searchfilter>limit[1]]\" variable=ignore><!--check if filter is empty -->\n<<create-log-tiddler \"addSufffix-to-tiltle-bulk\">>\n<$list filter=\"[subfilter<searchfilter>]\">\n<$list filter=\"\"\"[<currentTiddler>addsuffix[$suffix$]] -[<currentTiddler>]\"\"\" variable=\"newTitle\">\n<$list filter=\"[<newTitle>] -[has[title]]\" variable=\"ignore\">\n <$action-sendmessage $message=\"tm-rename-tiddler\" from=<<currentTiddler>> to=<<newTitle>> />\n <$macrocall $name=log-changeSuffix message=\"title suffix: `$suffix$` added\" oldTitle=<<currentTiddler>> newTitle=<<newTitle>> />\n</$list>\n</$list>\n</$list>\n</$list>\n</$list>\n\\end\n\n\\define removeSuffix-from-tiltle-bulk(suffix:\"\")\n<$list filter=\"[<__suffix__>!is[blank]]\" variable=null>\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<<create-log-tiddler \"removeSuffix-from-tiltle-bulk\">>\n<$list filter=\"[subfilter<searchfilter>]\">\n<$list filter=\"\"\"[<currentTiddler>removesuffix[$suffix$]] -[<currentTiddler>]\"\"\" variable=\"newTitle\">\n<$list filter=\"[<newTitle>] -[has[title]]\" variable=\"ignore\">\n <$action-sendmessage $message=\"tm-rename-tiddler\" from=<<currentTiddler>> to=<<newTitle>> />\n <$macrocall $name=log-changeSuffix message=\"title suffix: `$suffix$` removed\" oldTitle=<<currentTiddler>> newTitle=<<newTitle>> />\n</$list>\n</$list>\n</$list>\n</$list>\n</$list>\n\\end\n"},"$:/plugins/kookma/commander/title/ui":{"caption":"Title","created":"20190212051704536","list-after":"$:/plugins/kookma/commander/tiddler/ui","modified":"20200324070653068","tags":"$:/tags/Commander","type":"text/vnd.tiddlywiki","text":"<<tabs \ntabsList:\"[all[shadows+tiddlers]tag[$:/tags/Commander/TitleOps]!has[draft.of]]\" \ndefault:\"$:/plugins/kookma/commander/title/uicomp/add-remove-prefix\"\nclass:\"tc-vertical cmd-tab-colorful cmd-tab-wd\">>\n\n<!-- relink checkbox for renaming title -->\n{{$:/plugins/kookma/commander/config/relink}}"},"$:/plugins/kookma/commander/title/uicomp/add-remove-chars":{"caption":"Remove chars","created":"20190217092719245","list-after":"$:/plugins/kookma/commander/title/uicomp/add-remove-suffix","modified":"20200325055328894","tags":"$:/tags/Commander/TitleOps","type":"text/vnd.tiddlywiki","text":"\\define rngcat() [range[0,$(minchars)$]] -0 \n\n<label style=\"width:30ch;\">Number of chars</label>\n<$select tiddler=\"$:/temp/commander/title-remove-chars\" default=\"0\" class=\"cmd-sl\">\n<$list filter=\"[subfilter<searchfilter>length[]minall[]subtract[1]] -Infinity\" variable=\"minchars\">\n<$list filter=<<rngcat>> >\n<option value=<<currentTiddler>>><$view field='title'/></option>\n</$list>\n</$list>\n</$select><br>\n\n<$button class=\"cmd-btn cmd-btn-wd\"> First n characters\n<$macrocall \n $name=\"remove-chars-from-begining-tiltle-bulk\" \n num={{$:/temp/commander/title-remove-chars}} />\n</$button>\n\n<$button class=\"cmd-btn cmd-btn-wd\"> Last n characters\n<$macrocall \n $name=\"remove-chars-from-end-tiltle-bulk\" \n num={{$:/temp/commander/title-remove-chars}} />\n</$button>\n\n\n"},"$:/plugins/kookma/commander/title/uicomp/add-remove-prefix":{"caption":"Add remove prefix","created":"20190212141758567","modified":"20200325055328903","tags":"$:/tags/Commander/TitleOps","type":"text/vnd.tiddlywiki","text":"<$edit-text\ntiddler=\"$:/temp/commander/title-prefix\"\ntag=\"input\"\ndefault=\"\"\nclass=\"cmd-txt-area\"\nplaceholder=\" prefix\"\n/> <br>\n\n<$button class=\"cmd-btn cmd-btn-wd\"> Add prefix\n<$macrocall \n $name=\"addPrefix-to-tiltle-bulk\" \n prefix={{$:/temp/commander/title-prefix}} \n/>\n</$button>\n\n<$button class=\"cmd-btn cmd-btn-wd\"> Remove prefix\n<$macrocall \n $name=\"removePrefix-from-tiltle-bulk\" \n prefix={{$:/temp/commander/title-prefix}} \n/>\n</$button>\n\n"},"$:/plugins/kookma/commander/title/uicomp/add-remove-suffix":{"caption":"Add remove suffix","created":"20190212143434676","list-after":"$:/plugins/kookma/commander/title/uicomp/add-remove-prefix","modified":"20200325055328912","tags":"$:/tags/Commander/TitleOps","type":"text/vnd.tiddlywiki","text":"<$edit-text\ntiddler=\"$:/temp/commander/title-suffix\"\ntag=\"input\" default=\"\"\nclass=\"cmd-txt-area\" placeholder=\" suffix\" /><br>\n\n<$button class=\"cmd-btn cmd-btn-wd\"> Add suffix\n<$macrocall \n $name=\"addSuffix-to-tiltle-bulk\" \n suffix={{$:/temp/commander/title-suffix}} />\n</$button>\n\n<$button class=\"cmd-btn cmd-btn-wd\"> Remove suffix\n<$macrocall \n $name=\"removeSuffix-from-tiltle-bulk\" \n suffix={{$:/temp/commander/title-suffix}} \n/>\n</$button>\n\n"},"$:/plugins/kookma/commander/viewtemplate/import":{"created":"20210102093753666","modified":"20210102140349092","tags":"$:/tags/ViewTemplate","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[all[current]match[$:/Import]status[complete]]\" variable=\"null\">\n<$button actions=\"\"\"<$action-setfield $tiddler=\"$:/temp/commander/search-box\" text=\"[[$:/Import]links[]]\"/><$action-navigate $to=\"$:/Commander\"/>\"\"\">\n{{$:/plugins/kookma/commander/images/commander.svg}} Batch edit\n</$button>\n</$list>"},"$:/Commander":{"created":"20190212051316149","icon":"$:/plugins/kookma/commander/images/file-alt","modified":"20200324074719052","type":"text/vnd.tiddlywiki","text":"\\import [all[shadows+tiddlers]tag[$:/tags/Commander/Macro]]\n{{$:/plugins/kookma/commander/search/ui}}\n<!-- Create the search filter based on searchbox and selective operation (if active) -->\n<$vars searchTerms={{{ [<searchboxTid>get[text]minlength{$:/plugins/kookma/commander/config/minlength}]~[[$:/errorCode:-23500]] }}} pattern=\"^\\[\"><!-- this part checks the combo search and selective ops-->\n<$set name=\"filtertext\" filter=\"[<searchTerms>regexp<pattern>]\" value=\"[subfilter<searchTerms>]\" emptyValue=\"[!is[system]search<searchTerms>]\">\n<$set name=\"searchfilter\" filter=\"[<selectiveOpsTid>get[text]match[yes]]\" \n\tvalue=\"[subfilter<filtertext>!prefix[$:/temp/commander]]+[tag<workingTag>]\" emptyValue=\"[subfilter<filtertext>!prefix[$:/temp/commander]]\" >\n<small style=\"margin-left:17ch;\"><i><$count filter=\"[subfilter<filtertext>!prefix[$:/temp/commander]!is[missing]]\" /> matches </i></small>\n\n<!-- Display search results and let selective operation -->\n<<commander-slider title:\"$:/plugins/kookma/commander/search/selection\" default:\"open\">>\n\n<!-- Display operation UIs-->\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/Commander]!has[draft.of]]\" default:\"$:/plugins/kookma/commander/tiddler/ui\">>\n\n</$set>\n</$set>\n<$vars>\n\n---\n\n<<commander-slider title:\"$:/plugins/kookma/commander/log/ui\">>\n"},"$:/language/Buttons/Commander/Hint":{"created":"20190725032106026","modified":"20200324080437905","tags":"","type":"text/vnd.tiddlywiki","text":"Tiddler Commander"},"$:/language/Buttons/Commander/Caption":{"created":"20190725032131129","modified":"20200324080437929","tags":"","type":"text/vnd.tiddlywiki","text":"commander"}}}
{"tiddlers":{"$:/plugins/kookma/favorites/frozen-list":{"caption":"Favorites","created":"20191228192318272","list-after":"$:/core/ui/SideBar/Open","modified":"20200326083226904","tags":"","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/favorites/macros/definition\n\\import $:/plugins/kookma/favorites/macros/slider\n\n\\define contents()\n<div style=\"padding-left:20px;\">\n<$list filter=\"[list<currentTiddler>]\">\n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/show-link\" field=text/>\n</$list>\n</div>\n\\end\n\n\n<$list filter=<<recentlyAdded>> >\n<div><<contents>>\n</div>\n</$list>\n\n\n<$list filter=\"[subfilter<folders>]-[<recentlyAdded>]\" >\n<div>\n<$macrocall $name=favslider\ntitle=<<currentTiddler>>\ncontent=<<contents>>\n/></div>\n</$list>"},"$:/plugins/kookma/favorites/history":{"created":"20200326073607951","modified":"20200326080816159","tags":"","type":"text/vnd.tiddlywiki","text":"Full change log https://kookma.github.io/TW-Favorites/#ChangeLog\n\n* ''4.4.0 '' -- 2020.03.26 -- moved to new Thirdflow development platform \n* ''4.3.0 '' -- 2019.11.19 -- correct caption when caption filed has wikitext\n* ''4.0.0 '' -- 2019.12.17 -- a rewrite of old favorite plugin\n* ''3.0.12'' -- 2018.11.01 -- released by Mohammad Rahmani\n* ''3.0.5 '' -- 2017.08.03 -- released by Andrew Harrison"},"$:/plugins/kookma/favorites/image":{"created":"20181010141333403","modified":"20200326185558195","path":"c-3.3-16.6-15.1-27.3-30.3-27.3-8.5,0-17.7,3.5-26.7,10.1-9.1-6.8-18.3-10.3-26.9-10.3-15.2,0-27.1,10.8-30.3,27.6-4.8,24.9 10.6,58 55.7,76 0.5,0.2 1,0.3 1.5,0.3 0.5,0 1-0.1 1.5-0.3 45-18.4 60.3-51.4 55.5-76.1zm-57,67.9c-39.6-16.4-53.3-45-49.2-66.3 2.4-12.7 11.2-21 22.3-21 7.5,0 15.9,3.6 24.3,10.5 1.5,1.2 3.6,1.2 5.1,0 8.4-6.7 16.7-10.2 24.2-10.2 11.1,0 19.8,8.1 22.3,20.7 4.1,21.1-9.5,49.6-49,66.3z","tags":"$:/tags/Image","type":"text/vnd.tiddlywiki","text":"\\define favorites-svg()\n<svg class='tc-image-favorites-button tc-image-button' width='22pt' height='22pt' viewBox=\"0 0 129 129\"><g><path stroke-width=\"6px\" d='m$(m)$$(path)$'/></g></svg>\n\\end\n\n<$vars m='121.6,40.1' path={{!!path}}>\n<<favorites-svg>>\n</$vars>"},"$:/plugins/kookma/favorites/license":{"created":"20200326073607952","modified":"20200326080900832","tags":"","type":"text/vnd.tiddlywiki","text":"Distributed under an MIT license.\n\nCopyright (c) 2018-2020 [[Mohammad Rahmani|https://github.com/kookma]]<br>\nCopyright (c) 2017-2018 [[Andrew Harrison|http://favorites.tiddlyspot.com/]]\n\n<<<\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n<<<\n"},"$:/plugins/kookma/favorites/macros/combo-search":{"created":"20191219070911471","description":"do not delete, part of example 103","modified":"20200326190600963","type":"text/vnd.tiddlywiki","text":"\\define standardSearch() [list<favlistTid>search<searchTerms>]\n\\define filterSearch() [list<favlistTid>]+[subfilter<searchTerms>]\n\n\\define displayResult(filter)\n<!-- other folders -->\n<$list filter=\"[<recentlyAdded>]\" variable=folder>\n<b><$view tiddler=<<folder>> field=caption/></b><br>\n<$list filter=<<__filter__>> variable=item >\n<$list filter=\"[<folder>search:list<item>]\">\n<span style=\"margin-left:8px;\"><$link to=<<item>>/></span><br>\n</$list>\n</$list>\n</$list>\n\n<!-- other folders -->\n<$list filter=\"[subfilter<folders>]-[<recentlyAdded>]\" variable=folder>\n<b><$view tiddler=<<folder>> field=caption/></b><br>\n<$list filter=<<__filter__>> variable=item >\n<$list filter=\"[<folder>search:list<item>]\">\n<span style=\"margin-left:8px;\"><$link to=<<item>>/></span><br>\n</$list>\n</$list>\n</$list>\n\\end\n\n\n\\define combo-search(stateTiddler:\"\")\n<$vars pattern=\"^\\[\"\n stateTid={{{ [[$:/temp/combosearch/]addsuffix[$stateTiddler$]addsuffix<qualify>] }}}>\t \n<!--UI -->\n<div class=\"tc-search tc-advanced-search\">\n<$edit-text tiddler=<<stateTid>> tag=input default=\"\" placeholder=\"search by keyword or filter\" class=\"sltext\"/>\t\t\t\n\n<!-- show results if any-->\n<$reveal state=<<stateTid>> type=\"nomatch\" text=\"\"><!--do not display when searchbox is empty-->\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=<<stateTid>> $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n\n<$set name=searchTerms tiddler=<<stateTid>> field=text>\n\n<$list filter=\"[<searchTerms>trim[]minlength[3]limit[1]]\" emptyMessage=\"Search text too short\" variable=ignore>\n\n<!-- Check input search term -->\n<div class=\"tc-search-results\">\n<$list filter=\"[<searchTerms>regexp<pattern>then[filterSearch]else[standardSearch]]\" variable=searchMethod >\n<$reveal type=nomatch default=\"filterSearch\" text=<<searchMethod>> >\n<$macrocall $name=displayResult filter=<<standardSearch>> />\n</$reveal>\n<$reveal type=match default=\"filterSearch\" text=<<searchMethod>> >\n<$macrocall $name=displayResult filter=<<filterSearch>> />\n</$reveal>\n\n</$list>\n</div>\n</$list>\n</$set>\n</$reveal>\n</div>\n</$vars>\n\\end"},"$:/plugins/kookma/favorites/macros/definition":{"created":"20191223204533023","modified":"20200326190417057","type":"text/vnd.tiddlywiki","text":"\\define folderpath() $:/favorites/folder\n\\define favlistTid() $:/favorites/favlist\n\\define foldertagTid() $:/tags/Favorites/Folder\n\\define folders() [tag[$(foldertagTid)$]]\n\\define recentlyAdded() $:/plugins/kookma/favorites/recent\n\n\\define temppath() $:/temp/favorites\n\n\\define selectionTid() $(temppath)$/selection\n\\define tempNewTid() $(temppath)$/new-folder\n\\define temppopupTid() $(temppath)$/delete-confirm\n\\define tempreorderTid() $(temppath)$/reorder\n\\define saveTid() $(temppath)$/savetitle"},"$:/plugins/kookma/favorites/macros/folding-editor":{"created":"20191222134036727","modified":"20200326083226990","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define fv-folding-editor(tiddler)\n<$set name=\"state\" value={{{ [[$:/temp/folding-editor/]addsuffix<currentTiddler>addsuffix<__tiddler__>] }}}>\n<$reveal stateTitle=<<state>> type=\"nomatch\" text=\"edit\">\n<span style=\"display:inline-block;min-width:320px;font-weight:700\">\n<$transclude tiddler=<<__tiddler__>> field=\"caption\"/>\n</span>\n<$button class=\"tc-btn-invisible\" setTitle=<<state>> setTo=\"edit\">{{$:/core/images/edit-button}}</$button>\n</$reveal>\n<$reveal stateTitle=<<state>> type=\"match\" text=\"edit\">\n<$edit-text class=\"\" tiddler=<<__tiddler__>> field=\"caption\" tag=\"input\" default=\"\" placeholder=\"enter a folder title\"/>\n<$button class=\"tc-btn-invisible\" setTitle=<<state>> setTo=\"\">{{$:/core/images/done-button}}</$button>\n</$reveal>\n</$set><span class=\"fv-folding-button\">\n<$button class=\"tc-btn-invisible\"> {{$:/core/images/delete-button}}\n<$action-listops $tiddler=<<favlistTid>> $field=\"list\" $subfilter=\"-[list<__tiddler__>]\" />\n<$action-listops $tiddler=<<foldertagTid>> $field=\"list\" $subfilter=\"-[[$tiddler$]]\" />\n<$action-deletetiddler $tiddler=<<__tiddler__>>/>\n</$button>\n<$radio tiddler=<<tempreorderTid>> field=text value=<<__tiddler__>>/>\n</span>\n\\end\n"},"$:/plugins/kookma/favorites/macros/sidebar":{"caption":"Favorites","created":"20191226064633412","list-before":"$:/core/ui/SideBar/Recent","modified":"20200326190524020","type":"text/vnd.tiddlywiki","text":"\\whitespace trim\n\\import $:/plugins/kookma/favorites/macros/slider\n\\import $:/plugins/kookma/favorites/macros/definition\n\n\\define drop-actions()\n<!-- case 1: tiddler is already in favlist and moved between folders by drag and drop -->\n<$reveal type=match default=<<favlistTid>> text={{{[<actionTiddler>listed[]match<favlistTid>]}}} >\n<$vars oldFolder={{{ [<actionTiddler>listed[]]+[subfilter<folders>]-[<folder>]+[limit[1]] }}}>\n<$action-listops $tiddler=<<oldFolder>> $field=\"list\" $subfilter=\"-[<actionTiddler>]\" />\n</$vars>\n</$reveal>\n<!-- case 2: tiddler is NOT already in favlist and dropped from outside favorites -->\n<$reveal type=nomatch default=<<favlistTid>> text={{{[<actionTiddler>listed[]match<favlistTid>]}}} >\n<$action-listops $tiddler=<<favlistTid>> $field='list' $subfilter=\"[<actionTiddler>]\"/>\n</$reveal>\n<!-- move it to the target folder -->\n<$action-listops $tiddler=<<folder>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define placeholder()\n<div class=\"tc-droppable-placeholder\"> </div>\n\\end\n\n\\define droppable-item()\n\\whitespace trim\n<$droppable actions=<<drop-actions>>>\n<<placeholder>>\n<div>\n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/delete-item\" field=text/> \n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/show-link\" field=text/>\n</div>\n</$droppable>\n\\end\n\n\\define droppable-item-after-last-item()\n\\whitespace trim\n<!--add extra space for drag and drop after last item-->\n<$droppable actions=<<drop-actions>>>\n<<placeholder>><div style=\"margin-top:-6px;margin-bottom:-6px;\"> </div>\n</$droppable>\n\\end\n\n\n\\define display-folder-is-empty()\n<div style=\"padding-left:20px;\">\n<$droppable actions=<<drop-actions>>>\n<<placeholder>>\n//Folder is empty//\n</$droppable>\n</div>\n\\end\n\n\\define display-fav-folder(folder)\n<$vars folder=<<__folder__>> >\n<!--check if folder is empty-->\n<$list filter=\"[list<folder>limit[1]]\" emptyMessage=<<display-folder-is-empty>> variable=ignore>\n<div style=\"padding-left:20px;\">\n<$list filter=\"[list<folder>]\"><!--display all tiddlers in folder list field one by one -->\n<$list filter=\"[<favlistTid>contains<currentTiddler>]\" variable=ignore><!--check if the tiddler is a favorite list-->\n<$macrocall $name=droppable-item />\n</$list>\n</$list>\n<<droppable-item-after-last-item>>\n</div>\n</$list>\n</$vars>\n\\end\n\n\\define display-fav-recentlyAdded()\n<$vars folder=<<recentlyAdded>> >\n<b><$transclude tiddler=<<folder>> field=\"caption\" /></b>\n<!--check if favlistTid is empty -->\n<$list filter=\"[list<folder>limit[1]]\" emptyMessage=<<display-folder-is-empty>> variable=ignore>\n<div style=\"padding-left:20px;\">\n<$list filter=\"[list<folder>]\"><!--get all items in favlistTid-->\n<$list filter=\"[<favlistTid>contains<currentTiddler>]\" variable=ignore><!--check if the tiddler is a favorite list-->\n<$macrocall $name=droppable-item />\n</$list>\n</$list>\n<<droppable-item-after-last-item>>\n</div>\n</$list>\n</$vars>\n\\end\n\n\n\\define favorites-tree()\n<!--show recently added favorites -->\n<<display-fav-recentlyAdded>>\n\n<!-- show all favorite folders -->\n<$list filter=\"[subfilter<folders>]-[<recentlyAdded>]\" variable=favfolder >\n<div><!--create a div for each folder-->\n<$macrocall $name=favslider\n title=<<favfolder>> \n content=\"\"\"<$macrocall $name=\"display-fav-folder\" folder=<<favfolder>> />\"\"\" />\n</div>\n</$list>\n\\end\n<!-- create the favorite tree -->\n<<favorites-tree>>"},"$:/plugins/kookma/favorites/macros/slider":{"created":"20191220123602267","modified":"20200326190213819","type":"text/vnd.tiddlywiki","text":"\\define favslider(title, content)\n<$set name=\"revealState\" filter={{{ [[$:/temp/favorits/]addsuffix<__title__>addsuffix<qualify>] }}}>\n<$reveal type=\"nomatch\" state=<<revealState>> text=\"yes\">\n <$button class=\"tc-btn-invisible tc-tiddlylink\" set=<<revealState>> setTo=\"yes\" >\n {{$:/core/images/right-arrow}}\n </$button>\n</$reveal>\n<$reveal type=\"match\" state=<<revealState>> text=\"yes\">\n <$button class=\"tc-btn-invisible tc-tiddlylink\" set=<<revealState>> setTo=\"no\" >\n {{$:/core/images/down-arrow}}\n </$button>\n</$reveal>\n<$list filter=\"[<fv-config-buttons>match[yes]]\" \n emptyMessage=\"\"\"<b><$transclude tiddler=<<__title__>> field=\"caption\"/></b>\"\"\"\n\tvariable=ignore>\n <$macrocall $name=\"fv-folding-editor\" tiddler=<<__title__>> />\n</$list>\n<$reveal type=\"match\" state=<<revealState>> text=\"yes\">\n$content$\n</$reveal>\n</$set>\n\\end"},"$:/plugins/kookma/favorites/manager/export":{"caption":"Export","created":"20191226173845382","modified":"20200326083227031","tags":"$:/favorites/Manager","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/favorites/macros/definition\n\\define lingo-base() $:/language/Search/\n\nExport and delete favorites\n\n<$vars selection={{{ [<selectionTid>get[text]] }}} >\n\n<div class=\"tc-search tc-advanced-search fv-form\">\n<$select tiddler=<<selectionTid>> class=\"sltext\" field=\"text\" default=\"message\">\n<option value=\"message\" disabled selected>Select a folder</option>\n<$list filter=<<folders>> >\n<option value=<<currentTiddler>>><$transclude field=caption/></option>\n</$list>\n<$list filter=\"[subfilter<folders>count[]!match[0]]\">\n<option disabled>─────</option>\n<option value=\"$:/favorites/favlist\" style=\"font-weight:500;\">all favorites</option>\n</$list>\n</$select>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/plugins/kookma/favorites/manager/exptab]!has[draft.of]]\"><$transclude/></$list>\n</div>\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[list<selection>]\"/>\"\"\">\n<div class=\"tc-search-results\">\n<<lingo Filter/Matches>>\n<$list filter=\"[list<selection>]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$set>\n\n</$vars>"},"$:/plugins/kookma/favorites/manager/exptab-delete":{"created":"20191226172205238","modified":"20200326190524040","type":"text/vnd.tiddlywiki","text":"<$reveal type=nomatch default=\"0\" text={{{[list<selection>count[]]}}} ><!--display button if there is a result-->\n<$button popup=<<qualify $(temppopupTid)$>> class=\"tc-btn-invisible\" tooltip=\"delete tiddlers\">\n{{$:/core/images/delete-button}}\n</$button>\n</$reveal>\n\n<$reveal state=<<qualify $(temppopupTid)$>> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<div class=\"tc-dropdown-item-plain\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[list<selection>]\"/>\"\"\">\nAre you sure you wish to delete permanently <<resultCount>> tiddler(s)?\n</$set>\n</div>\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-button tt-button\"> delete\n <$action-deletetiddler $filter=\"[list<selection>]\" />\n\t <$action-listops $tiddler=<<favlistTid>> $field='list' $subfilter=\"-[list<selection>]\"/>\n\t <$action-listops $tiddler=<<selection>> $field='list' $subfilter=\"-[list<selection>]\"/>\n</$button>\n</div>\n</div>\n</div>\n</$reveal>\n"},"$:/plugins/kookma/favorites/manager/exptab-export":{"created":"20191226172145394","modified":"20200326190524050","type":"text/vnd.tiddlywiki","text":"\\define export-favorites()\n<$reveal type=nomatch default=\"0\" text={{{[list<selection>count[]]}}} ><!--display button if there is a result-->\n<$macrocall $name=\"exportButton\" exportFilter=\"[list[$(selection)$]]\" lingoBase=\"$:/language/Buttons/ExportTiddlers/\" baseFilename=\"favorites\"/>\n</$reveal>\n\\end\n<<export-favorites>>"},"$:/plugins/kookma/favorites/manager/folders":{"caption":"Folders","created":"20191226064442751","modified":"20200326083227048","tags":"$:/favorites/Manager","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/favorites/macros/definition\n\\define add() [[$(saveTitle)$]]\n\\define newtitle() $(folderpath)$-{{{[tag<foldertagTid>count[]add[1]addprefix[0000]split[]last[3]join[]]}}}\n\n\n\\define new-fav-folder()\n<$edit-text tag=input tiddler=<<tempNewTid>> default=\"\" placeholder=\"enter a folder name\"/>\n<$list filter=\"[<tempNewTid>get[text]!is[blank]]\">\n<$vars \n folderName ={{{ [<tempNewTid>get[text]] }}} \n\tsaveTitle={{{[<saveTid>get[text]]}}} >\n<$wikify name=xtitle text=<<newtitle>> >\t\n<$button tooltip=\"create new folder\" class=\"tc-btn-invisible\">{{$:/core/images/new-button}}\n<$action-createtiddler \n $basetitle=<<xtitle>>\n\t$savetitle=<<saveTid>>\n\tcaption=<<folderName>>\n\ttags=<<foldertagTid>> />\n<$action-listops $tiddler=<<foldertagTid>> $field=\"list\" $subfilter=\"[<saveTid>get[text]]\" />\n<!-- clear edit-text temp tiddler-->\n<$action-setfield $tiddler=<<tempNewTid>> text=\"\"/>\n</$button>\n</$wikify>\n</$vars>\n</$list>\n\\end\n\n\\define folder-reorder(listTid)\n<$tiddler tiddler={{{ [<tempreorderTid>get[text]] }}} >\n<span style=\"display:inline-block;min-width:120px;font-weight:700;\"><$view field=caption/></span>\n\n<$button class=\"tc-btn-invisible\">down\n<$action-listops $tiddler=\"$listTid$\" $field=\"list\" $subfilter=\"+[move<currentTiddler>]\"/>\n</$button>\n \n<$button class=\"tc-btn-invisible\">up\n<$action-listops $tiddler=\"$listTid$\" $field=\"list\" $subfilter=\"+[move:-1<currentTiddler>]\"/>\n</$button>\n \n<$button class=\"tc-btn-invisible\">putfirst\n<$action-listops $tiddler=\"$listTid$\" $field=\"list\" $subfilter=\"[<currentTiddler>]+[putfirst[]]\"/>\n</$button>\n \n<$button class=\"tc-btn-invisible\">putlast\n<$action-listops $tiddler=\"$listTid$\" $field=\"list\" $subfilter=\"+[putlast[]]\"/>\n</$button>\n \n<$button class=\"tc-btn-invisible\">sort downwards\n<$action-listops $tiddler=\"$listTid$\" $field=\"list\" $subfilter=\"+[sort[caption]]\"/>\n</$button>\n \n<$button class=\"tc-btn-invisible\">sort upwards\n<$action-listops $tiddler=\"$listTid$\" $field=\"list\" $subfilter=\"+[!sort[caption]]\"/>\n</$button>\n</$tiddler>\n\\end\n\n\n\n\\define remove-all-favs()\n<$button class=\"tc-btn-invisible tc-btn-mini\" popup=<<qualify $(temppopupTid)$>> >\nRemove all favorite items\n</$button>\n<$reveal state=<<qualify $(temppopupTid)$>> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<div class=\"tc-dropdown-item-plain\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[list<favlistTid>]\"/>\"\"\">\nRemove all <<resultCount>> favorite item(s)?\n</$set>\n</div>\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-button tt-button\"> delete\n<$list filter=\"[<favlistTid>] [subfilter<folders>]\">\n<$action-setfield $tiddler=<<currentTiddler>> $field=\"list\" $value=\"\"/>\n</$list> \n</$button>\n</div>\n</div>\n</div>\n</$reveal>\n\\end\n\n\n<!-- Create the UI --->\n\nCreate, rename, rearrange and delete folders\n\n!! Rearrange\n<<<\nRearrange folder: <$macrocall $name=\"folder-reorder\" listTid=\"$(foldertagTid)$\" />\n<<<\n\n!! Create\n<<<\n<div class=\"fv-form\">\n<label>Add new folder:</label><<new-fav-folder>>\n</div>\n<<<\n\n!! Structure\n<<<\n<$vars fv-config-buttons=yes>\n<$transclude tiddler=\"$:/plugins/kookma/favorites/macros/sidebar\" field=text/>\n</$vars>\n<<remove-all-favs>>\n<<<"},"$:/plugins/kookma/favorites/manager/search":{"caption":"Search","created":"20191226092612349","modified":"20200326083227054","tags":"$:/favorites/Manager","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/favorites/macros/definition\n\\import $:/plugins/kookma/favorites/macros/combo-search\n\nSearch in favorites list (use filter or standard search)\n\n<<combo-search favorites>>"},"$:/plugins/kookma/favorites/manager":{"created":"20191224190957179","modified":"20200326083227025","tags":"","type":"text/vnd.tiddlywiki","text":"<<tabs tabsList:\"[all[tiddlers+shadows]tag[$:/favorites/Manager]!has[draft.of]!sort[caption]]\" default:\"$:/plugins/kookma/favorites/manager/search\">>"},"$:/plugins/kookma/favorites/readme":{"created":"20200326073607952","modified":"20200326082214810","tags":"","type":"text/vnd.tiddlywiki","text":"; Favorites\nA favorite item also called a bookmark is a shortcut, you are creating for quick access to it. You can access that bookmark at any time and view that as many times as you want without having to search and find it again.\n\n''Favorites plugin'' is a set of tool for creating favorites (bookmarks) in Tiddlywiki. Each favorite item is a shortcut to a tiddler.\n\nThe Favorites plugin contains three modes\n\n* ''flat mode'': one favorite list, no folder\n* ''structured mode'': use folder, search tool, export and delete tool\n* ''frozen list'': read only, simple table of content style\n\n;Code and demo\nFor learning plugin features, syntax, tutorial and examples see the plugin demo and code pages\n\n* Demo: https://kookma.github.io/TW-Favorites/\n* Code: https://github.com/kookma/TW-Favorites\n"},"$:/plugins/kookma/favorites/recent":{"caption":"Recently added","created":"20200103090757281","creator":"a revised version of Andrew Harrison favorite plugin","list":"$:/plugins/kookma/favorites/styles/image.css","modified":"20200326195945747","modifier":"a revised version of Andrew Harrison favorite plugin","tags":"$:/tags/Favorites/Folder","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/favorites/sidebar-tab":{"caption":"Favorites","created":"20191226064836102","list-after":"$:/core/ui/SideBar/Open","modified":"20200326083227061","tags":"$:/tags/SideBar","type":"text/vnd.tiddlywiki","text":"\\define show-options()\n<$button class=\"tc-btn-invisible\" to=\"$:/plugins/kookma/favorites/manager\">\n{{$:/core/images/options-button}} Manager\n</$button>\n\\end\n\n<!-- create the sidebar tab -->\n<div class=\"kk-favorites\">\n --- <<show-options>> <br>\n<$transclude tiddler=\"$:/plugins/kookma/favorites/macros/sidebar\" field=text/>\n</div>"},"$:/plugins/kookma/favorites/styles/image.css":{"button-color":"#ff0000","created":"20200326140130064","creator":"a revised version of Andrew Harrison favorite plugin","modified":"20200326195938233","modifier":"a revised version of Andrew Harrison favorite plugin","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":".tc-tiddler-controls .notselected .tc-image-favorites-button {\n stroke: #ccc;\n fill: #ccc;\n}\n\n.tc-tiddler-controls .selected .tc-image-favorites-button {\n stroke: {{!!button-color}};\n fill: {{!!button-color}};\n}\n\n"},"$:/plugins/kookma/favorites/styles/style.css":{"text":".sd-input textarea:focus, .sd-input input:focus { outline: none;}\n.sd-input textarea, .sd-input input { border:none; border-bottom: 1px dotted gray; margin-left:0px; width:75%;}\n\n.kk-custom-drop-down .tc-drop-down{min-width:60px;}\n\n.kk-favorites svg{\n fill:#aaaaaa;\n}\n.kk-favorites button:hover svg {\n fill: #000000; \n}\n\n.kk-btn-mini svg { font-size: 0.7em; fill: #bbb; }\n\n/* in folding-editor*/\n.fv-folding-button button svg{\n\t font-size:0.8em;\n\t vertical-align: middle;\n}\n\n.fv-folding-button input[type=\"radio\"] {\n width: 0.8em; !important;\n height: 0.8em; !important;\n vertical-align: middle !important;\n}\n\n/* form elements */\n.fv-form label { display:inline-block; width:130px; margin-left:5px; }\n.fv-form input, .fv-form select { display:inline-block; width:320px;}\n","created":"20191219075310949","modified":"20200326185700659","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/favorites/templates/delete-item":{"created":"20191220075034126","modified":"20200326190524058","type":"text/vnd.tiddlywiki","text":"<$button class=\"tc-btn-invisible kk-btn-mini\" tooltip=\"remove item from favorites\">\n{{$:/core/images/close-button}}\n<$action-listops $tiddler=<<favlistTid>> $field=\"list\" $subfilter=\"-[<currentTiddler>]\"/>\n<$action-listops $tiddler=<<folder>> $field=\"list\" $subfilter=\"-[<currentTiddler>]\"/>\n</$button> "},"$:/plugins/kookma/favorites/templates/item":{"created":"20191226214526038","modified":"20200326190524068","type":"text/vnd.tiddlywiki","text":"\\define tooltip() contains $(cnt)$ items\n<$vars cnt={{{[list<currentTiddler>count[]]}}}>\n<$link to=\"rr\" tooltip=<<cnt>> >\n<$view field=caption/>\n</$link>\n</$vars>"},"$:/plugins/kookma/favorites/templates/show-link":{"created":"20191220074823880","modified":"20200326190524073","type":"text/vnd.tiddlywiki","text":"<$link to={{!!title}} tooltip=<<currentTiddler>> >\n<$transclude field=\"caption\">\n<$view field=\"title\" />\n</$transclude>\n</$link><br>"},"$:/plugins/kookma/favorites/ui/buttons/add-remove":{"caption":"{{$:/plugins/kookma/favorites/image}}{{$:/language/Buttons/Favorites/Caption/Add}}","created":"20181010141620348","description":"{{$:/language/Buttons/Favorites/Hint/Add}}","list-after":"$:/core/ui/Buttons/info","modified":"20200326193035070","tags":"$:/tags/ViewToolbar","type":"text/vnd.tiddlywiki","text":"\\whitespace trim\n\\import $:/plugins/kookma/favorites/macros/definition\n\n\\define add-this-tiddler() [[$(currentTiddler)$]]+[putfirst[]]\n\\define remove-this-tiddler() -[[$(currentTiddler)$]]\n\n\\define show-favorites-button(class)\n<$list filter='[<tv-config-toolbar-icons>match[yes]]'>\n<span class=\"$class$\">{{$:/plugins/kookma/favorites/image}}</span>\n</$list>\n<$list filter='[<tv-config-toolbar-text>match[yes]]'>\n<span class='tc-btn-text'><$text text={{$:/language/Buttons/Favorites/Caption/Add}}/></span>\n</$list>\n\\end\n\n\n\\define add-to-favorites-button()\n <$button \n tooltip={{$:/language/Buttons/Favorites/Hint/Add}} aria-label={{$:/language/Buttons/Favorites/Caption/Add}} \n class=<<tv-config-toolbar-class>>>\n <$action-listops $tiddler=<<favlistTid>> $field='list' $subfilter=<<add-this-tiddler>>/>\n <$action-listops $tiddler=<<recentlyAdded>> $field='list' $subfilter=<<add-this-tiddler>>/>\n\t\t <$macrocall $name=\"show-favorites-button\" class=\"notselected\"/>\n </$button>\n\\end \n\n\\define remove-from-favorites-button()\n <$button \n tooltip={{$:/language/Buttons/Favorites/Hint/Remove}} aria-label={{$:/language/Buttons/Favorites/Caption/Remove}} \n class=<<tv-config-toolbar-class>> >\n <$action-listops $tiddler=<<favlistTid>> $field='list' $subfilter=<<remove-this-tiddler>>/>\n <$action-listops $tiddler={{{[subfilter<folders>contains<currentTiddler>limit[1]]}}} $field='list' $subfilter=<<remove-this-tiddler>>/>\n\t\t <$macrocall $name=\"show-favorites-button\" class=\"selected\"/>\n </$button>\n\\end \n\n<$list filter=\"[list<favlistTid>is[current]]\"><!-- tiddler is in favorites list, remove it -->\n<<remove-from-favorites-button>>\n</$list>\n<$list filter=\"[all[current]!list<favlistTid>]\"><!-- tiddler is not in favorites list, add it -->\n<<add-to-favorites-button>>\n</$list>"},"$:/plugins/kookma/favorites/ui/ControlPanel/Settings":{"caption":"Favorites","created":"20191229193717073","list-after":"$:/core/ui/ControlPanel/Settings/TiddlyWiki","modified":"20200326191059735","tags":"$:/tags/ControlPanel/SettingsTab $:/tags/MoreSideBar","type":"text/vnd.tiddlywiki","text":"\\define checked-frozen()\n<$action-setfield $tiddler=\"$:/plugins/kookma/favorites/sidebar-tab\" tags=\"\"/>\n<$action-setfield $tiddler=\"$:/plugins/kookma/favorites/viewtoolbar\" tags=\"\"/> \n\\end\n\\define unchecked-frozen()\n<$action-setfield $tiddler=\"$:/plugins/kookma/favorites/sidebar-tab\" tags=\"$:/tags/SideBar\"/>\n<$action-setfield $tiddler=\"$:/plugins/kookma/favorites/viewtoolbar\" tags=\"$:/tags/ViewToolbar\"/> \n\\end\n\nThese settings let you customise the behaviour of Utility plugin.\n\n---\n\n;Show Utility setting in more sidebar\n:<$checkbox tiddler=\"$:/plugins/kookma/favorites/ui/ControlPanel/Settings\" tag=\"$:/tags/MoreSideBar\"> Show setting in more sidebar</$checkbox>\n\n;Options\n:<$checkbox checkactions=<<checked-frozen>> \n tiddler=\"$:/plugins/kookma/favorites/frozen-list\" tag=\"$:/tags/SideBar\"\n\t checkactions=<<checked-frozen>>\n\t uncheckactions=<<unchecked-frozen>> > Enable frozen tab</$checkbox>\n:<input type=\"checkbox\" disabled> Viewtoolbar icon color <$edit-text tiddler=\"$:/plugins/kookma/favorites/styles/image.css\" \n\tfield=\"button-color\" tag=\"input\" type=\"color\"/>\n:<$checkbox tiddler=\"$:/plugins/kookma/favorites/styles/image.css\" \n\t field=\"button-color\" checked=\"#ff0000\" unchecked=\"#bbb\"> Reset viewtoolbar icon color</$checkbox>"},"$:/language/Buttons/Favorites/Caption/Add":{"created":"20191216200037937","modified":"20200326193233403","type":"text/vnd.tiddlywiki","text":"favorites"},"$:/language/Buttons/Favorites/Caption/Remove":{"created":"20191216200037793","modified":"20200326193156596","type":"text/vnd.tiddlywiki","text":"Caption/Remove"},"$:/language/Buttons/Favorites/Hint/Remove":{"created":"20200326193045794","modified":"20200326193104571","tags":"","type":"text/vnd.tiddlywiki","text":"Remove from favorites"},"$:/language/Buttons/Favorites/Hint/Add":{"created":"20191216200037919","modified":"20200326193116928","type":"text/vnd.tiddlywiki","text":"Add to favorites"}}}
{"tiddlers":{"$:/plugins/kookma/shiraz/history":{"created":"20200323092614036","modified":"20200325085725882","tags":"","type":"text/vnd.tiddlywiki","text":"Full change log: [[https://kookma.github.io/TW-Shiraz/#ChangeLog]]\n\n* ''2.1.1'' -- 2020.03.25 -- slider macro with initial status\n* ''2.1.0'' -- 2020.03.23 -- stable release on TW-5.1.22pre\n* ''1.0.0'' -- 2018.10.05 -- first public release\n"},"$:/plugins/kookma/shiraz/license":{"created":"20200323092614037","modified":"20200323092631048","tags":"","type":"text/vnd.tiddlywiki","text":"Distributed under an MIT license.\n\nCopyright (c) 2018-2020 [[Mohammad Rahmani|https://github.com/kookma]]\n\n<<<\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n<<<"},"$:/plugins/kookma/shiraz/macros/alerts":{"created":"20180821095049685","modified":"20200323093719256","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define alert(type:\"primary\" src:\"\", width:\"100%\", class:\"\")\n<div class=\"alert alert-$type$ $class$\" style=\"width:$width$;\">\n$src$\n</div>\n\\end\n\n\\define alert-leftbar(type:\"primary\" src:\"\", width:\"100%\", class:\"\")\n<div class=\"alert alert-$type$ bg-transparent leftbar border-$type$ $class$\" style=\"width:$width$;\">\n$src$\n</div>\n\\end\n"},"$:/plugins/kookma/shiraz/macros/badge":{"created":"20181124042103310","modified":"20200323093719649","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define badge(type:\"primary\" src:\"\")\n<span class=\"badge badge-$type$\">$src$</span>\n\\end\n\n\\define badge-pill(type:\"primary\" src:\"\")\n<span class=\"badge badge-pill badge-$type$\">$src$</span>\n\\end\n"},"$:/plugins/kookma/shiraz/macros/card":{"created":"20181124111624466","modified":"20200323093719684","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define card(header:\"Empty\", title:\"Empty\" subtitle:\"Empty\" text:\"Empty\",footer:\"Empty\", width:\"100%\" class:\"\")\n<div class=\"card mb-3 $class$\" style=\"width:$width$;\">\n<$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__header__>> >\n <div class=\"card-header\">$header$</div>\n</$reveal>\n<div class=\"card-body\">\n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n <div class=\"h5 card-title\">$title$</div>\n </$reveal>\n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__subtitle__>> >\n <div class=\"h6 card-subtitle mb-2 text-muted\">$subtitle$</div>\n </$reveal>\n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>> >\n <div class=\"card-text\"><<__text__>></div>\n </$reveal>\n</div>\n<$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__footer__>> >\n <div class=\"card-footer text-muted\">$footer$</div>\n</$reveal>\n</div>\n\\end"},"$:/plugins/kookma/shiraz/macros/dbadge":{"created":"20181203212737578","modified":"20200323093719698","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define dbadge(subject,status, type:\"primary\")\n<div class=\"dbadge\"><span class=\"dbadge-subject\">$subject$</span><span class=\"dbadge-status dbadge-$type$ \">$status$</span></div>\n\\end\n"},"$:/plugins/kookma/shiraz/macros/details":{"created":"20181101185833098","modified":"20200323093719704","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define details(sum:\"summary\", src:\"source\", status:\"\", class:\"\", style:\"\")\n<details $status$>\n <summary style=\"$style$\">$sum$</summary>\n <div class=\"$class$\">\n\t\n $src$\n </div>\n</details>\n\\end"},"$:/plugins/kookma/shiraz/macros/dtables/confirm-delete":{"created":"20191129201531051","modified":"20200323093719713","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define confirm-delete()\n<!-- reveals deletion confirmation -->\n<$list filter=\"[subfilter<inputFilter>limit[1]]\" variable=ignore>\n<$reveal class=\"tbl-delete-confirm\" type=\"match\" state=\"$:/temp/tables/delete-all!!text\" text=<<currentTable>> tag=\"tr\">\n<th colspan=<<ncols>> >\n<$list filter=\"[[$:/temp/tables/delete-all]get[confirm]match[yes]]\" \n variable=ignore emptyMessage=<<ask-for-delete>> >\n <<perform-delete>>\n</$list>\n</th>\n</$reveal>\n</$list>\n\\end\n\n\\define ask-for-delete()\n<$set name=ntids filter=\"[subfilter<inputFilter>count[]]\">\n Delete all <<ntids>> records?\n\t<$button class=\"tc-btn-invisible\">\n <$action-setfield $tiddler=\"$:/temp/tables/delete-all\" $field=\"confirm\" $value=\"yes\"/>\n {{$:/core/images/delete-button}} yes\n </$button> or \n <$button class=\"tc-btn-invisible\">\n <$action-deletetiddler $tiddler=\"$:/temp/tables/delete-all\"/>\n {{$:/core/images/close-button}} no\n </$button>\n</$set>\t\t\t\t\n\\end\n\n\\define perform-delete()\n Warning! this action cannot be undone!\n\t<$button class=\"tc-btn-invisible\">\n <$action-deletetiddler $tiddler=\"$:/temp/tables/delete-all\"/>\n <$list filter=<<inputFilter>> variable=\"currentRecord\">\n <$action-deletetiddler $tiddler=<<currentRecord>>/>\n </$list>\n\t\t {{$:/core/images/delete-button}} delete\n </$button> or \n <$button class=\"tc-btn-invisible\">\n <$action-deletetiddler $tiddler=\"$:/temp/tables/delete-all\"/>\n\t\t\t{{$:/core/images/close-button}} cancel \n </$button>\n\\end"},"$:/plugins/kookma/shiraz/macros/dtables/display-extrecord":{"created":"20191203155802107","modified":"20200323093719719","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define display-extended-record()\n<td colspan=<<ncols>> >\n<$tiddler tiddler=<<currentRecord>> >\n<$list filter=\"[<tempTableEdit>getindex[mode]match[edit]]\" variable=ignore\n emptyMessage=\"\"\"<$transclude tiddler=<<currentRecord>> field=text mode=block/>\"\"\" >\n <$edit-text class=\"tbl-inpt-edit\" tiddler=<<currentRecord>> field=\"text\" tag=textarea/>\n</$list>\n</$tiddler>\n</td>\n\\end"},"$:/plugins/kookma/shiraz/macros/dtables/helper":{"created":"20191203102929722","modified":"20200323093719728","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define columnFilter() $(columns)$ tbl-delete\n\n\\define tempTable() $:/state/dynamictables/$(currentTable)$\n\n\\define tempTableSort() $(tempTable)$/sortby\n\\define tempTagPopup() $(tempTable)$/$(currentRecord)$/$(currentTiddler)$\n\\define tempTableExpand() $(tempTable)$/expand\n\\define tempPathExpand() $(tempTableExpand)$##$(currentRecord)$\n\\define tempTableEdit() $(tempTable)$/edit-view-status\n\n\\define keepstate() $:/keepstate/dynamictables/$(currentTable)$\n\n\\define tempTableFooter() $(keepstate)$/footer\n\\define tempTableStyle() $(keepstate)$/style\n\\define tempWarningMsg() $(keepstate)$/warning\n\n<!-- \n Those tiddlers based on keepstate are permanent.\n These are tiddlers hold the data and setting for footer, styles and warning (needs to be hold).\n These state and temporary tiddlers are independent of currentTiddler (host tiddler) and on changing\n the title of host tiddler will not disconnected to table\n-->"},"$:/plugins/kookma/shiraz/macros/dtables/maths":{"created":"20200209153246553","modified":"20200323093719735","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define minall() <$text text={{{ [subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>minall[]] }}}/>\n\\define maxall() <$text text={{{ [subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>maxall[]] }}}/>\n\\define count() <$text text={{{ [subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>count[]] }}}/>\n\\define sum() <$text text={{{ [subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>sum[]] }}}/>\n\\define product() <$text text={{{ [subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>product[]] }}}/>\n\\define average(pn:0)\n<$vars\n xcount ={{{[subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>count[]]}}}\n\txsum ={{{ [subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>sum[]] }}} >\n <$text text={{{ [<xsum>divide<xcount>fixed[$pn$]] }}}/>\n</$vars>\n\\end\n\n\\define median(pn:0)\n<$vars xcount ={{{[subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>count[]]}}} >\n\t<$list filter=\"[<xcount>remainder[2]match[0]]\" variable=ignore>\n\t<!-- even number --> \n\t<$vars mid0={{{ [<xcount>divide[2]] }}} \n mid1={{{ [<xcount>divide[2]add[1]] }}} >\t\t \n <$text text={{{[subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>sort[]first<mid0>last[]][subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>sort[]first<mid1>last[]]+[sum[]divide[2]fixed[$pn$]]}}} />\n </$vars>\n </$list>\n <$list filter=\"[<xcount>remainder[2]!match[0]]\" variable=ignore>\n\t<!-- odd number --> \n\t<$vars mid={{{ [<xcount>divide[2]ceil[]] }}} >\n <$text text={{{ [subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>sort[]first<mid>last[]]}}} />\n\t</$vars>\n </$list>\n</$vars>\n\\end\n"},"$:/plugins/kookma/shiraz/macros/dtables/show-edit-cell":{"created":"20200209135600453","modified":"20200323093719743","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define showCell()\n <$list filter=\"[<fieldOrIndex>]-index\">\n <$transclude tiddler=<<currentRecord>> field=<<currentColumn>> mode=\"inline\" />\n </$list>\n <$list filter=\"[<fieldOrIndex>]-field\">\n <$transclude tiddler=<<currentRecord>> index=<<currentColumn>> mode=\"inline\" />\n </$list>\n\\end\t\n\\define editCell()\n <$list filter=\"[<fieldOrIndex>]-index\">\n <$edit-text tiddler=<<currentRecord>> field=<<currentColumn>> tag=\"input\" class=\"shiraz-dtable-textbox\"/>\n </$list>\n <$list filter=\"[<fieldOrIndex>]-field\">\n <$edit-text tiddler=<<currentRecord>> index=<<currentColumn>> tag=\"input\" class=\"shiraz-dtable-textbox\"/>\n </$list>\n\\end\n\n\\define showCell_Locked()\n <span style=\"font-style:oblique;\"><<showCell>></span>\n\\end "},"$:/plugins/kookma/shiraz/macros/dtables/table-dynamic":{"created":"20200209100939116","modified":"20200323093719750","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define table-dynamic(filter, fields:\"\", indexes:\"\", sortOp:\"sort\", caption:\"\", class:\"\", footerRows:\"0\", stateTiddler:\"\", editButton:\"yes\")\n\\import [all[shadows+tiddlers]tag[$:/tags/Table/Macro]]\n\n<!--above commands import utility macros-->\n<$vars \n inputFilter=\"[subfilter<__filter__>!has[draft.of]]\"\n sortType=<<__sortOp__>>\n> \n<$set name=currentTable value=<<__stateTiddler__>> emptyValue=<<currentTiddler>> >\n<!-- check what type of columns are sent, fileds or indexes (data tiddlers as records) -->\n<$set name=fieldOrIndex filter=\"[<__fields__>!is[blank]]\" value=\"field\" emptyValue=\"index\">\n<<check_tiddlers_type_for_table_from_indexes isEditable:\"$editButton$\">>\n<$set name=columns filter=\"[<fieldOrIndex>]-index\" value=<<__fields__>> emptyValue=<<__indexes__>> >\n<!--check input filter parameter-->\n<$list filter=\"[subfilter<inputFilter>limit[1]]\" emptyMessage=\"filter input is empty\" variable=ignore>\n<$set name=sortneg tiddler=<<tempTableSort>> index=\"negate\">\n<!--calculate the number of columns in edit and view mode -->\n<$set name=ncols filter=\"[subfilter<columnFilter>] -[[tbl-delete]] [<tempTableEdit>getindex[mode]match[edit]] +[count[]]\" >\n<div class=\"tbl-container\" style=\"max-width:100%;\">\n<table class=<<__class__>> style=\"caption-side:top\">\n<!-- reveal caption and edit button -------------------->\n<caption style=\"text-align:left;\">\n<$list filter=\"[<__editButton__>match[yes]]\" variavle=ignore>\n<span style=\"padding-right:5px;padding-left:3px;\"><<toggle-edit-view>></span></$list>\n$caption$</caption>\n\n<!-- create header -------------------->\n<thead>\n<<confirm-delete>>\n<tr>\n<$list filter=<<columnFilter>> variable=currentColumn>\n<$set name=\"headerLookup\" filter=\"[all[tiddlers+shadows]tag[$:/tags/Table/HeaderTemplate]contains:tbl-column-list<currentColumn>limit[1]get[title]]\" value=<<headerLookup>> emptyValue=\"$:/plugins/kookma/shiraz/templates/header/default\">\n <$transclude tiddler=<<headerLookup>> field=\"text\" mode=\"inline\"/>\n</$set>\n</$list>\n</tr>\n</thead>\n\n<!-- create footer -------------------->\n<$reveal type=\"gt\" default=<<__footerRows__>> text=\"0\" tag=\"tfoot\" class=\"shiraz-dtable-footer\">\n<$list filter=\"[range[1,$footerRows$]addprefix[footer-]]\" variable=footerRow>\n<tr>\n<$list filter=<<columnFilter>> variable=currentColumn>\n<$set name=\"footerLookup\" filter=\"[all[tiddlers+shadows]tag[$:/tags/Table/FooterTemplate]contains:tbl-column-list<currentColumn>limit[1]get[title]]\" value=<<footerLookup>> emptyValue=\"$:/plugins/kookma/shiraz/templates/footer/default\">\n<$transclude tiddler=<<footerLookup>> field=\"text\" mode=\"inline\"/>\n</$set>\n</$list>\n</tr>\n</$list>\n</$reveal>\n\n<!-- reveal main body of table (generate records) -------------------->\n<tbody>\n<$set name=tableBody filter=\"[<fieldOrIndex>]-index\" value=\"display_body_fields\" emptyValue=\"display_body_indexes\" >\n<$macrocall $name=<<tableBody>> />\n</$set>\n</tbody>\n</table>\n</div><!-- container-->\n</$set>\n</$set>\n</$list><!--check input filter parameter-->\n</$set>\n</$set>\n</$set>\n</$vars>\n\\end\n\n"},"$:/plugins/kookma/shiraz/macros/dtables/table-utility":{"created":"20200209195541061","modified":"20200323093719755","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define tableFilter_fields() $(inputFilter)$+[$(sortneg)$$(sortType)${$(tempTableSort)$##sortIndex}]\n\\define tableFilter_indexes() [enlist<items>]+[$(sortneg)$$(sortType)$[]]\n\n\\define getitems()\n<$set name=Index tiddler=<<tempTableSort>> index=\"sortIndex\">\n<$list filter=\"[subfilter<inputFilter>!has[draft.of]]\" >\n<$text text=\"[[\"/>{{{ [<currentTiddler>getindex<Index>addsuffix[°≡°]] }}}<<currentTiddler>><$text text=\"]]\"/>\n</$list>\n</$set>\n\\end\n\n\\define display_one_record()\n<$wikify name=\"rowStyle\" text=\"\"\"<$transclude tiddler=<<tempTableStyle>> index=<<currentRecord>> />\"\"\" mode=\"inline\">\n<tr style=<<rowStyle>>>\n<$list filter=<<columnFilter>> variable=currentColumn>\n<$set name=\"bodyLookup\" \n filter=\"[all[tiddlers+shadows]tag[$:/tags/Table/BodyTemplate]contains:tbl-column-list<currentColumn>]\n +[limit[1]get[title]]\"\n value=<<bodyLookup>> \n emptyValue=\"$:/plugins/kookma/shiraz/templates/body/default\">\n<$transclude tiddler=<<bodyLookup>> field=\"text\" mode=\"inline\"/>\n</$set>\n</$list>\n</tr>\n<!-- reveal expanded record-->\n<$reveal type=\"match\" state=<<tempPathExpand>> text=\"show\" tag=\"tr\">\n<<display-extended-record>>\n</$reveal>\n</$wikify>\n\\end\n\n\\define display_body_fields()\n<$list filter=<<tableFilter_fields>> variable=\"currentRecord\">\n<<display_one_record>>\n</$list>\n\\end\n\n\\define display_body_indexes()\n<$wikify name=\"items\" text=<<getitems>> > \n<$list filter=<<tableFilter_indexes>> variable=\"currentItem\" >\n<$list filter=\"[<currentItem>split[°≡°]last[]]\" variable=\"currentRecord\">\n <<display_one_record>>\n</$list>\n</$list>\n</$wikify>\n\\end\n\n"},"$:/plugins/kookma/shiraz/macros/dtables/toggle-edit-view":{"created":"20191128215812372","modified":"20200323093719762","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define toggle-edit-view()\n<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\">\n<$button class=\"tc-btn-invisible tc-tiddlylink\" setTitle=<<tempTableEdit>> setIndex=\"mode\" setTo=\"edit\">{{$:/core/images/edit-button}}</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\">\n<$button class=\"tc-btn-invisible tc-tiddlylink\" setTitle=<<tempTableEdit>> setIndex=\"mode\" setTo=\"view\">{{$:/core/images/done-button}}</$button>\n</$reveal>\n\\end"},"$:/plugins/kookma/shiraz/macros/dtables/warning_message":{"created":"20200210083402839","modified":"20200323093719767","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define show_tiddler_types()\n<details>\n <summary>List tiddlers with wrong type</summary>\n\t<dl>\n <$list filter=\"[subfilter<inputFilter>]\">\n\t<$list filter=\"[<currentTiddler>get[type]match[application/x-tiddler-dictionary]][<currentTiddler>get[type]match[application/json]]\" variable=ignore\n\temptyMessage=\"\"\"<dt><$link/></dt><dd><$view field=type/></dd>\"\"\">\n\t</$list>\n\t</$list>\n\t</dl>\n</details>\n\\end\n\n\n\\define show_warning_message()\nDynamic editable table from ''indexes'' expects all input tiddlers are of dataTiddler (json or dictionary) types. Using tiddlers of non //json// or //x-tiddler-dictionary// types as input can unintentionally overwrite the data in the text field of those tiddlers.<br>\n<br>\nCheck the tiddler types to find which tiddlers are not of dataTiddler types!<br>\n<<show_tiddler_types>>\n\\end\n\n\n\\define check_tiddlers_type_for_table_from_indexes(isEditable)\n <$list filter=\"[<fieldOrIndex>]-field\" variable=ignore><!-- only dataTiddler -->\n\t<$list filter=\"[<__isEditable__>match[yes]]\" variable=ignore> <!-- only editable table -->\n\t<$list filter=\"[<tempWarningMsg>is[missing]]\" variable=ignore><!-- dismiss if tempWarningMsg is set -->\n\t<$list filter=\"[subfilter<inputFilter>each[type]get[type]]-[[application/x-tiddler-dictionary]]-[[application/json]]\" variable=ignore>\n\t <div style=\"color: white;background-color:#ff0033;padding:8px;text-align:center;width:100%;\">\n\t Danger: Editable dynamic table from idexes with mixed types of tiddlers! \n\t <$button class=\"tc-btn-invisible tc-tiddlylink\" style=\"fill:white;\" tooltip=\"Dismiss alert and continue with the current selection!\">{{$:/core/images/close-button}}\n <$action-setfield $tiddler=<<tempWarningMsg>> text=\"dissmiss\"/>\n </$button>\n\t </div>\n\t <div style=\"border:1px solid #ff0033;padding:8px;\">\n\t <<show_warning_message>>\n\t </div>\n </$list>\n\t</$list>\n\t</$list>\n\t</$list>\n\\end\t\n"},"$:/plugins/kookma/shiraz/macros/image-basic":{"created":"20181119183704246","modified":"20200323093719776","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-basic(img, width:\"30%\", align:\"none\", caption:\"\", tooltip:\"\", alt:\"\")\n<figure class=\"image-simple image-align-$align$\" style=\"width:$width$;\">\n <$image source=<<__img__>> tooltip=<<__tooltip__>> alt=<<__alt__>> /> \n <figcaption>$caption$</figcaption>\n</figure> \n\\end"},"$:/plugins/kookma/shiraz/macros/image-card-utility":{"created":"20191209113750505","modified":"20200323093719788","type":"text/vnd.tiddlywiki","text":"\\define image-card-top(img, width:\"30%\", align:\"none\", title:\"Empty\", text:\"Empty\", footer:\"Empty\", alt:\"\")\n<div class=\"card image-align-$align$\" style=\"width:$width$;\">\n <$image class=\"card-img-top\" source=<<__img__>> alt=<<__alt__>> />\n <div class=\"card-body\">\n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n <div class=\"h5 card-title\">$title$</div>\n </$reveal> \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>> >\n <div class=\"card-text\">$text$</div>\n </$reveal> \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__footer__>> >\n <p class=\"card-text\"><small class=\"text-muted\">$footer$</small></p>\n </$reveal>\n </div> \n</div>\n\\end\n\n\\define image-card-bottom(img, width:\"30%\", align:\"none\", title:\"Empty\", text:\"Empty\", footer:\"Empty\", alt:\"\")\n<div class=\"card image-align-$align$\" style=\"width:$width$;\">\n <div class=\"card-body\">\n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n <div class=\"h5 card-title\">$title$</div>\n </$reveal> \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>> >\n <div class=\"card-text\">$text$</div>\n </$reveal> \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__footer__>> >\n <p class=\"card-text\"><small class=\"text-muted\">$footer$</small></p>\n </$reveal>\n </div> \n <$image class=\"card-img-bottom\" source=<<__img__>> alt=<<__alt__>> />\n</div>\n\\end"},"$:/plugins/kookma/shiraz/macros/image-card":{"created":"20190913094619863","modified":"20200323093719782","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-card(img, width:\"30%\", align:\"none\", title:\"Empty\", text:\"Empty\", footer:\"Empty\", pos:\"top\", alt:\"\")\n\\import $:/plugins/kookma/shiraz/macros/image-card-utility\n<$reveal tag=\"div\" type=\"match\" default=\"top\" text=<<__pos__>> >\n<$macrocall $name=image-card-top img=<<__img__>> title=<<__title__>> text=<<__text__>>\n footer=<<__footer__>> width=<<__width__>> align=<<__align__>> alt=<<__alt__>> />\n</$reveal>\n<$reveal tag=\"div\" type=\"nomatch\" default=\"top\" text=<<__pos__>> >\n<$macrocall $name=image-card-bottom img=<<__img__>> title=<<__title__>> text=<<__text__>>\n footer=<<__footer__>> width=<<__width__>> align=<<__align__>> alt=<<__alt__>> />\n</$reveal>\n\\end\n\n\\define image-card-top(img, width:\"30%\", align:\"none\", title:\"Empty\", text:\"Empty\", footer:\"Empty\", alt:\"\")\n<div class=\"card image-align-$align$\" style=\"width:$width$;\">\n <$image class=\"card-img-top\" source=<<__img__>> alt=<<__alt__>> />\n <div class=\"card-body\">\n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n <div class=\"h5 card-title\">$title$</div>\n </$reveal> \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>> >\n <div class=\"card-text\">$text$</div>\n </$reveal> \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__footer__>> >\n <p class=\"card-text\"><small class=\"text-muted\">$footer$</small></p>\n </$reveal>\n </div> \n</div>\n\\end\n\n\\define image-card-bottom(img, width:\"30%\", align:\"none\", title:\"Empty\", text:\"Empty\", footer:\"Empty\", alt:\"\")\n<div class=\"card image-align-$align$\" style=\"width:$width$;\">\n <div class=\"card-body\">\n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n <div class=\"h5 card-title\">$title$</div>\n </$reveal> \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>> >\n <div class=\"card-text\">$text$</div>\n </$reveal> \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__footer__>> >\n <p class=\"card-text\"><small class=\"text-muted\">$footer$</small></p>\n </$reveal>\n </div> \n <$image class=\"card-img-bottom\" source=<<__img__>> alt=<<__alt__>> />\n</div>\n\\end"},"$:/plugins/kookma/shiraz/macros/image-overlay-utility":{"created":"20191209114338849","modified":"20200323093719804","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define _cls-content-details() image-overlay-content-details $(fdcls)$"},"$:/plugins/kookma/shiraz/macros/image-overlay":{"created":"20181117203737197","modified":"20200323093719798","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-overlay(img, width:\"30%\", align:\"none\", caption:\"\", title:\"\", text:\"\", fadein:\"left\", alt:\"\")\n\\import $:/plugins/kookma/shiraz/macros/image-overlay-utility\n<div class=\"image-overlay-container image-align-$align$\" style=\"width:$width$;\">\n <h3 class=\"image-overlay-title\">$caption$</h3>\n <div class=\"image-overlay-content\">\n <div class=\"image-overlay-content-overlay\"></div>\n <$image class=\"image-overlay-content-image\" source=<<__img__>> alt=<<__alt__>>/>\n <$set name=\"fdcls\" filter=\"$fadein$ +[splitbefore[ ]] +[addprefix[image-overlay-fadeIn-]]\">\n <div class=<<_cls-content-details>> >\n <h3 class=\"image-overlay-content-title\">$title$</h3>\n <p class=\"image-overlay-content-text\">$text$</p>\n </div>\n </$set>\n </div>\n</div>\n\\end"},"$:/plugins/kookma/shiraz/macros/image-polaroid":{"created":"20181117203654803","modified":"20200323093719811","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-polaroid(img, width:\"30%\", align:\"none\", caption:\"\", tooltip:\"\", alt:\"\")\n<figure class=\"image-polaroid image-align-$align$\" style=\"width:$width$;\">\n <$image source=\"\"\"$img$\"\"\" tooltip=\"\"\"$tooltip$\"\"\"/>\n <figcaption class=\"image-polaroid-caption\">$caption$</figcaption>\n</figure> \n\\end"},"$:/plugins/kookma/shiraz/macros/image-pretty":{"created":"20181117203541398","modified":"20200323093719817","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-pretty(img, width:\"30%\", align:\"none\", caption:\"\", tooltip:\"\", alt:\"\")\n<figure class=\"image-pretty image-align-$align$\" style=\"width:$width$;\">\n <$image source=<<__img__>> tooltip=<<__tooltip__>> alt=<<__alt__>> /> \n <figcaption class=\"image-pretty-caption\">$caption$</figcaption>\n</figure> \n\\end"},"$:/plugins/kookma/shiraz/macros/image-slidein":{"created":"20181117040544570","modified":"20200323093719824","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-slidein(img, width:\"30%\", align:\"none\", caption:\"\", tooltip:\"\", slidein:\"left\", alt:\"\")\n<figure class=\"image-slidein mr-cap-$slidein$ image-align-$align$\" style=\"width:$width$;\">\n <$image source=<<__img__>> tooltip=<<__tooltip__>> alt=<<__alt__>>/>\n <figcaption>$caption$</figcaption>\n</figure> \n\\end"},"$:/plugins/kookma/shiraz/macros/list-search":{"author":"Jeremy Ruston","created":"20191209101857832","creator":"Mohammad","description":"creates few paragraphs of dumy text","modified":"20200323093719831","modifier":"Mohammad","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define list-search( filter:\"[!is[system]]\", search:\"search:title\", template:\"$:/core/ui/ListItemTemplate\",\n class:\"\", stateTiddler:\"\", placeholder:\"keywords\")\n<$set name=\"state\" filter=\"[[$:/temp/list-search]addsuffix[/$stateTiddler$]addsuffix<qualify>]\">\n<div class=<<__class__>> >\n<$edit-text tiddler=<<state>> type=\"search\" tag=\"input\" default=\"\" placeholder=\"$placeholder$\"/>\n</div>\n<$reveal state=<<state>> type=\"match\" text=\"\" class=<<__class__>> tag=div>\n<$list filter=\"$filter$\" template=<<__template__>>/>\n</$reveal>\n<$reveal state=<<state>> type=\"nomatch\" text=\"\" class=<<__class__>> tag=div>\n<$set name=term tiddler=<<state>> field=\"text\">\n<$list filter=\"$filter$+[$search$<term>]\" template=<<__template__>>/>\n</$set>\n</$reveal>\n</$set>\n\\end\n<!-- from Tobias Beer list-search with modification-->"},"$:/plugins/kookma/shiraz/macros/multicol":{"created":"20191018063242993","modified":"20200323093719835","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define multicol(src, ncol:\"\", class:\"\")\n<div class=\"sh-multicol$ncol$ $class$\">\n\n$src$\n</div>\n\\end"},"$:/plugins/kookma/shiraz/macros/slider":{"created":"20190322161929431","description":"Slider macro shows (hides) its content.","modified":"20201113161937207","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define slider(label, src, labelClass, srcClass, status:\"closed\")\n<$set name=\"revealState\" value=\"\"\"$:/state/shiraz/slider-macro/$(currentTiddler)$/$label$\"\"\">\n\n<h2 class=\"$labelClass$\">\n <$reveal type=\"nomatch\" state=<<revealState>> text=\"open\" default=\"$status$\">\n <$button class=\"tc-btn-invisible tc-tiddlylink\" set=<<revealState>> setTo=\"open\">\n <span class=\"kk-sh-slider\"><$transclude tiddler=\"$:/core/images/right-arrow\" /></span>\n </$button>\n </$reveal>\n <$reveal type=\"match\" state=<<revealState>> text=\"open\" default=\"$status$\">\n <$button class=\"tc-btn-invisible tc-tiddlylink\" set=<<revealState>> setTo=\"closed\">\n <span class=\"kk-sh-slider\"><$transclude tiddler=\"$:/core/images/down-arrow\" /></span>\n </$button>\n </$reveal>\n $label$\n</h2>\n\n<$reveal type=\"match\" state=<<revealState>> text=\"open\" default=\"$status$\" class=\"$srcClass$\">\n\n$src$\n</$reveal>\n</$set>\n\\end"},"$:/plugins/kookma/shiraz/macros/space":{"created":"20170629183034888","modified":"20200323093719849","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define vspace(height:\"25px\")\n<p style=\"margin-bottom: $height$;\"></p>\n\\end\n\n\\define hspace(width:\"25px\")\n<span style=\"margin-left: $width$;\"></span>\n\\end\n"},"$:/plugins/kookma/shiraz/macros/text-utility":{"created":"20181101154956345","modified":"20200323093719853","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define tc(src:\"\", color:\"red\") <span style=\"color:$color$;\">$src$</span>\n\\define bc(src:\"\", color:\"yellow\") <span style=\"background-color:$color$;\">$src$</span>\n\\define mono(src:\"\", class:\"\") <code class=\"mono $class$\">$src$</code>\n\\define transform(case:\"\", src:\"\", class:\"\") <span class=\"text-$case$ $class$\">$src$</span>"},"$:/plugins/kookma/shiraz/readme":{"created":"20200323092614037","modified":"20200323134846163","tags":"","type":"text/vnd.tiddlywiki","text":"; Shiraz\nShiraz is a small framework including stylesheets, templates and macros to create stylish contents in Tiddlywiki. It uses modified CSS classes from [[Bootstrap|https://getbootstrap.com/]] 4.3.1. Shiraz has customized elements like alerts, cards, panels, images, static tables, dynamic tables, badges, texts, ...\n\n;Code and demo\nFor learning plugin features, syntax, tutorial and examples see the plugin demo and code pages\n\n* Demo: https://kookma.github.io/TW-Shiraz/\n* Code: https://github.com/kookma/TW-Shiraz\n"},"$:/plugins/kookma/shiraz/styles/alerts-leftbar":{"text":".leftbar{\n border-width:0px !important;\n border-radius:0px !important;\n border-left-width: 5px !important;\n}","created":"20181208184228896","modified":"20200323093719861","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/alerts":{"text":"/*Was taken from bootstrap 4.1.3*/\n.alert {\n position: relative;\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n.alert-primary {\n color: #004085;\n background-color: #cce5ff;\n border-color: #b8daff;\n}\n\n.alert-primary hr {\n border-top-color: #9fcdff;\n}\n.alert-secondary {\n color: #383d41;\n background-color: #e2e3e5;\n border-color: #d6d8db;\n}\n\n.alert-secondary hr {\n border-top-color: #c8cbcf;\n}\n\n.alert-success {\n color: #155724;\n background-color: #d4edda;\n border-color: #c3e6cb;\n}\n\n.alert-success hr {\n border-top-color: #b1dfbb;\n}\n.alert-info {\n color: #0c5460;\n background-color: #d1ecf1;\n border-color: #bee5eb;\n}\n\n.alert-info hr {\n border-top-color: #abdde5;\n}\n.alert-warning {\n color: #856404;\n background-color: #fff3cd;\n border-color: #ffeeba;\n}\n\n.alert-warning hr {\n border-top-color: #ffe8a1;\n}\n\n.alert-danger {\n color: #721c24;\n background-color: #f8d7da;\n border-color: #f5c6cb;\n}\n\n.alert-danger hr {\n border-top-color: #f1b0b7;\n}\n.alert-light {\n color: #818182;\n background-color: #fefefe;\n border-color: #fdfdfe;\n}\n\n.alert-light hr {\n border-top-color: #ececf6;\n}\n.alert-dark {\n color: #1b1e21;\n background-color: #d6d8d9;\n border-color: #c6c8ca;\n}\n\n.alert-dark hr {\n border-top-color: #b9bbbe;\n}\n","created":"20180820171551129","modified":"20200323093719869","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/background-colors":{"text":".bg-primary {\n background-color: #007bff !important;\n}\n\na.bg-primary:hover, a.bg-primary:focus,\nbutton.bg-primary:hover,\nbutton.bg-primary:focus {\n background-color: #0062cc !important;\n}\n\n.bg-secondary {\n background-color: #6c757d !important;\n}\n\na.bg-secondary:hover, a.bg-secondary:focus,\nbutton.bg-secondary:hover,\nbutton.bg-secondary:focus {\n background-color: #545b62 !important;\n}\n\n.bg-success {\n background-color: #28a745 !important;\n}\n\na.bg-success:hover, a.bg-success:focus,\nbutton.bg-success:hover,\nbutton.bg-success:focus {\n background-color: #1e7e34 !important;\n}\n\n.bg-info {\n background-color: #17a2b8 !important;\n}\n\na.bg-info:hover, a.bg-info:focus,\nbutton.bg-info:hover,\nbutton.bg-info:focus {\n background-color: #117a8b !important;\n}\n\n.bg-warning {\n background-color: #ffc107 !important;\n}\n\na.bg-warning:hover, a.bg-warning:focus,\nbutton.bg-warning:hover,\nbutton.bg-warning:focus {\n background-color: #d39e00 !important;\n}\n\n.bg-danger {\n background-color: #dc3545 !important;\n}\n\na.bg-danger:hover, a.bg-danger:focus,\nbutton.bg-danger:hover,\nbutton.bg-danger:focus {\n background-color: #bd2130 !important;\n}\n\n.bg-light {\n background-color: #f8f9fa !important;\n}\n\na.bg-light:hover, a.bg-light:focus,\nbutton.bg-light:hover,\nbutton.bg-light:focus {\n background-color: #dae0e5 !important;\n}\n\n.bg-dark {\n background-color: #343a40 !important;\n}\n\na.bg-dark:hover, a.bg-dark:focus,\nbutton.bg-dark:hover,\nbutton.bg-dark:focus {\n background-color: #1d2124 !important;\n}\n\n.bg-white {\n background-color: #fff !important;\n}\n\n.bg-transparent {\n background-color: transparent !important;\n}","created":"20180820170518161","modified":"20200323093719877","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/badge":{"text":"/* Extracted from bootstrap 4.1.3 */\n.badge {\n display: inline-block;\n padding: 0.25em 0.4em;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25rem;\n}\n\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n.badge-pill {\n padding-right: 0.6em;\n padding-left: 0.6em;\n border-radius: 10rem;\n}\n\n.badge-primary {\n color: #fff;\n background-color: #007bff;\n}\n\n.badge-primary[href]:hover, .badge-primary[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #0062cc;\n}\n\n.badge-secondary {\n color: #fff;\n background-color: #6c757d;\n}\n\n.badge-secondary[href]:hover, .badge-secondary[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #545b62;\n}\n\n.badge-success {\n color: #fff;\n background-color: #28a745;\n}\n\n.badge-success[href]:hover, .badge-success[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #1e7e34;\n}\n\n.badge-info {\n color: #fff;\n background-color: #17a2b8;\n}\n\n.badge-info[href]:hover, .badge-info[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #117a8b;\n}\n\n.badge-warning {\n color: #212529;\n background-color: #ffc107;\n}\n\n.badge-warning[href]:hover, .badge-warning[href]:focus {\n color: #212529;\n text-decoration: none;\n background-color: #d39e00;\n}\n\n.badge-danger {\n color: #fff;\n background-color: #dc3545;\n}\n\n.badge-danger[href]:hover, .badge-danger[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #bd2130;\n}\n\n.badge-light {\n color: #212529;\n background-color: #f8f9fa;\n}\n\n.badge-light[href]:hover, .badge-light[href]:focus {\n color: #212529;\n text-decoration: none;\n background-color: #dae0e5;\n}\n\n.badge-dark {\n color: #fff;\n background-color: #343a40;\n}\n\n.badge-dark[href]:hover, .badge-dark[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #1d2124;\n}\n\n","created":"20181122140031075","modified":"20200323093719884","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/borders":{"text":".border {\n border: 1px solid #dee2e6 !important;\n}\n\n.border-top {\n border-top: 1px solid #dee2e6 !important;\n}\n\n.border-right {\n border-right: 1px solid #dee2e6 !important;\n}\n\n.border-bottom {\n border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-left {\n border-left: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-right-0 {\n border-right: 0 !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-left-0 {\n border-left: 0 !important;\n}\n\n.border-primary {\n border-color: #007bff !important;\n}\n\n.border-secondary {\n border-color: #6c757d !important;\n}\n\n.border-success {\n border-color: #28a745 !important;\n}\n\n.border-info {\n border-color: #17a2b8 !important;\n}\n\n.border-warning {\n border-color: #ffc107 !important;\n}\n\n.border-danger {\n border-color: #dc3545 !important;\n}\n\n.border-light {\n border-color: #f8f9fa !important;\n}\n\n.border-dark {\n border-color: #343a40 !important;\n}\n\n.border-white {\n border-color: #fff !important;\n}\n\n.rounded {\n border-radius: 0.25rem !important;\n}\n\n.rounded-top {\n border-top-left-radius: 0.25rem !important;\n border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-right {\n border-top-right-radius: 0.25rem !important;\n border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-left {\n border-top-left-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-circle {\n border-radius: 50% !important;\n}\n\n.rounded-0 {\n border-radius: 0 !important;\n}\n","created":"20180820174710383","modified":"20200323093719893","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/btn":{"text":"/* Button and btn classes Mohammad*/\n.btn {\n display: inline-block;\n font-weight: 400;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n border: 1px solid transparent;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5;\n border-radius: 0.25rem;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n\n.btn:hover, .btn:focus {\n text-decoration: none;\n}\n\n.btn:focus, .btn.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.btn.disabled, .btn:disabled {\n opacity: 0.65;\n}\n\n.btn:not(:disabled):not(.disabled) {\n cursor: pointer;\n}\n\na.btn.disabled,\nfieldset:disabled a.btn {\n pointer-events: none;\n}\n\n.btn-primary {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:hover {\n color: #fff;\n background-color: #0069d9;\n border-color: #0062cc;\n}\n\n.btn-primary:focus, .btn-primary.focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-primary.disabled, .btn-primary:disabled {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-secondary {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-secondary:hover {\n color: #fff;\n background-color: #5a6268;\n border-color: #545b62;\n}\n\n.btn-secondary:focus, .btn-secondary.focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-secondary.disabled, .btn-secondary:disabled {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-success {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:hover {\n color: #fff;\n background-color: #218838;\n border-color: #1e7e34;\n}\n\n.btn-success:focus, .btn-success.focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-success.disabled, .btn-success:disabled {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-info {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:hover {\n color: #fff;\n background-color: #138496;\n border-color: #117a8b;\n}\n\n.btn-info:focus, .btn-info.focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-info.disabled, .btn-info:disabled {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-warning {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:hover {\n color: #212529;\n background-color: #e0a800;\n border-color: #d39e00;\n}\n\n.btn-warning:focus, .btn-warning.focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-warning.disabled, .btn-warning:disabled {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-danger {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:hover {\n color: #fff;\n background-color: #c82333;\n border-color: #bd2130;\n}\n\n.btn-danger:focus, .btn-danger.focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-danger.disabled, .btn-danger:disabled {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-light {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:hover {\n color: #212529;\n background-color: #e2e6ea;\n border-color: #dae0e5;\n}\n\n.btn-light:focus, .btn-light.focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-light.disabled, .btn-light:disabled {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-dark {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:hover {\n color: #fff;\n background-color: #23272b;\n border-color: #1d2124;\n}\n\n.btn-dark:focus, .btn-dark.focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-dark.disabled, .btn-dark:disabled {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-link {\n font-weight: 400;\n color: #007bff;\n background-color: transparent;\n}\n\n.btn-link:hover {\n color: #0056b3;\n text-decoration: underline;\n background-color: transparent;\n border-color: transparent;\n}\n\n.btn-link:focus, .btn-link.focus {\n text-decoration: underline;\n border-color: transparent;\n box-shadow: none;\n}\n\n.btn-link:disabled, .btn-link.disabled {\n color: #6c757d;\n pointer-events: none;\n}\n\n/* button size */\n\n.btn-lg{\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\n.btn-sm{\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}","created":"20180822044340070","modified":"20200323093719900","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/card-column":{"text":"/* Extracted from bootstrap 4.3.1 */\n.card-columns .card {\n margin-bottom: 0.75rem;\n}\n\n@media (min-width: 576px) {\n .card-columns {\n -webkit-column-count: 3;\n -moz-column-count: 3;\n column-count: 3;\n -webkit-column-gap: 1.25rem;\n -moz-column-gap: 1.25rem;\n column-gap: 1.25rem;\n orphans: 1;\n widows: 1;\n }\n .card-columns .card {\n display: inline-block;\n width: 100%;\n }\n}","created":"20181122175345419","modified":"20200323093719915","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/card-deck":{"text":"/* Extracted from bootstrap 4.1.3 */\n\n.card-deck {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.card-deck .card {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-deck {\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n margin-right: -15px;\n margin-left: -15px;\n }\n .card-deck .card {\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 1 0 0%;\n flex: 1 0 0%;\n -ms-flex-direction: column;\n flex-direction: column;\n margin-right: 15px;\n margin-bottom: 0;\n margin-left: 15px;\n }\n}","created":"20180822174847352","modified":"20200323093719923","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/card-group":{"text":"/* Extracted from bootstrap 4.1.3 */\n.card-group {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.card-group > .card {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-group {\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n }\n .card-group > .card {\n -ms-flex: 1 0 0%;\n flex: 1 0 0%;\n margin-bottom: 0;\n }\n .card-group > .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group > .card:first-child {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group > .card:first-child .card-img-top,\n .card-group > .card:first-child .card-header {\n border-top-right-radius: 0;\n }\n .card-group > .card:first-child .card-img-bottom,\n .card-group > .card:first-child .card-footer {\n border-bottom-right-radius: 0;\n }\n .card-group > .card:last-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group > .card:last-child .card-img-top,\n .card-group > .card:last-child .card-header {\n border-top-left-radius: 0;\n }\n .card-group > .card:last-child .card-img-bottom,\n .card-group > .card:last-child .card-footer {\n border-bottom-left-radius: 0;\n }\n .card-group > .card:only-child {\n border-radius: 0.25rem;\n }\n .card-group > .card:only-child .card-img-top,\n .card-group > .card:only-child .card-header {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n }\n .card-group > .card:only-child .card-img-bottom,\n .card-group > .card:only-child .card-footer {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n }\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) {\n border-radius: 0;\n }\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer {\n border-radius: 0;\n }\n}\n","created":"20181122175111676","modified":"20200323093719932","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/card":{"text":"/* Extracted from bootstrap 4.1.3 */\n.card {\n position: relative;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n min-width: 0;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: border-box;\n border: 1px solid rgba(0, 0, 0, 0.125);\n border-radius: 0.25rem;\n}\n\n.card > hr {\n margin-right: 0;\n margin-left: 0;\n}\n\n.card > .list-group:first-child .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.card > .list-group:last-child .list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.card-body {\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n padding: 1.25rem;\n}\n\n.card-title {\n margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n margin-top: -0.375rem;\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link:hover {\n text-decoration: none;\n}\n\n.card-link + .card-link {\n margin-left: 1.25rem;\n}\n\n.card-header {\n padding: 0.75rem 1.25rem;\n margin-bottom: 0;\n background-color: rgba(0, 0, 0, 0.03);\n border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header:first-child {\n border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-header + .list-group .list-group-item:first-child {\n border-top: 0;\n}\n\n.card-footer {\n padding: 0.75rem 1.25rem;\n background-color: rgba(0, 0, 0, 0.03);\n border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-footer:last-child {\n border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n margin-right: -0.625rem;\n margin-bottom: -0.75rem;\n margin-left: -0.625rem;\n border-bottom: 0;\n}\n\n.card-header-pills {\n margin-right: -0.625rem;\n margin-left: -0.625rem;\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 1.25rem;\n}\n\n.card-img {\n width: 100%;\n border-radius: calc(0.25rem - 1px);\n}\n\n.card-img-top {\n width: 100%;\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img-bottom {\n width: 100%;\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px);\n}\n","created":"20180822174608965","modified":"20200323093719907","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/clearfix":{"text":".clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}","created":"20190919042042391","modified":"20200323093719936","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/float":{"text":".float-left {\n float: left;\n}\n\n.float-right {\n float: right;\n}\n\n.float-none {\n float: none;\n}\n","created":"20180823142040855","modified":"20200323093719944","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/my-adjustment":{"text":"/* My adjustments to bootstrap 4.1.3 css classes */\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n/* Link is hacked to be compatible with bootstrap \nclasses remove it if the TW core objects break\n*/\n\n","created":"20180822044831813","modified":"20200323093719950","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/shadow":{"text":".shadow-sm {\n box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n\n.shadow {\n box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-lg {\n box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n\n.shadow-none {\n box-shadow: none !important;\n}","created":"20180823114259911","modified":"20200323093719957","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/sizing-spacing":{"text":"/* Extracted from bootstrap 4.3.1 */\n/*Defines margins, paddings, width and height*/\n.w-25 {\n width: 25% !important;\n}\n.w-50 {\n width: 50% !important;\n}\n.w-75 {\n width: 75% !important;\n}\n.w-100 {\n width: 100% !important;\n}\n.w-auto {\n width: auto !important;\n}\n.h-25 {\n height: 25% !important;\n}\n.h-50 {\n height: 50% !important;\n}\n.h-75 {\n height: 75% !important;\n}\n.h-100 {\n height: 100% !important;\n}\n.h-auto {\n height: auto !important;\n}\n.mw-100 {\n max-width: 100% !important;\n}\n.mh-100 {\n max-height: 100% !important;\n}\n.m-0 {\n margin: 0 !important;\n}\n.mt-0,\n.my-0 {\n margin-top: 0 !important;\n}\n.mr-0,\n.mx-0 {\n margin-right: 0 !important;\n}\n.mb-0,\n.my-0 {\n margin-bottom: 0 !important;\n}\n.ml-0,\n.mx-0 {\n margin-left: 0 !important;\n}\n.m-1 {\n margin: 0.25rem !important;\n}\n.mt-1,\n.my-1 {\n margin-top: 0.25rem !important;\n}\n.mr-1,\n.mx-1 {\n margin-right: 0.25rem !important;\n}\n.mb-1,\n.my-1 {\n margin-bottom: 0.25rem !important;\n}\n.ml-1,\n.mx-1 {\n margin-left: 0.25rem !important;\n}\n.m-2 {\n margin: 0.5rem !important;\n}\n.mt-2,\n.my-2 {\n margin-top: 0.5rem !important;\n}\n.mr-2,\n.mx-2 {\n margin-right: 0.5rem !important;\n}\n.mb-2,\n.my-2 {\n margin-bottom: 0.5rem !important;\n}\n.ml-2,\n.mx-2 {\n margin-left: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.mt-3,\n.my-3 {\n margin-top: 1rem !important;\n}\n\n.mr-3,\n.mx-3 {\n margin-right: 1rem !important;\n}\n\n.mb-3,\n.my-3 {\n margin-bottom: 1rem !important;\n}\n\n.ml-3,\n.mx-3 {\n margin-left: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.mt-4,\n.my-4 {\n margin-top: 1.5rem !important;\n}\n\n.mr-4,\n.mx-4 {\n margin-right: 1.5rem !important;\n}\n\n.mb-4,\n.my-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.ml-4,\n.mx-4 {\n margin-left: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.mt-5,\n.my-5 {\n margin-top: 3rem !important;\n}\n\n.mr-5,\n.mx-5 {\n margin-right: 3rem !important;\n}\n\n.mb-5,\n.my-5 {\n margin-bottom: 3rem !important;\n}\n\n.ml-5,\n.mx-5 {\n margin-left: 3rem !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.pt-0,\n.py-0 {\n padding-top: 0 !important;\n}\n\n.pr-0,\n.px-0 {\n padding-right: 0 !important;\n}\n\n.pb-0,\n.py-0 {\n padding-bottom: 0 !important;\n}\n\n.pl-0,\n.px-0 {\n padding-left: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.pt-1,\n.py-1 {\n padding-top: 0.25rem !important;\n}\n\n.pr-1,\n.px-1 {\n padding-right: 0.25rem !important;\n}\n\n.pb-1,\n.py-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pl-1,\n.px-1 {\n padding-left: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.pt-2,\n.py-2 {\n padding-top: 0.5rem !important;\n}\n\n.pr-2,\n.px-2 {\n padding-right: 0.5rem !important;\n}\n\n.pb-2,\n.py-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pl-2,\n.px-2 {\n padding-left: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.pt-3,\n.py-3 {\n padding-top: 1rem !important;\n}\n\n.pr-3,\n.px-3 {\n padding-right: 1rem !important;\n}\n\n.pb-3,\n.py-3 {\n padding-bottom: 1rem !important;\n}\n\n.pl-3,\n.px-3 {\n padding-left: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.pt-4,\n.py-4 {\n padding-top: 1.5rem !important;\n}\n\n.pr-4,\n.px-4 {\n padding-right: 1.5rem !important;\n}\n\n.pb-4,\n.py-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pl-4,\n.px-4 {\n padding-left: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.pt-5,\n.py-5 {\n padding-top: 3rem !important;\n}\n\n.pr-5,\n.px-5 {\n padding-right: 3rem !important;\n}\n\n.pb-5,\n.py-5 {\n padding-bottom: 3rem !important;\n}\n\n.pl-5,\n.px-5 {\n padding-left: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mt-auto,\n.my-auto {\n margin-top: auto !important;\n}\n\n.mr-auto,\n.mx-auto {\n margin-right: auto !important;\n}\n\n.mb-auto,\n.my-auto {\n margin-bottom: auto !important;\n}\n\n.ml-auto,\n.mx-auto {\n margin-left: auto !important;\n}\n","created":"20180822191952379","modified":"20200323093719964","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/text-alignment":{"text":".text-justify {\n text-align: justify !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}","created":"20180822051223866","modified":"20200323093719971","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/text-colors":{"text":"/* from bootstrap 4.1.3 */\n\n.text-white {\n color: #fff !important;\n}\n\n.text-primary {\n color: #007bff !important;\n}\n\na.text-primary:hover, a.text-primary:focus {\n color: #0062cc !important;\n}\n\n.text-secondary {\n color: #6c757d !important;\n}\n\na.text-secondary:hover, a.text-secondary:focus {\n color: #545b62 !important;\n}\n\n.text-success {\n color: #28a745 !important;\n}\n\na.text-success:hover, a.text-success:focus {\n color: #1e7e34 !important;\n}\n\n.text-info {\n color: #17a2b8 !important;\n}\n\na.text-info:hover, a.text-info:focus {\n color: #117a8b !important;\n}\n\n.text-warning {\n color: #ffc107 !important;\n}\n\na.text-warning:hover, a.text-warning:focus {\n color: #d39e00 !important;\n}\n\n.text-danger {\n color: #dc3545 !important;\n}\n\na.text-danger:hover, a.text-danger:focus {\n color: #bd2130 !important;\n}\n\n.text-light {\n color: #f8f9fa !important;\n}\n\na.text-light:hover, a.text-light:focus {\n color: #dae0e5 !important;\n}\n\n.text-dark {\n color: #343a40 !important;\n}\n\na.text-dark:hover, a.text-dark:focus {\n color: #1d2124 !important;\n}\n\n.text-body {\n color: #212529 !important;\n}\n\n.text-muted {\n color: #6c757d !important;\n}\n\n.text-black-50 {\n color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n","created":"20180820173351023","modified":"20200323093719978","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/text-utility":{"text":"/* Can be removed latter. This is used for illustration of bootstrap cards */\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.font-weight-light {\n font-weight: 300 !important;\n}\n\n.font-weight-normal {\n font-weight: 400 !important;\n}\n\n.font-weight-bold {\n font-weight: 700 !important;\n}\n\n.font-italic {\n font-style: italic !important;\n}\n\n\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: 0.5rem;\n font-family: inherit;\n font-weight: 500;\n line-height: 1.2;\n color: inherit;\n}\n\n.h1 {\n font-size: 2.5rem;\n}\n\n.h2 {\n font-size: 2rem;\n}\n\n.h3 {\n font-size: 1.75rem;\n}\n\n.h4 {\n font-size: 1.5rem;\n}\n\n.h5 {\n font-size: 1.25rem;\n}\n\n.h6 {\n font-size: 1rem;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.hr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n border: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\n.small {\n font-size: 80%;\n font-weight: 400;\n}\n\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n","created":"20180822130528002","modified":"20200323093719985","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/clear-float":{"text":"/* Resolve issue for floating objects which cross the tiddler frame!\nThe below code should force the tiddler to always wrap around floating elements, so that they are always inside\nRef: https://groups.google.com/d/msg/tiddlywiki/5bZwwj6cyac/2LzFeA7AAwAJ\n*/\n\n.tc-tiddler-body:before, .tc-tiddler-body:after {\n content: \"\";\n display: table;\n}\n.tc-tiddler-body:after {\n clear: both;\n}\n.tc-tiddler-body {\n zoom: 1;\n}","created":"20190902043605186","modified":"20200323093719992","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/colorful-sidebar-tab":{"text":".tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\n background: none;\n border: none;\n border-bottom: solid 1px #737373 !important;\n font-weight: bold;\n color: #DB4C3F !important;\n}","created":"20191209105546612","modified":"20200323093719997","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/dbadge":{"text":"/*Credits: \nNishant Srivastava https://codepen.io/nisrulz/pen/bpQWLW\nMohammad Rahmani: https://github.com/kookma\n*/\n.dbadge {\n display: inline-block;\n margin: 0.0em;\n}\n.dbadge > span {\n color: #ffffff;\n font-size: 0.8em;\n font-weight: 400;\n line-height: 1;\n padding: .2em .6em;\n text-align: center;\n vertical-align: baseline;\n white-space: nowrap;}\n\n.dbadge-subject{\n background-color: #656565;\n border-bottom-left-radius: 0.25em;\n border-top-left-radius: 0.25em;}\n.dbadge-status {\n border-bottom-right-radius: 0.25em;\n border-top-right-radius: 0.25em;}\n\n.dbadge-primary {\n background-color: #337ab7;}\n.dbadge-success {\n background-color: #5cb85c;}\n.dbadge-info {\n background-color: #5bc0de;}\n.dbadge-warning {\n background-color: #f0ad4e;}\n.dbadge-danger {\n background-color: #d9534f;}","created":"20181204192835967","modified":"20200323093720003","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/details-slider":{"text":"/*details html5 macro*/\ndetails > summary {\n padding: 2px 6px;\n font-weight:500;\n outline:none;\n}\ndetails > div {\n padding: 2px 6px;\n margin: 0;\n}\n\nbutton .kk-sh-slider svg{\nwidth: 0.8em;\nheight: 0.8em;\nvertical-align: middle;}","created":"20181101185908941","modified":"20200325083406128","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/dynamic-tables":{"text":"/* edit-text box for dynamic table */\n.shiraz-dtable-textbox {\n width:100%;\n padding-left: 5px;\n border: none;\n}\n\n.shiraz-dtable-textbox:focus {\n outline: none;\n border: 1px solid #5778d8;\n background: transparent;\n}\n\n.tbl-inpt-edit { width: 100%; background-color: transparent; border: none; color: #000000;}\n\nbutton.tbl-sort-svg > svg { text-shadow: none; fill:#000000; height:10px; padding:0 0 2px 0; }\n\nth .tc-tiddlylink, th a { text-shadow: none; margin: 0 0 0 0; padding: 0 0 0 0; color:#000000; font-weight: bold; }\n\n\n/* DELETE CONFIRMATION */\ntable thead .tbl-delete-confirm > th {\n color: white;\n background-color:#ff0033;\n padding: 8px;\n margin: 0px;\n text-align:center;\n\tfont-weight:normal;\n}\n\ntable thead .tbl-delete-confirm > th > button {\n color: white;\n fill: white;\n}\n\n/* customize the table footer used for numerical summary*/\n.shiraz-dtable-footer tr td{\n\tbackground:#f0f0f0; \n\tborder:none;\n}","created":"20191128184537594","modified":"20200323093720018","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-alignment":{"text":"/*Image aligning classes*/\n.image-align-right{\n float:right;\n margin:0.5em 0 1.3em 1.4em;\n}\n.image-align-left{\n float:left;\n margin: 0.5em 1.4em 1.3em 0;\n}\n.image-align-center{\n display:block;\n margin: 0.5em auto 1.3em; \n}\n\n.image-float-none {\n float: none !important;\n}","created":"20190918193736314","modified":"20200323093720025","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-basic":{"text":".image-simple {\n text-align: center;\n font-style: italic;\n font-size: smaller;\n text-indent: 0;\n padding: 0.5em;\n}","created":"20181119182848505","modified":"20200323093720030","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-overlay":{"text":".image-overlay-container{\n width: 50%; \n box-sizing: border-box;\n}\n\n@media screen and (max-width: 640px){\n .image-overlay-container{\n display: block;\n width: 100%;\n }\n}\n\n@media screen and (min-width: 900px){\n .image-overlay-container{\n width: 33.33%;\n }\n}\n\n.image-overlay-container .image-overlay-title{\n color: #1a1a1a;\n text-align: center;\n margin-bottom:10px;\n}\n\n.image-overlay-content {\n position: relative;\n width: 90%;\n max-width: 400px;\n margin: auto;\n overflow: hidden;\n}\n\n.image-overlay-content .image-overlay-content-overlay {\n background: rgba(0,0,0,0.7);\n position: absolute;\n height: 99%;\n width: 100%;\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n opacity: 0;\n -webkit-transition: all 0.4s ease-in-out 0s;\n -moz-transition: all 0.4s ease-in-out 0s;\n transition: all 0.4s ease-in-out 0s;\n}\n\n.image-overlay-content:hover .image-overlay-content-overlay{\n opacity: 1;\n}\n\n.image-overlay-content-image{\n width: 100%;\n}\n\n.image-overlay-content-details {\n position: absolute;\n text-align: center;\n padding-left: 1em;\n padding-right: 1em;\n width: 100%;\n top: 50%;\n left: 50%;\n opacity: 0;\n -webkit-transform: translate(-50%, -50%);\n -moz-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transition: all 0.3s ease-in-out 0s;\n -moz-transition: all 0.3s ease-in-out 0s;\n transition: all 0.3s ease-in-out 0s;\n}\n\n.image-overlay-content:hover .image-overlay-content-details{\n top: 50%;\n left: 50%;\n opacity: 1;\n}\n\n.image-overlay-content-details h3{\n color: #fff;\n font-weight: 500;\n letter-spacing: 0.15em;\n margin-bottom: 0.5em;\n text-transform: uppercase;\n}\n\n.image-overlay-content-details p{\n color: #fff;\n font-size: 0.8em;\n}\n\n.image-overlay-fadeIn-bottom{\n top: 80%;\n}\n\n.image-overlay-fadeIn-top{\n top: 20%;\n}\n\n.image-overlay-fadeIn-left{\n left: 20%;\n}\n\n.image-overlay-fadeIn-right{\n left: 80%;\n}","created":"20181116173704182","modified":"20200323093720035","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-polaroid":{"text":".image-polaroid {\n min-width:64px;\n background-color: #f8f9fa;\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\n}\n.image-polaroid img {\n width: 100%;\n padding:10px;\n height: auto;\n}\n.image-polaroid .image-polaroid-caption {\n padding:10px 15px 10px;\n text-align: center; \n line-height: 1.4em;\n font-weight:300;\n font-size: 0.9em; \n}","created":"20181116094450565","modified":"20200323093720041","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-pretty":{"text":".image-pretty {\n min-width:64px;\n border: 1px solid #c8ccd1;\n background-color:#f8f9fa;\n}\n.image-pretty:hover {\n border: 1px solid #777;\n}\n.image-pretty img {\n padding:2px;\n width: 100%;\n height: auto;\n}\n.image-pretty .image-pretty-caption {\n padding:10px 15px 10px;\n text-align: center; \n line-height: 1.4em;\n font-weight:300;\n font-size: 0.9em; \n}\n\n","created":"20181115182806512","modified":"20200323093720047","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-slidein":{"text":".image-slidein { \n display: block; \n position: relative; \n /*float: left;*/\n overflow: hidden; \n /* margin: 0 20px 20px 0;*/\n}\n\n.image-slidein img {\n width: 100%;\n height: auto;\n}\n\n.image-slidein figcaption { \n position: absolute; \n background: rgba(0,0,0,0.75); \n color: white; \n padding: 10px 20px; \n opacity: 0;\n -webkit-transition: all 0.6s ease;\n -moz-transition: all 0.6s ease;\n -o-transition: all 0.6s ease;\n}\n.image-slidein:hover figcaption {\n opacity: 1;\n}\n.image-slidein:before { \n content: \"?\"; \n position: absolute; \n font-weight: 800; \n background: rgba(255,255,255,0.75); \n text-shadow: 0 0 5px white;\n color: black;\n width: 24px;\n height: 24px;\n -webkit-border-radius: 12px;\n -moz-border-radius: 12px;\n border-radius: 12px;\n text-align: center;\n font-size: 14px;\n line-height: 24px;\n -moz-transition: all 0.6s ease;\n opacity: 0.75;\t\n}\n.image-slidein:hover:before {\n opacity: 0;\n}\n\n.mr-cap-left:before { bottom: 10px; left: 10px; }\n.mr-cap-left figcaption { bottom: 0; left: -30%; }\n.mr-cap-left:hover figcaption { left: 0; }\n\n.mr-cap-right:before { bottom: 10px; right: 10px; }\n.mr-cap-right figcaption { bottom: 0; right: -30%; }\n.mr-cap-right:hover figcaption { right: 0; }\n\n.mr-cap-top:before { top: 10px; left: 10px; }\n.mr-cap-top figcaption { left: 0; top: -30%; }\n.mr-cap-top:hover figcaption { top: 0; }\n\n.mr-cap-bottom:before { bottom: 10px; left: 10px; }\n.mr-cap-bottom figcaption { left: 0; bottom: -30%;}\n.mr-cap-bottom:hover figcaption { bottom: 0; }\n","created":"20181117040213926","modified":"20200323093720054","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/misc/edit-buttons":{"text":"/*Edit buttons as traffic lights*/\n.tc-tiddler-controls .tc-image-delete-button {fill:#ebb;}\n.tc-tiddler-controls .tc-image-cancel-button {fill:#ed9;}\n.tc-tiddler-controls .tc-image-done-button {fill:#beb;}","created":"20191029091851469","modified":"20200323093720062","tags":"","type":"text/css"},"$:/plugins/kookma/shiraz/styles/misc/tiddler-button-visibility":{"text":"/* Mouseover toolbar visibility: courtesy from Tobias Beer*/\n.tc-tiddler-frame .tc-titlebar button {\n opacity: 0;\n transition: opacity .5s ease-in-out;\n}\n.tc-tiddler-frame:hover .tc-titlebar button {\n zoom: 1;\n filter: alpha(opacity=100);\n opacity: 1;\n}\n","created":"20191029094209435","modified":"20200323093720069","tags":"","type":"text/css"},"$:/plugins/kookma/shiraz/styles/misc/ui-buttons":{"created":"20191029092047069","modified":"20200323093720078","tags":"$:/tags/Stylesheet","type":"text/css","text":"/* These css rules makes TW UI buttons in beatiful color */\n\n/*page control buttons*/\n.tc-page-controls .tc-image-new-button { fill: #5EB95E; } /*New tiddler button*/\n.tc-page-controls .tc-image-options-button { fill:#8058A5; } /*Open control pannel*/\n\n/*tiddler buttons in beautiful color*/\n.tc-tiddler-controls .tc-image-edit-button { fill:#F37B1D; }/*edit tiddler*/\n.tc-tiddler-controls .tc-image-info-button { fill: #0e90d2; } /*Info button*/\n"},"$:/plugins/kookma/shiraz/styles/mono":{"text":".mono {\n\tcolor:unset;\n\tbackground-color: #f7f7f9;\n\tborder: 1px solid #e1e1e8;\n\twhite-space: pre-wrap;\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: \"SFMono-Regular\",Consolas,\"Liberation Mono\",Menlo,Courier,monospace;\n}","created":"20181010192406005","modified":"20200323093720084","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/multicols/column":{"text":"/* multicolumn layouts with fixed column number works on the whole tiddler */\n.multicol .tc-tiddler-body {\n column-width: 14em;\n column-rule: 1px solid #ccc;\n}\n/* two columns responsive*/\n.multicol2 .tc-tiddler-body {\n\tcolumn-count:2; \n\tcolumn-width:15em;\n}\n/* three columns responsive*/\n.multicol3 .tc-tiddler-body {\n\tcolumn-count:3; \n\tcolumn-width:10em;\n}\n\n\n/* remove the extra space from first paragraph */\n.multicol .tc-tiddler-body > :first-child, \n.multicol2 .tc-tiddler-body > :first-child, \n.multicol3 .tc-tiddler-body > :first-child { margin-top: 0;}\n\n/*-------------------------------------------------------------------------------*/\n/* Classes for using with macro and div elements */\n.sh-multicol {\n column-width: 14em;\n column-rule: 1px solid #ccc;\n}\n/* two columns responsive*/\n.sh-multicol2 {\n\tcolumn-count:2; \n\tcolumn-width:15em;\n}\n/* three columns responsive*/\n.sh-multicol3 {\n\tcolumn-count:3; \n\tcolumn-width:10em;\n}\n\n/* remove the extra space from first paragraph */\n.sh-multicol > :first-child,\n.sh-multicol2 > :first-child,\n.sh-multicol3 > :first-child { margin-top: 0;}","created":"20190627204703061","modified":"20200323093720089","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/multicols/flex backup":{"text":"/* multicolumn layout using flexbox courtesy from Bootstrap 4.3.1*/\n.flex-row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n.flex-col-1, \n.flex-col-2, \n.flex-col-3 {\n position: relative;\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n.flex-col-1{flex: 1 1 0;}\n.flex-col-2{flex: 2 1 0;}\n.flex-col-3{flex: 3 1 0;}\n\n.flex-col-1 > :first-child,\n.flex-col-2 > :first-child,\n.flex-col-3 > :first-child {\n\tmargin-top: 0;}","created":"20191030140900552","modified":"20200323093720101","type":"text/css"},"$:/plugins/kookma/shiraz/styles/multicols/flex":{"text":"/* multicolumn layout using flexbox courtesy from Bootstrap 4.3.1*/\n.flex-row {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n/* margin-right: -15px;\n margin-left: -15px;*/\n}\n\n.flex-col,\n.flex-col-1, \n.flex-col-2, \n.flex-col-3,\n.flex-col-4 {\n position: relative;\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n/* for small screen width>=576px\nhttps://getbootstrap.com/docs/4.3/layout/grid/\n*/\n@media (min-width: 576px) {\n.flex-col {flex: 1 1 0; max-width: 100%;}\n.flex-col-1 {flex: 0 0 25%; max-width:25%}\n.flex-col-2 {flex: 0 0 50%; max-width:50%}\n.flex-col-3 {flex: 0 0 75%; max-width:75%}\n.flex-col-4 {flex: 0 0 100%; max-width:100%}\n}\n\n.flex-col > :first-child,\n.flex-col-1 > :first-child,\n.flex-col-2 > :first-child,\n.flex-col-3 > :first-child,\n.flex-col-4 > :first-child {\n margin-top: 0;}\n\n\n/* Alignment */\n.flex-align-items-center {\n align-items: center !important;\n}\n.flex-justify-content-center {\n justify-content: center !important;\n}\n\n.flex-no-gutters {\n margin-right: 0;\n margin-left: 0;\n}","created":"20191014193910006","modified":"20200323093720097","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/multicols/storyriver":{"text":"/* create story river in two column layout */\n.tc-story-river {\n display: flex;\n flex-wrap: wrap;\n}\n\n.tc-tiddler-frame\n{\n max-width: 49%; margin-right: 1%;\n /*max-width: 32%; margin-right: 1%; */\n}\n","created":"20140523214749659","modified":"20200323093720108","tags":"","type":"text/css"},"$:/plugins/kookma/shiraz/styles/notebook":{"text":"@media print{\n .notebook .tc-tiddler-body {\n padding-left:60px;\n margin-top:25px;\n }\n .notebook .tc-tiddler-title,\n .notebook .tc-subtitle,\n\t.notebook .tc-tags-wrapper {\n padding-left:60px;\n }\n}\n\n@media screen{\n .notebook .tc-tiddler-title,\n .notebook .tc-subtitle,\n\t.notebook .tc-tags-wrapper,\n\t.notebook .tc-tiddler-body {\n padding-left:30px;\n }\n\n}\t\n\n@media screen and (max-width:960px) {\n .notebook .tc-tiddler-title,\n .notebook .tc-subtitle,\n .notebook .tc-tags-wrapper,\n .notebook .tc-tiddler-body {\n padding-left:60px;\n }\n\n}\n\n.notebook:before {\n content: '';\n position: absolute;\n top: 0; bottom: 0; left: 0;\n width: 50px;\n background: radial-gradient(#575450 6px, transparent 7px) repeat-y;\n background-size: 30px 30px;\n border-right: 3px solid #D44147;\n\t z-index:1;\n}\n\n.notebook .tc-tiddler-body {\n\t position: relative;\n background: linear-gradient(transparent, transparent 1.95em, #91D1D3 1.95em);\n background-size: 2em 2em;\n\t min-height:90px; \n}\n\n.notebook .tc-tiddler-body{\n\t padding-top:20px;\n font-family: \"Handlee\", cursive;\n font-weight:300;\n line-height:2em;\n color:#696969;\n}\n\n/* Setting font for other elements */\n.notebook .tc-tiddler-body pre,\n.notebook .tc-tiddler-body code,\n.notebook .tc-tiddler-body pre code\n{\n font-family: \"Handlee\", cursive;\n font-weight:300;\n}","created":"20180412105446259","modified":"20200323093720115","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/semantic/bglowtone-colors":{"text":"/* Colors taked from [1] https://www.bg-w3schools.bg-com/colors/colors_names.bg-asp \n[2] http://www.bg-workwithcolor.bg-com/color-chart-full-01.bg-htm*/\n/*Low tone background colors*/\n.bg-mistyrose{background-color:#ffe4e1;}\n.bg-lemonchiffon{background-color:#fffacd;}\n.bg-lavenderblush{background-color:#fff0f5;}\n.bg-lavender{background-color:#e6e6fa;}\n.bg-honeydew{background-color:#f0fff0;}\n.bg-lightcyan{background-color:#e0ffff;}\n.bg-aliceblue{background-color:#f0f8ff;}\n.bg-cornsilk{background-color:#fff8dc;}\n.bg-gainsboro{background-color:#dcdcdc;}\n.bg-bisque{background-color:#ffe4c4;}\n.bg-snow{background-color:#fffafa;}","created":"20181029071532524","list":"mistyrose lemonchiffon lavenderblush lavender honeydew lightcyan aliceblue cornsilk gainsboro bisque snow","modified":"20200323093720119","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/sticky-footer":{"text":".sticky-footer {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 0.5rem;\n background-color: #efefef;\n text-align: center;\n margin-top: 5px;\n box-sizing: border-box;\n width: 100%;\n}\n","created":"20180907070611557","modified":"20200323093720126","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/tables":{"text":".table-tight{\n\tfont-size:0.8em;\n}\n\n\n/*\nThis tiddler defines the custom stylesheet for tables \nApril 13, 2018\n*/\n\n/*center aligned table*/\n.table-center {\n margin:0 auto;\n}\n\n/* Table caption at top */\n.table-caption-top caption {\n caption-side:top;\n margin-bottom:0.2rem;\n}\n\n/* Striped row table */\n.table-striped-row tr:nth-child(even) td{\n background-color:#F3F6F6; \n}\n\n/* Striped column table */\n.table-striped-col tbody tr td:nth-child(odd) {\n\tbackground-color: #F3F6F6;\n}\n\n/*Borderless table*/\n.table-borderless, \n.table-borderless thead td, \n.table-borderless th, \n.table-borderless tr, \n.table-borderless td{\n border:0;\n}\n\n/* Table lines should be used with table-borderless for abbreviations and two column layout */\n\n.table-lines thead td, .table-lines th{\n border-bottom: 2px solid #dddddd;\n\t background-color:unset;\n }\n.table-lines td{\n border-bottom: 1px solid #dddddd;\n background-color:unset;\n }\n\n/* Table hover (yellow background on mouse over) */\n.table-hover tbody tr:hover{\n color: #212529;\n background-color: #e6e6e6;\n}\n.table-hover-yellow tbody tr:hover{background-color: #ffffcc;}\n.table-hover-cyan tbody tr:hover{background-color: #e6ffff;}\n\n/* Table with colored header */\n.thead-primary thead td, .thead-primary th{background-color: #007bff; color: #fff;}\n.thead-secondary thead td, .thead-secondary th{background-color: #6c757d; color: #fff;}\n.thead-success thead td, .thead-success th{background-color: #28a745; color: #fff;}\n.thead-warning thead td, .thead-warning th{background-color: #ffc107; color: #fff;}\n.thead-danger thead td, .thead-danger th{background-color: #dc3545; color: #fff;}\n.thead-info thead td, .thead-info th{background-color: #17a2b8; color: #fff;}\n.thead-dark thead td, .thead-dark th{background-color: #343a40; color: #fff;}\n.thead-light thead td, .thead-light th{background-color: #f8f9fa; color: #212529;}\n\n/* Table with colored header correct to fill svgs with white color */\n.thead-primary > thead> tr > td svg, .thead-primary > thead> tr > th svg,\n.thead-secondary > thead> tr > td svg, .thead-secondary > thead> tr > th svg,\n.thead-success > thead> tr > td svg, .thead-success > thead> tr > th svg,\n.thead-warning > thead> tr > td svg, .thead-warning > thead> tr > th svg,\n.thead-danger > thead> tr > td svg, .thead-danger > thead> tr > th svg,\n.thead-info > thead> tr > td svg, .thead-info > thead> tr > th svg,\n.thead-dark > thead> tr > td svg, .thead-dark > thead> tr > th svg\n {fill:#ffffff; padding:0 0 3px 0; }\n\n\n.thead-primary th .tc-tiddlylink, .thead-primary th a,\n.thead-secondary th .tc-tiddlylink, .thead-primary th a,\n.thead-success th .tc-tiddlylink, .thead-primary th a,\n.thead-warning th .tc-tiddlylink, .thead-primary th a,\n.thead-danger th .tc-tiddlylink, .thead-primary th a,\n.thead-info th .tc-tiddlylink, .thead-primary th a,\n.thead-dark th .tc-tiddlylink, .thead-primary th a{color:#ffffff}\n","created":"20180413092232257","modified":"20200323093720133","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/tiddler-title-class":{"text":".title-primary .tc-title {\n color: #007bff;\n}\n.title-secondary .tc-title {\n color: #6c757d;\n}\n.title-success .tc-title {\n color: #28a745;\n}\n.title-info .tc-title {\n color: #17a2b8;\n}\n.title-warning .tc-title {\n color: #ffc107;\n}\n.title-danger .tc-title {\n color: #dc3545;\n}\n.title-light .tc-title {\n color: #f8f9fa;\n}\n.title-dark .tc-title {\n color: #343a40;\n}\n.title-white .tc-title {\n color: #fff;\n}","created":"20191101112257846","modified":"20210212153844298","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/templates/body/color":{"created":"20200210160016959","modified":"20200323093720147","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"color","type":"text/vnd.tiddlywiki","text":"\\define showCell()\n<style>\n.dt:not(:disabled):dt(.disabled) {cursor: pointer;}\na.dt.disabled,fieldset:disabled a.dt {pointer-events: none;}\n</style>\n<$link overrideClass=\"dt disabled\" to=\"\">\n<$edit-text tag=input type=color tiddler=<<currentRecord>> field=color/>\n</$link>\n\\end\n\n\\define edit_color() <$edit-text tag=input type=color tiddler=<<currentRecord>> field=<<currentColumn>>/>\n<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<<showCell>>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<!--check if the current column is not selected for sorting-->\n<$list filter=\"[<tempTableSort>getindex[sortIndex]match<currentColumn>]\" variable=ignore\nemptyMessage=<<edit_color>> >\n <<showCell_Locked>>\n</$list>\n</$reveal>"},"$:/plugins/kookma/shiraz/templates/body/date":{"created":"20170128100657312","modified":"20200323093720153","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"created modified","type":"text/vnd.tiddlywiki","text":"<td>\n<$view tiddler=<<currentRecord>> field=<<currentColumn>> format=\"date\" template=\"YYYY.0MM.0DD\"/>\n</td>"},"$:/plugins/kookma/shiraz/templates/body/default":{"created":"20191125202328213","modified":"20200323093720160","tags":"$:/tags/Table/BodyTemplate","type":"text/vnd.tiddlywiki","text":"<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<<showCell>>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<!--check if the current column is not selected for sorting-->\n<$list filter=\"[<tempTableSort>getindex[sortIndex]match<currentColumn>]\" variable=ignore\nemptyMessage=<<editCell>> >\n <<showCell_Locked>>\n</$list>\n</$reveal>"},"$:/plugins/kookma/shiraz/templates/body/due-date":{"created":"20200206191120454","modified":"20200323093720165","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"due-date","type":"text/vnd.tiddlywiki","text":"\\define showCell() <$transclude tiddler=<<currentRecord>> field=<<currentColumn>> mode=\"inline\" />\n\\define showCell_Locked() <span style=\"font-style:oblique;\"><<showCell>></span>\n\\define edit_date() <$edit-text tag=input type=date tiddler=<<currentRecord>> field=<<currentColumn>>/>\n<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<<showCell>>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<!--check if the current column is not selected for sorting-->\n<$list filter=\"[<tempTableSort>getindex[sortIndex]match<currentColumn>]\" variable=ignore\nemptyMessage=<<edit_date>> >\n <<showCell_Locked>>\n</$list>\n</$reveal>\n\n<!-- Part of Task Manager\n this template ALWAYS works on fields -->"},"$:/plugins/kookma/shiraz/templates/body/email":{"created":"20191202210913762","modified":"20200323093720171","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"email","type":"text/vnd.tiddlywiki","text":"\\define display-email-address()\n<a class=\"tc-tiddlylink-external\" href=\"mailto:$(currentRecord)$!!$(currentColumn)$\" rel=\"noopener noreferrer\" target=\"_blank\">\n<<showCell>>\n</a>\n\\end\n\\define display-email-address_Locked()\n<a class=\"tc-tiddlylink-external\" href=\"mailto:$(currentRecord)$!!$(currentColumn)$\" rel=\"noopener noreferrer\" target=\"_blank\">\n<<showCell_Locked>>\n</a>\n\\end\n\n<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<<display-email-address>>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<!--check if the current column is not selected for sorting-->\n<$list filter=\"[<tempTableSort>getindex[sortIndex]match<currentColumn>]\" variable=ignore\nemptyMessage=<<editCell>> >\n<<display-email-address_Locked>>\n</$list>\n</$reveal>\n\n"},"$:/plugins/kookma/shiraz/templates/body/priority":{"created":"20200424102701026","modified":"20200424151646289","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"priority","type":"text/vnd.tiddlywiki","text":"\\define circle(color, fill)\n<svg width=\"12\" height=\"12\" >\n<circle cx=\"6\" cy=\"6\" r=\"5\" stroke=<<__color__>> fill=<<__fill__>> stroke-width=\"1\"/>\n</svg>\n\\end\n\n\\define showCell()\n<$list filter=\"[<currentRecord>get<currentColumn>match[very high]]\" variable=ignore>\n<$macrocall $name=\"circle\" color=\"#dc3545\" fill=\"#f8d7da\"/>\n</$list>\n<$list filter=\"[<currentRecord>get<currentColumn>match[high]]\" variable=ignore>\n<$macrocall $name=\"circle\" color=\"#ff8c00\" fill=\"#fff3cd\"/>\n</$list>\n<$list filter=\"[<currentRecord>get<currentColumn>match[normal]]\" variable=ignore>\n<$macrocall $name=\"circle\" color=\"#17a2b8\" fill=\"#d1ecf1\"/>\n</$list>\n<$list filter=\"[<currentRecord>get<currentColumn>match[low]]\" variable=ignore>\n<$macrocall $name=\"circle\" color=\"#007bff\" fill=\"#cce5ff\"/>\n</$list>\n<$list filter=\"[<currentRecord>get<currentColumn>match[very low]]\" variable=ignore>\n<$macrocall $name=\"circle\" color=\"#6c757d\" fill=\"#e2e3e5\"/>\n</$list>\n <$transclude tiddler=<<currentRecord>> field=<<currentColumn>> />\n\\end\n\n\\define showCell_Locked() <span style=\"font-style:oblique;\"><<showCell>></span>\n\n\\define select_priority()\n<$select tiddler=<<currentRecord>> field=<<currentColumn>> default=\"\"><option value=''>Select...</option><option value='very high'>very high</option><option value='high'>high</option><option value='normal'>normal</option><option value='low'>low</option><option value='very low'>very low</option><option value=''>no priority</option></$select>\n\\end\n\n\n<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<<showCell>>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<!--check if the current column is not selected for sorting-->\n<$list filter=\"[<tempTableSort>getindex[sortIndex]match<currentColumn>]\" variable=ignore\nemptyMessage=<<select_priority>> >\n <<showCell_Locked>>\n</$list>\n<$reveal>\n\n<!-- Part of Task Manager\n this template ALWAYS works on fields\n -->"},"$:/plugins/kookma/shiraz/templates/body/status":{"created":"20200424100127763","modified":"20200424153213801","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"status","type":"text/vnd.tiddlywiki","text":"\\define showCell() <$transclude tiddler=<<currentRecord>> field=<<currentColumn>> mode=\"inline\" />\n\\define showCell_Locked() <span style=\"font-style:oblique;\"><<showCell>></span>\n\\define select_status()\n<$select tiddler=<<currentRecord>> field=<<currentColumn>> default=\"\"><option value=''>Select...</option><option value='open'>open</option><option value='not started'>not started</option><option value='in-work'>in-work</option><option value='on-hold'>on-hold</option><option value='complete'>complete</option><option value='rework'>rework</option><option value='closed'>closed</option></$select>\n\\end\n\n<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<<showCell>>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<!--check if the current column is not selected for sorting-->\n<$list filter=\"[<tempTableSort>getindex[sortIndex]match<currentColumn>]\" variable=ignore\nemptyMessage=<<select_status>> >\n <<showCell_Locked>>\n</$list>\n</$reveal>\n\n<!-- Part of Task Manager\n this template ALWAYS works on fields -->"},"$:/plugins/kookma/shiraz/templates/body/tags":{"created":"20191125193831767","modified":"20200323093720193","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tags","type":"text/vnd.tiddlywiki","text":"<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<$list filter=\"[title<currentRecord>tags[]]\">\n<span class=\"tc-tag-list-item\" >\n<$set name=\"transclusion\" value=<<currentTiddler>>>\n<$macrocall $name=\"tag-pill-body\" tag=<<currentTiddler>> icon={{!!icon}} colour={{!!color}} palette={{$:/palette}} element-tag=\"\"\"$button\"\"\" element-attributes=\"\"\"popup=<<tempTagPopup>> dragFilter='[all[current]tagging[]]' tag='span'\"\"\"/>\n<$reveal state=<<tempTagPopup>> style=\"position:absolute; z-index:9999;\" type=\"popup\" position=\"below\" animate=\"yes\" class=\"tc-drop-down\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</$set>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]\" variable=\"listItem\"> \n<$transclude tiddler=<<listItem>>/> \n</$list>\n<hr>\n<$macrocall $name=\"list-tagged-draggable\" tag=<<currentTiddler>>/>\n</$reveal>\n</$set>\n</span>\n</$list>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<!--check if the current column is not selected for sorting-->\n<$list filter=\"[<tempTableSort>getindex[sortIndex]match<currentColumn>]\" variable=ignore\nemptyMessage=<<editCell>> >\n <<showCell_Locked>>\n</$list>\n</$reveal>"},"$:/plugins/kookma/shiraz/templates/body/tbl-checkbox":{"created":"20200206150644636","modified":"20200323093720199","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tbl-checkbox","type":"text/vnd.tiddlywiki","text":"<td style=\"width:28px;text-align:center;\">\n<$checkbox tiddler=<<currentRecord>> tag=\"done\"\ncheckactions=\"\"\"<$action-setfield $tiddler=<<tempTableStyle>> $index=<<currentRecord>> $value=\"color:#155724;background-color:#d4edda;\" /><$action-setfield $tiddler=<<currentRecord>> status=\"complete\"/>\"\"\"\nuncheckactions=\"\"\"<$action-setfield $tiddler=<<tempTableStyle>> $index=<<currentRecord>> /><$action-setfield $tiddler=<<currentRecord>> status=\"rework\"/>\"\"\" />\n</td>"},"$:/plugins/kookma/shiraz/templates/body/tbl-clone":{"created":"20201203153613838","modified":"20201203160230143","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tbl-clone","type":"text/vnd.tiddlywiki","text":"\\define cloneTiddler() <$action-createtiddler $basetitle=<<currentRecord>> $template=<<currentRecord>> />\n\n<$list filter=\"[<tempTableEdit>getindex[mode]match[edit]]\" variable=ignore>\n<td style=\"width:28px;text-align:center;\">\n <$button actions=<<cloneTiddler>> class=\"tc-btn-invisible\">\n\t {{$:/core/images/clone-button}}\n\t</$button>\n</td>\n</$list>"},"$:/plugins/kookma/shiraz/templates/body/tbl-delete":{"created":"20170212101814663","modified":"20200323093720205","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tbl-delete","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[<tempTableEdit>getindex[mode]match[edit]]\" variable=ignore>\n<td style=\"width:28px;text-align:center;\">\n <$button class=\"tc-btn-invisible\">\n <$action-sendmessage $message=\"tm-delete-tiddler\" $param=<<currentRecord>>/>\n {{$:/core/images/delete-button}}\n </$button>\n</td>\n</$list>"},"$:/plugins/kookma/shiraz/templates/body/tbl-expand":{"created":"20200209072642825","modified":"20200323093720213","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tbl-expand","type":"text/vnd.tiddlywiki","text":"<$reveal type=\"nomatch\" state=<<tempPathExpand>> text=\"show\" tag=\"td\">\n <$button class=\"tc-btn-invisible tc-tiddlylink\">\n <$action-setfield $tiddler=<<tempTableExpand>> $index=<<currentRecord>> $value=\"show\" />\n {{$:/core/images/right-arrow}}\n </$button>\n</$reveal>\n<$reveal type=\"match\" state=<<tempPathExpand>> text=\"show\" tag=\"td\">\n <$button class=\"tc-btn-invisible tc-tiddlylink\">\n <$action-setfield $tiddler=<<tempTableExpand>> $index=<<currentRecord>>/>\n {{$:/core/images/down-arrow}}\n </$button>\n</$reveal>"},"$:/plugins/kookma/shiraz/templates/body/title":{"created":"20170128100357203","modified":"20200323093720218","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"title","type":"text/vnd.tiddlywiki","text":"<td>\n<$link to=<<currentRecord>>><$text text=<<currentRecord>> /></$link>\n</td>"},"$:/plugins/kookma/shiraz/templates/body/type":{"created":"20200210063953546","modified":"20200323093720227","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"type","type":"text/vnd.tiddlywiki","text":"\\define showCell() <$transclude tiddler=<<currentRecord>> field=<<currentColumn>> mode=\"inline\" />\n<td>\n<<showCell>>\n</td>\n<!-- Note that the showCell here overrides the global showCell from table-dynamic macro -->"},"$:/plugins/kookma/shiraz/templates/footer/default":{"created":"20200130171717175","modified":"20200323093720234","tags":"$:/tags/Table/FooterTemplate","type":"text/vnd.tiddlywiki","text":"<$vars idx={{{ [<currentColumn>addsuffix[/]addsuffix<footerRow>] }}}>\n<$set name=getFieldOrIndex filter=\"[<fieldOrIndex>]-index\" value=\"get\" emptyValue=\"getindex\">\n<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<$transclude tiddler=<<tempTableFooter>> index=<<idx>> mode=\"inline\" />\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<$edit-text tiddler=<<tempTableFooter>> index=<<idx>> tag=\"input\" class=\"shiraz-dtable-textbox\"/>\n</$reveal>\n</$set>\n</$vars>"},"$:/plugins/kookma/shiraz/templates/footer/tbl-clone":{"created":"20201203155343568","modified":"20201203160215983","tags":"$:/tags/Table/FooterTemplate","tbl-column-list":"tbl-clone","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[<tempTableEdit>getindex[mode]match[edit]]\" variable=ignore>\n<td></td>\n</$list>"},"$:/plugins/kookma/shiraz/templates/footer/tbl-delete":{"created":"20200130174835714","modified":"20200323093720243","tags":"$:/tags/Table/FooterTemplate","tbl-column-list":"tbl-delete","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[<tempTableEdit>getindex[mode]match[edit]]\" variable=ignore>\n<td></td>\n</$list>"},"$:/plugins/kookma/shiraz/templates/footer/tbl-expand":{"created":"20200130173518861","modified":"20200323093720250","tags":"$:/tags/Table/FooterTemplate","tbl-column-list":"tbl-expand","type":"text/vnd.tiddlywiki","text":"<td style=\"width:28px;\"></td>"},"$:/plugins/kookma/shiraz/templates/header/default":{"created":"20170205223914688","modified":"20200323093720254","tags":"$:/tags/Table/HeaderTemplate","type":"text/vnd.tiddlywiki","text":"<$reveal type=\"nomatch\" stateTitle=<<tempTableSort>> stateIndex=\"sortIndex\" text=<<currentColumn>> tag=\"th\">\n<$button setTitle=<<tempTableSort>> setIndex=\"sortIndex\" setTo=<<currentColumn>> class=\"tc-btn-invisible tc-tiddlylink\" >\n<$action-setfield $tiddler=<<tempTableSort>> $index=\"hasnegate\" $value=\"false\"/>\n<$action-setfield $tiddler=<<tempTableSort>> $index=\"negate\" $value=\"\"/>\n<span style=\"text-transform: capitalize;\"><<currentColumn>></span>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableSort>> stateIndex=\"sortIndex\" text=<<currentColumn>> tag=\"th\">\n<$list filter=\"[<tempTableSort>getindex[hasnegate]match[false]]\" variable=ignore><!--set negate for sort-->\n<$button setTitle=<<tempTableSort>> setIndex=\"hasnegate\" setTo=\"true\" class=\"tbl-sort-svg tc-btn-invisible tc-tiddlylink\" >\n<$action-setfield $tiddler=<<tempTableSort>> $index=\"negate\" $value=\"!\"/>\n<span style=\"text-transform: capitalize;\"><<currentColumn>></span> {{$:/core/images/down-arrow}}\n</$button>\n</$list>\n<$list filter=\"[<tempTableSort>getindex[hasnegate]match[true]]\" variable=ignore><!--remove negate for sort-->\n<$button setTitle=<<tempTableSort>> setIndex=\"hasnegate\" setTo=\"false\" class=\"tbl-sort-svg tc-btn-invisible tc-tiddlylink\" >\n<$action-setfield $tiddler=<<tempTableSort>> $index=\"negate\" $value=\"\"/>\n<span style=\"text-transform: capitalize;\"><<currentColumn>></span> {{$:/core/images/up-arrow}}\n</$button>\n</$list>\n</$reveal>\n"},"$:/plugins/kookma/shiraz/templates/header/tbl-checkbox":{"created":"20200206151157578","modified":"20200424160122428","tags":"$:/tags/Table/HeaderTemplate","tbl-column-list":"tbl-checkbox","type":"text/vnd.tiddlywiki","text":"\\define chk-checkactions()\n<$list filter=\"[subfilter<inputFilter>]\" variable=\"currentRecord\">\n<$action-listops $tiddler=<<currentRecord>> $tags=\"+[append[done]]\" />\n<$action-setfield $tiddler=<<currentRecord>> status=\"complete\"/>\n<$action-setfield $tiddler=<<tempTableStyle>> $index=<<currentRecord>> $value=\"color:#155724;background-color:#d4edda;\" />\n</$list>\n\\end\n\\define chk-uncheckactions()\n<$list filter=\"[subfilter<inputFilter>]\" variable=\"currentRecord\">\n<$action-listops $tiddler=<<currentRecord>> $tags=\"+[remove[done]]\" />\n<$action-setfield $tiddler=<<currentRecord>> status=\"rework\"/>\n<$action-setfield $tiddler=<<tempTableStyle>> $index=<<currentRecord>> />\n</$list>\n\\end\n\n<th style=\"width:28px;\">\n<$checkbox checkactions=<<chk-checkactions>> uncheckactions=<<chk-uncheckactions>> />\n</th>"},"$:/plugins/kookma/shiraz/templates/header/tbl-clone":{"created":"20201203155440168","modified":"20201203160241400","tags":"$:/tags/Table/HeaderTemplate","tbl-column-list":"tbl-clone","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[<tempTableEdit>getindex[mode]match[edit]]\" variable=ignore>\n<th style=\"width:28px;text-align:center;\">\n <span>\n <$button class=\"tc-btn-invisible\" disabled=yes>\n {{$:/core/images/clone-button}}\n </$button>\n </span>\n</th>\n</$list>"},"$:/plugins/kookma/shiraz/templates/header/tbl-delete":{"created":"20170212102107998","modified":"20200323093720268","tags":"$:/tags/Table/HeaderTemplate","tbl-column-list":"tbl-delete","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[<tempTableEdit>getindex[mode]match[edit]]\" variable=ignore>\n<th style=\"width:28px;text-align:center;\">\n <span>\n <$button class=\"tc-btn-invisible\">\n <$action-setfield $tiddler=\"$:/temp/tables/delete-all\" text=<<currentTable>>/>\n {{$:/core/images/delete-button}}\n </$button>\n </span>\n</th>\n</$list>"},"$:/plugins/kookma/shiraz/templates/header/tbl-expand":{"created":"20200209072944418","modified":"20200323093720276","tags":"$:/tags/Table/HeaderTemplate","tbl-column-list":"tbl-expand","type":"text/vnd.tiddlywiki","text":"<th style=\"width:28px;\">\n <$list filter=\"[<tempTableExpand>indexes[]limit[1]]\">\n <$button class=\"tc-btn-invisible\">{{$:/core/images/fold-button}}\n <$action-setfield $tiddler=<<tempTableExpand>> text=\"\"/>\n </$button>\n </$list>\n</th>"},"$:/plugins/kookma/shiraz/ui/ControlPanel/Settings":{"caption":"Shiraz","created":"20191018054657077","list-after":"$:/core/ui/ControlPanel/Settings/TiddlyWiki","modified":"20200323093720283","tags":"$:/tags/ControlPanel/SettingsTab $:/tags/MoreSideBar","type":"text/vnd.tiddlywiki","text":"These settings let you customise the behaviour of Shiraz plugin.\n\n---\n\n;Show Shiraz setting in more sidebar\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/ui/ControlPanel/Settings\" tag=\"$:/tags/MoreSideBar\"> Show setting in more sidebar</$checkbox>\n\n;Options\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/styles/multicols/storyriver\" tag=\"$:/tags/Stylesheet\"> Multicolumn story river</$checkbox>\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/styles/misc/ui-buttons\" tag=\"$:/tags/Stylesheet\"> Colorful UI buttons</$checkbox>\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/styles/misc/tiddler-button-visibility\" tag=\"$:/tags/Stylesheet\"> Tiddler visibility on mouse hover</$checkbox>\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/styles/misc/edit-buttons\" tag=\"$:/tags/Stylesheet\"> Traffic lights for edit toolbar buttons</$checkbox>\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/styles/colorful-sidebar-tab\" tag=\"$:/tags/Stylesheet\"> Colorify sidebar tabs</$checkbox>\n\n\n\n\n"},"$:/plugins/kookma/shiraz/viewtemplates/sticky-footer":{"created":"20180907071314793","modified":"20200323125207226","tags":"$:/tags/ViewTemplate","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[all[current]has[sticky-footer]]\">\n<div class=\"sticky-footer\">\n{{!!sticky-footer}}\n</div>\n</$list>\n"}}}
{"tiddlers":{"$:/plugins/kookma/solution/buttons/pagecontrol":{"caption":"{{$:/plugins/kookma/solution/image/question-circle.svg}} {{$:/language/Buttons/Solution/Caption}}","created":"20181107195113131","description":"{{$:/language/Buttons/Solution/Hint}}","modified":"20200317220303300","tags":"$:/tags/PageControls","type":"text/vnd.tiddlywiki","text":"\\define new-solution()\n<$action-sendmessage \n $message=\"tm-new-tiddler\"\n keywords=\"\"\n tags=\"solution\"\n responder=\"\"\n url=\"\" />\n\\end\n\n\n<$button \n actions=<<new-solution>> \n tooltip={{$:/language/Buttons/Solution/Hint}} \n aria-label={{$:/language/Buttons/Solution/Caption}} \n class=<<tv-config-toolbar-class>> >\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/plugins/kookma/solution/image/question-circle.svg}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Solution/Caption}}/></span>\n</$list>\n</$button>"},"$:/language/Buttons/Solution/Caption":{"created":"20190816080549398","creator":"Mohammad","modified":"20200318070045923","modifier":"Mohammad","type":"text/vnd.tiddlywiki","text":"solution"},"$:/language/Buttons/Solution/Hint":{"created":"20190816080652314","creator":"Mohammad","modified":"20200318070106059","modifier":"Mohammad","tags":"","type":"text/vnd.tiddlywiki","text":"Create new solution"},"$:/plugins/kookma/solution/history":{"created":"20200317173938372","modified":"20200317192434399","tags":"","type":"text/vnd.tiddlywiki","text":"Full change log https://kookma.github.io/TW-Solution/#ChangeLog\n\n* ''1.1.0'' -- 2020.03.17 -- fixed issues on empty responder field\n* ''1.0.0'' -- 2018.10.06 -- initial public release\n"},"$:/plugins/kookma/solution/image/question-circle.svg":{"created":"20181107194817157","modified":"20200317220303294","tags":"","type":"text/vnd.tiddlywiki","text":"<svg class=\"tc-image-button\" viewBox=\"0 0 512 512\" width=\"22pt\" height=\"22pt\"><path d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z\"/></svg>\n<!--\nFont Awesome Free 5.3.1 by @fontawesome - https://fontawesome.com\nLicense - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n-->"},"$:/plugins/kookma/solution/license":{"created":"20200317173938372","modified":"20200317174007692","tags":"","type":"text/vnd.tiddlywiki","text":"Distributed under an MIT license.\n\nCopyright (c) 2020 [[Mohammad Rahmani|https://github.com/kookma]]\n\n<<<\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n<<<"},"$:/plugins/kookma/solution/readme":{"created":"20200317173938373","modified":"20200317212331136","tags":"","type":"text/vnd.tiddlywiki","text":"; Solution plugin\nThere are many questions and answers in [[TW Google forum|https://groups.google.com/forum/#!forum/tiddlywiki]], some of them shows elegant solution to raised questions and worth to be documented in a manner to be accessible easily later on.\n\nSolution is a small plugin to create solution tiddlers. It adds a button to page controls, on click, creates a tiddler tagged with `solution`, contains `keywords`, `responder`, and `url` fields. It then uses a view template to show the `responder` (author), reference post (`url`), and the `keywords` in a semantic way.\n\nThe `keywords` field acts like tags, so, clicking on them shows a list of all tiddlers tagged with this keyword or has this keyword in its `keywords` field.\n\n; Code and demo\nFor learning plugin features, syntax, tutorial and examples see the plugin demo and code pages\n\n* Demo: https://kookma.github.io/TW-Solution/\n* Code: https://github.com/kookma/TW-Solution\n"},"$:/plugins/kookma/solution/stylesheet/header-segment":{"created":"20181107195138316","modified":"20200317220303289","tags":"$:/tags/Stylesheet","type":"text/css","text":".sl-header{\n color: #383d41;\n background-color: #e2e3e5;\n border-color: #d6d8db;\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border-radius: 0.25rem;\n}\n\n.sl-keywords {\n display: inline-block;\n padding: 0.16em 0.7em;\n font-size: 0.9em;\n font-weight: 400;\n line-height: 1.2em;\n color: #333333;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 1em;\n background-color:#FFFFF0;\n}\n\n/*remove the blue border on button focus */\n.sl-keywords {\n outline:none;\n} "},"$:/plugins/kookma/solution/template/keywords":{"created":"20181107203051789","modified":"20200317220303318","type":"text/vnd.tiddlywiki","text":"\\define keywords-body(kwd)\n<$list filter=\"[tag[$kwd$]] [search:keywords[$kwd$]]\" variable=\"itemTid\">\n<$link to=<<itemTid>> ><$text text=<<itemTid>>/></$link>\n</$list>\n\\end\n<!-- keywords-body lists all tiddler tagged with kwd or have kwd in their keywords field -->\n\n<$set name=\"transclusion\" value=<<qualify \"$:/state/popup/tag\">> >\n<$button class=\"tc-btn-invisible sl-keywords\" popup=<<transclusion>> >\n<$text text=<<currentTiddler>>/>\n</$button>\n<$reveal state=<<transclusion>> type=\"popup\" position=\"below\" animate=\"yes\" class=\"tc-drop-down\">\n<$link to=<<currentTiddler>> ><$text text=<<currentTiddler>>/></$link>\n<hr>\n<$macrocall $name=\"keywords-body\" kwd=<<currentTiddler>> />\n</$reveal>\n</$set>\n"},"$:/plugins/kookma/solution/ui/search-in-fields":{"caption":"In Fields","created":"20141231095518178","list-before":"$:/core/ui/AdvancedSearch/Filter","modified":"20200317220303305","tags":"$:/tags/AdvancedSearch","type":"text/vnd.tiddlywiki","text":"\\define selectedFields() title caption tags keywords responder\n\\define searchInField(field, for, ci)\n<$list filter=\"[!is[shadow]!is[system]regexp:$field$[$for$$ci$]limit[1]]\">\n<dt>$field$</dt>\n</$list>\n\n<$list filter=\"[!is[shadow]!is[system]regexp:$field$[$for$$ci$]]\">\n<dd><$link><$view field=\"title\"/></$link></dd>\n</$list>\n\\end\n\n<style>.tc-advanced-search-check input {width:auto !important;}</style>\n\nSearch in fields... <span class=\"tc-advanced-search-check\"><$checkbox field=\"case-insensitive\" tiddler=\"$:/temp/infieldsearch\" checked=\"(?i)\"> case insensitive</$checkbox></span>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/infieldsearch\" type=\"search\" tag=\"input\" placeholder=\"search terms\" default=\"\"/> <$select field=\"field\" tiddler=\"$:/temp/infieldsearch\" default=\"*\">\n<optgroup label='Selected'>\n<$list filter=<<selectedFields>> variable=\"field\">\n<option value=<<field>>><<field>></option>\n</$list>\n</optgroup>\n<optgroup label='Other'>\n<option value=\"\">*any</option>\n<$list filter=\"[!is[shadow]!is[system]fields[]sort[]] -[enlist<selectedFields>]\" variable=\"field\">\n<option value=<<field>>><<field>></option>\n</$list>\n</optgroup>\n</$select>\n<$reveal state=\"$:/temp/infieldsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/infieldsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal state=\"$:/temp/infieldsearch\" type=\"nomatch\" text=\"\">\n<$reveal state=\"$:/temp/infieldsearch!!field\" type=\"match\" text=\"\">\n<dl>\n<$list filter=\"[!is[shadow]!is[system]fields[]]\" variable=\"field\">\n\n<$reveal type=nomatch text=text default=<<field>>>\n<$macrocall $name=\"searchInField\" field=<<field>> for={{$:/temp/infieldsearch}} ci={{$:/temp/infieldsearch!!case-insensitive}}/>\n</$reveal>\n</$list>\n</dl>\n</$reveal>\n<$reveal state=\"$:/temp/infieldsearch!!field\" type=\"nomatch\" text=\"\">\n\n<dl>\n<$macrocall $name=\"searchInField\" field={{$:/temp/infieldsearch!!field}} for={{$:/temp/infieldsearch}} ci={{$:/temp/infieldsearch!!case-insensitive}}/>\n</dl>\n</$reveal>\n</$reveal>"},"$:/plugins/kookma/solution/viewtemplate/header-segment":{"created":"20181107195214597","list-before":"$:/core/ui/ViewTemplate/body","modified":"20200317220303324","tags":"$:/tags/ViewTemplate","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[all[current]tag[solution]]\">\n<div class=\"sl-header\">\n<$set name=responders tiddler=<<currentTiddler>> field=\"responder\" emptyValue=\"[[Not set yet]]\">\n''Ref'': <a href={{!!url}} target=\"_blank\"><$list filter=\"[enlist<responders>join[, ]]\" variable=item><$text text=<<item>> /></$list></a><br>\n''Keywords'': <$list filter={{!!keywords}} template=\"$:/plugins/kookma/solution/template/keywords\" />\n</$set>\n</div>\n</$list>\n\n\n"}}}
\define selectedFields() title caption tags keywords responder
\define searchInField(field, for, ci)
<$list filter="[!is[shadow]!is[system]regexp:$field$[$for$$ci$]limit[1]]">
<dt>$field$</dt>
</$list>
<$list filter="[!is[shadow]!is[system]regexp:$field$[$for$$ci$]]">
<dd><$link><$view field="title"/></$link></dd>
</$list>
\end
<style>.tc-advanced-search-check input {width:auto !important;}</style>
Search in fields... <span class="tc-advanced-search-check"><$checkbox field="case-insensitive" tiddler="$:/temp/infieldsearch" checked="(?i)"> case insensitive</$checkbox></span>
<div class="tc-search">
<$edit-text tiddler="$:/temp/infieldsearch" type="search" tag="input" placeholder="search terms" default=""/> <$select field="field" tiddler="$:/temp/infieldsearch" default="*">
<optgroup label='Selected'>
<$list filter=<<selectedFields>> variable="field">
<option value=<<field>>><<field>></option>
</$list>
</optgroup>
<optgroup label='Other'>
<option value="">*any</option>
<$list filter="[!is[shadow]!is[system]fields[]sort[]] -[enlist<selectedFields>]" variable="field">
<option value=<<field>>><<field>></option>
</$list>
</optgroup>
</$select>
<$reveal state="$:/temp/infieldsearch" type="nomatch" text="">
<$button class="tc-btn-invisible">
<$action-setfield $tiddler="$:/temp/infieldsearch" $field="text" $value=""/>
{{$:/core/images/close-button}}
</$button>
</$reveal>
</div>
<$reveal state="$:/temp/infieldsearch" type="nomatch" text="">
<$reveal state="$:/temp/infieldsearch!!field" type="match" text="">
<dl>
<$list filter="[!is[shadow]!is[system]fields[]]" variable="field">
<$reveal type=nomatch text=text default=<<field>>>
<$macrocall $name="searchInField" field=<<field>> for={{$:/temp/infieldsearch}} ci={{$:/temp/infieldsearch!!case-insensitive}}/>
</$reveal>
</$list>
</dl>
</$reveal>
<$reveal state="$:/temp/infieldsearch!!field" type="nomatch" text="">
<dl>
<$macrocall $name="searchInField" field={{$:/temp/infieldsearch!!field}} for={{$:/temp/infieldsearch}} ci={{$:/temp/infieldsearch!!case-insensitive}}/>
</dl>
</$reveal>
</$reveal>
{"tiddlers":{"$:/plugins/kookma/toc/history":{"created":"20200220093235978","modified":"20200313203750327","tags":"","type":"text/vnd.tiddlywiki","text":"!! Revision 1.3.0\n* date:[13th Mar 2020]\n* [NEW] global variable `adminTid` is added to allow adminstration rules. If set to `reader` will hide the `switch to author mode` \n\n!! Revision 1.2.0\n* date:[11th Mar 2020]\n* [FIXED] issue in font weight of opened-item\n* [FIXED] color of navigation button removed\n* [NEW] opened entry has a left solid bar\n\n!! Revision 1.1.0\n* date:[28th Feb 2020]\n* [NEW] `toc-ui` macro\n* [NEW] outliner (drag and drop to re arrange entries)\n* [NEW] bookmarks\n* [NEW] improved documentation\n\n!! Revision 1.0.0\n* Date: [21st Feb 2020]\n* [NEW] documentation improved\n* [NEW] code polished\n* [NEW] common macros and styles mereged\n\n!! Revision 0.5.0\n* Date: [14 Feb 2020]\n* [NEW] documentation improved\n* [NEW] examples added\n* [NEW] outline numbered class is added\n\n!! Revision 0.1.0\n* Date: [23rd Jan 2020]\n* first release"},"$:/plugins/kookma/toc/license":{"created":"20200220093235979","modified":"20200227232831721","tags":"","type":"text/vnd.tiddlywiki","text":"Distributed under an MIT license.\n\nCopyright (c) 2020 [[Mohammad Rahmani|https://github.com/kookma]]\n\n<<<\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n<<<\n"},"$:/plugins/kookma/toc/macros/helper":{"created":"20200220082105852","modified":"20200227232831717","tags":"$:/tags/Macro/Toc","type":"text/vnd.tiddlywiki","text":"\\define tidSelectedItem() $:/temp/toc/selected-item/$(stateTiddler)$\n\\define tidToggleState() $:/temp/toc/toggle/$(stateTiddler)$\n\n\\define tidShowMode() $:/temp/toc/show-mode/$(stateTiddler)$\n\\define tidExpandAll() $:/temp/toc/expand-all//$(stateTiddler)$\n\\define tidShowTools() $:/temp/toc/show-tools/$(stateTiddler)$\n\n\\define tidTocTemplate() $:/plugins/kookma/toc/templates/show-single-item\n\\define tidBookmarkConfig() $:/config/toc/bookmarks/$(stateTiddler)$"},"$:/plugins/kookma/toc/macros/multilevel-draggable":{"created":"20200225205504695","modified":"20200227232831713","tags":"$:/tags/Macro/Toc","type":"text/vnd.tiddlywiki","text":"\\define toc-item-dragdata() $:/temp/toc/dragdata\n\\define toc-item-dragdata-path() $:/temp/toc/dragdata/path\n\\define toc-item-dragstart() \n<$action-setfield $tiddler=<<toc-item-dragdata>> text=<<actionTiddler>> />\n<$action-setfield $tiddler=<<toc-item-dragdata-path>> text=<<path>> />\n\\end\n\\define toc-item-dragend() \n<$action-deletetiddler $tiddler=<<toc-item-dragdata>> />\n<$action-deletetiddler $tiddler=<<toc-item-dragdata-path>> />\n\\end\n\n\\define toc_caption()\n<$transclude field=\"caption\">\n <$view field=\"title\"/>\n</$transclude>\n\\end\n\n\\define toc-item-dragtip()\n<$wikify name=actionTiddler text={{{ [<toc-item-dragdata>get[text]] }}}><!--handles title with space in title-->\n<$vars actionTiddlerx={{{ [<toc-item-dragdata>get[text]] }}}>\n<$list filter=\"[<actionTiddler>!match<item>]\"> <!-- DON'T SHOW TIP ON SELF -->\n <div class=\"kk-toc-dragtip\">\n <nobr>drop <$tiddler tiddler=<<actionTiddler>>>''<<toc_caption>>''</$tiddler></nobr><br>\n <nobr>onto <$tiddler tiddler=<<item>> >''<<toc_caption>>''</$tiddler></nobr><br>\n <div style=\"font-size:80%; border-top:1px solid; margin-top:0.2em;\">\n NO KEY=insert before, SHIFT=insert after, CTRL=drop into\n </div>\n </div>\n</$list>\n</$vars>\n</$wikify>\n\\end\n\n\n\\define toc-item-drop()\n<$reveal default=<<actionTiddler>> type=\"nomatch\" text=<<item>>> <!-- DON'T DROP ON SELF -->\n <!-- get OLDTAG and NEWTAG, exclude special TiddlyBook tags -->\n <$vars sourcepath={{{ [<toc-item-dragdata-path>get[text]] }}}\n targetpath=<<path>> >\n <$vars oldtag= {{{ [<sourcepath>split[/]]-[<actionTiddler>]+[last[]] }}}\n newtag={{{ [<targetpath>split[/]]-[<item>]+[last[]] }}}>\n <$reveal default=<<modifier>> type=\"match\" text=\"normal\"> <!-- DROP BEFORE SIBLING -->\n <$set name=\"order\" filter=\"[<newtag>tagging[]]\">\n <$list filter=<<order>>> <$action-deletefield $field=\"list-before\"/> <$action-deletefield $field=\"list-after\"/> </$list>\n <$action-listops $tiddler=<<actionTiddler>> $field=\"tags\" $subfilter=\"-[<oldtag>] [<newtag>]\" />\n <$action-listops $tiddler=<<oldtag>> $field=\"list\" $subfilter=\"-[<actionTiddler>]\" />\n <$action-listops $tiddler=<<newtag>> $field=\"list\" $subfilter=\"[enlist<order>] -[<actionTiddler>] [<actionTiddler>] +[putbefore<item>]\" />\n </$set>\n </$reveal>\n <$reveal default=<<modifier>> type=\"match\" text=\"shift\"> <!-- DROP AFTER SIBLING -->\n <$set name=\"order\" filter=\"[<newtag>tagging[]]\">\n <$list filter=<<order>>> <$action-deletefield $field=\"list-before\"/> <$action-deletefield $field=\"list-after\"/> </$list>\n <$action-listops $tiddler=<<actionTiddler>> $field=\"tags\" $subfilter=\"-[<oldtag>] [<newtag>]\" />\n <$action-listops $tiddler=<<oldtag>> $field=\"list\" $subfilter=\"-[<actionTiddler>]\" />\n <$action-listops $tiddler=<<newtag>> $field=\"list\" $subfilter=\"[enlist<order>] -[<actionTiddler>] [<actionTiddler>] +[putafter<item>]\" />\n </$set>\n </$reveal>\n <$reveal default=<<modifier>> type=\"match\" text=\"ctrl\"> <!-- DROP AS CHILD -->\n <$set name=\"order\" filter=\"[<item>tagging[]]\">\n <$list filter=<<order>>> <$action-deletefield $field=\"list-before\"/> <$action-deletefield $field=\"list-after\"/> </$list>\n <$action-listops $tiddler=<<actionTiddler>> $field=\"tags\" $subfilter=\"-[<oldtag>] [<item>]\" />\n <$action-listops $tiddler=<<oldtag>> $field=\"list\" $subfilter=\"-[<actionTiddler>]\" />\n <$action-listops $tiddler=<<item>> $field=\"list\" $subfilter=\"[enlist<order>] -[<actionTiddler>] [<actionTiddler>]\" />\n </$set>\n </$reveal>\n </$vars>\n </$vars>\n</$reveal>\n\\end"},"$:/plugins/kookma/toc/macros/multilevel-exapndable":{"created":"20200129100032272","modified":"20200227232831709","tags":"$:/tags/Macro/Toc","type":"text/vnd.tiddlywiki","text":"\\define toc-show-item-authormode(item, is-branch:no)\n<$vars item=<<__item__>> is-branch=<<__is-branch__>> >\n<$droppable actions=<<toc-item-drop>>>\n\t<div class=\"tc-droppable-placeholder kk-toc-placeholder\"></div> \n\t<$draggable tiddler=<<item>> startactions=<<toc-item-dragstart>> endactions=<<toc-item-dragend>> dragimagetype=\"blank\">\n\t{{$item$||$(tidTocTemplate)$}}\n\t</$draggable>\n\t<div class=\"tc-droppable-placeholder kk-toc-placeholder\"><<toc-item-dragtip>></div> \n</$droppable>\n</$vars>\n\\end\n\n\\define toc-show-item-readermode(item, is-branch:no)\n<$vars item=<<__item__>> is-branch=<<__is-branch__>> >\n {{$item$||$(tidTocTemplate)$}}\n</$vars>\n\\end\n\n\n\\define toggle-branch()\n<$reveal type=\"nomatch\" stateTitle=<<tidToggleState>> stateIndex=<<path>> text=\"yes\">\n <$button class=\"tc-btn-invisible\" setTitle=<<tidToggleState>> setIndex=<<path>> setTo=\"yes\">\n {{$:/core/images/right-arrow}}\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<tidToggleState>> stateIndex=<<path>> text=\"yes\">\n <$button class=\"tc-btn-invisible\" setTitle=<<tidToggleState>> setIndex=<<path>> >\n {{$:/core/images/down-arrow}}\n </$button>\n </$reveal>\n\\end \n\n\n\\define _toc-tree-body(here, exclude, path)\n<$vars path=\"\"\"$path$/$here$\"\"\">\n<$list filter=\"\"\"[tag[$here$]] $exclude$ +[limit[1]]\"\"\" emptyMessage=\"\"\"<li style=\"padding-left:1.2em\"><$macrocall $name=<<toc-show-mode>> item=<<__here__>> /></li>\"\"\" variable=ignore>\n <li><$macrocall $name=<<toc-show-mode>> item=<<__here__>> is-branch=\"yes\"/></li>\n <$reveal type=\"match\" stateTitle=<<tidToggleState>> stateIndex=<<path>> text=\"yes\">\n <ol>\n <$list filter=\"\"\"[tag[$here$]] $exclude$\"\"\">\n <$macrocall $name=\"_toc-tree-body\" here=<<currentTiddler>> exclude=\"\"\"$exclude$ -[[$here$]]\"\"\" path=<<path>>/>\n </$list>\n </ol>\n </$reveal>\n</$list> \n</$vars>\n\\end\n\n\n\\define toc-tree(here, exclude, mode)\n<$set name=toc-show-mode value=<<__mode__>> emptyValue=\"toc-show-item-readermode\">\n<div class=\"kk-toc\" style=\"margin-top:-10px;\">\n<ol>\n<$list filter=\"\"\"[tag[$here$]] $exclude$ -[[$here$]]\"\"\">\n<$macrocall $name=\"_toc-tree-body\" here=<<currentTiddler>> exclude=\"\"\"$exclude$ -[[$here$]]\"\"\" path=\"\"\"$here$\"\"\" />\n</$list>\n</ol>\n</div>\n</$set>\n\\end\n\n\\define item-path() $(path)$/$(item)$\n\n\\define _toc-expand(here, exclude, path)\n<$list filter=\"\"\"[tag[$here$]] $exclude$ -[[$here$]]\"\"\">\n<$vars item=<<currentTiddler>> path=\"\"\"$path$\"\"\" >\n <$action-setfield $tiddler=<<tidToggleState>> $index=\"\"\"$path$\"\"\" $value=\"yes\"/>\n <$macrocall $name=\"_toc-expand\" here=<<item>> exclude=\"\"\"$exclude$ -[[$here$]]\"\"\" path=<<item-path>>/>\n</$vars>\t \n</$list>\n\\end\n\n\n\\define collapse-expand-all(here, exclude)\n<$reveal type=\"match\" stateTitle=<<tidExpandAll>> stateField=\"text\" text=\"expand-all\">\n<$button class=\"tc-btn-invisible kk-toc-btn\" tooltip=\"collapse all\">{{$:/core/images/fold-button}}\n<$action-deletetiddler $tiddler=<<tidToggleState>> />\n<$action-setfield $tiddler=<<tidExpandAll>> text=\"collapse-all\"/>\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" stateTitle=<<tidExpandAll>> stateField=\"text\" text=\"expand-all\">\n<$button class=\"tc-btn-invisible kk-toc-btn\" tooltip=\"expand all\">{{$:/core/images/unfold-button}}\n<$macrocall $name=\"_toc-expand\" here=<<__here__>> exclude=<<__exclude__>> path=<<__here__>> />\n<$action-setfield $tiddler=<<tidExpandAll>> text=\"expand-all\"/>\n</$button>\n</$reveal>\n\\end\n\n\\define multilevel-toc-expandable(tag:\"TableOfContents\", exclude:\"\", stateTiddler:\"multilevelState\")\n<$set name=stateTiddler value=<<__stateTiddler__>> >\n<$macrocall $name=collapse-expand-all here=<<__tag__>> exclude=<<__exclude__>> />\n<$macrocall $name=toc-tree here=<<__tag__>> exclude=<<__exclude__>> mode=\"toc-show-item-readermode\" />\n</$set>\n\\end"},"$:/plugins/kookma/toc/macros/multilevel-navigation":{"created":"20200126065458722","modified":"20200227232831705","tags":"$:/tags/Macro/Toc","type":"text/vnd.tiddlywiki","text":"\\define toc-list(here,exclude)\n<$list filter=\"\"\"[tag[$here$]] $exclude$ -[[$here$]]\"\"\">\n <$text text=\"[[\"/><<currentTiddler>><$text text=\"]]\"/>\n <$macrocall $name=\"toc-list\" here=<<currentTiddler>> exclude=\"\"\"$exclude$ -[[$here$]]\"\"\"/>\n</$list>\n\\end\n\n\\define toc-hierarchical-navigation(tag:\"\", class, close:\"no\")\n<$wikify name=\"all\" text=\"\"\"<$macrocall $name=\"toc-list\" here=<<__tag__>> />\"\"\">\n<$vars prev={{{ [enlist<all>before<currentTiddler>] }}} >\n<$vars next={{{ [enlist<all>after<currentTiddler>] }}} >\n<div class=\"$class$\">\n<$list filter=\"[<prev>!is[missing]]\" variable=\"prevTiddler\">\n<$button to=<<prevTiddler>> tooltip=<<prevTiddler>> class=\"tc-btn-invisible $class$\">previous\n<$action-setfield $tiddler=<<tidSelectedItem>> text=<<prevTiddler>> /> \n<$list filter=\"[<__close__>match[yes]]\" variable=ignore><$action-sendmessage $message=\"tm-close-tiddler\" $param=<<currentTiddler>>/></$list>\n</$button>\n</$list>\n<$list filter=\"[<next>!is[missing]] [<prev>!is[missing]] +[count[]] -1 -0\" variable=ignore>|</$list>\n<$list filter=\"[<next>!is[missing]]\" variable=\"nextTiddler\">\n<$button to=<<nextTiddler>> tooltip=<<nextTiddler>> class=\"tc-btn-invisible $class$\">next\n<$action-setfield $tiddler=<<tidSelectedItem>> text=<<nextTiddler>> /> \n<$list filter=\"[<__close__>match[yes]]\" variable=ignore><$action-sendmessage $message=\"tm-close-tiddler\" $param=<<currentTiddler>>/></$list>\n</$button>\n</$list>\n</div>\n</$vars>\n</$vars>\n</$wikify>\n\\end\n\n\n\\define multilevel-toc-navigation(tag:\"TableOfContents\", close:\"no\", class:\"\", stateTiddler:\"multilevelState\")\n<$set name=stateTiddler value=<<__stateTiddler__>> >\n<$list filter=\"[<currentTiddler>!is[system]]\">\n <div class=\"kk-toc-hideForPrint\">\n <$macrocall $name=\"toc-hierarchical-navigation\"\n tag=\"\"\"$tag$\"\"\" close=<<__close__>> class=<<__class__>> />\n </div>\n</$list>\n</$set>\n\\end"},"$:/plugins/kookma/toc/macros/multilevel-toc-all":{"created":"20200227180558214","modified":"20200313201450721","tags":"$:/tags/Macro/Toc","type":"text/vnd.tiddlywiki","text":"\\define toc-all-body(here,exclude)\n<$list filter=\"\"\"[tag[$here$]] $exclude$ -[[$here$]]\"\"\">\n <li><$link/></li>\n <$list filter=\"[tag<currentTiddler>]+[limit[1]]\" variable=ignore>\n <ol style=\"padding-left:1.5em\">\n <$macrocall $name=\"toc-all-body\" here=<<currentTiddler>> exclude=\"\"\"$exclude$ -[[$here$]]\"\"\"/>\n </ol>\n</$list>\n</$list>\n\\end\n\n\\define toc-all(tag, exclude)\n<div class=\"kk-toc\">\n <ol>\n <$macrocall $name=\"toc-all-body\" here=<<__tag__>> exclude=<<__exclude__>> />\n </ol>\n</div>\n\\end"},"$:/plugins/kookma/toc/macros/multilevel-ui":{"created":"20200226221456462","modified":"20200313200405874","tags":"$:/tags/Macro/Toc","type":"text/vnd.tiddlywiki","text":"\\define show-mode()\n<$reveal type=\"nomatch\" stateTitle=<<tidShowMode>> stateField=\"text\" text=\"toc-show-item-authormode\">\n<$button class=\"tc-btn-invisible kk-toc-btn\" tooltip=\"switch to author mode\">{{$:/core/images/edit-button}}\n<$action-setfield $tiddler=<<tidShowMode>> text=\"toc-show-item-authormode\"/>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tidShowMode>> stateField=\"text\" text=\"toc-show-item-authormode\">\n<$button class=\"tc-btn-invisible kk-toc-btn\" tooltip=\"switch to reader mode\">{{$:/core/images/done-button}}\n<$action-setfield $tiddler=<<tidShowMode>> text=\"toc-show-item-readermode\"/>\n</$button>\n</$reveal>\n\\end\n\n\\define remove-all-bookmarks()\n<$button class=\"tc-btn-invisible kk-toc-btn\" tooltip=\"remove all bookmarks\">☆\n<$list filter=\"[<tidBookmarkConfig>!is[missing]]\" variable=ignore>\n<$action-deletetiddler $tiddler=<<tidBookmarkConfig>> />\n</$list>\n</$button>\n\\end\n\n\\define toggle-display-btnTools()\n<$list filter=\"[<tidShowTools>get[text]match[show]]\"\n emptyMessage=\"\"\"<$action-setfield $tiddler=<<tidShowTools>> text=\"show\"/>\"\"\">\n<$action-setfield $tiddler=<<tidShowTools>> text=\"hide\"/>\n</$list>\n\\end\n\n\\define toc-manager-ui()\n<span class=\"kk-toc-tools-manager\"> --- \n<$button class=\"tc-btn-invisible kk-toc-btn\" tooltip=\"toggle tools buttons\" actions=<<toggle-display-btnTools>>>\n{{$:/core/images/options-button}}\n</$button>\n<$reveal stateTitle=<<tidShowTools>> stateField=text text=\"show\" type=\"match\">\n<$macrocall $name=\"collapse-expand-all\" here=<<__tag__>> exclude=<<__exclude__>> />\n<$reveal type=nomatch stateTitle=<<adminTid>> stateField=\"text\" text=\"reader\" default=\"author\">\n<<show-mode>><!--only hide edit tools if adminTid tiddler text is reader-->\n</$reveal>\n<<remove-all-bookmarks>>\n</$reveal>\n</span>\n\\end\n\n\\define toc-ui(tag:\"TableOfContents\", exclude:\"\", stateTiddler:\"multilevelState\")\n<$set name=stateTiddler value=<<__stateTiddler__>> >\n<<toc-manager-ui>>\n<$macrocall $name=toc-tree here=<<__tag__>> exclude=<<__exclude__>> mode={{{[<tidShowMode>get[text]]}}} />\n</$set>\n\\end\n\n"},"$:/plugins/kookma/toc/macros/twolevel-expandable":{"created":"20200129073852901","modified":"20200227232831693","tags":"$:/tags/Macro/Toc","type":"text/vnd.tiddlywiki","text":"\\define twolevel-toc-show-single-item(item)\n<$set name=\"openItemClass\" filter=\"[<tidSelectedItem>get[text]match<__item__>]\" value=\"tc-btn-invisible kk-toc-opened-item\" emptyValue=\"tc-btn-invisible tc-tiddlylink\">\n<$button class=<<openItemClass>> style=\"outline:none;\" to=<<__item__>> dragTiddler=<<__item__>>>\n <$view tiddler=<<__item__>> field=\"caption\">\n <$view tiddler=<<__item__>> field=\"title\"></$view>\n </$view>\n<$action-setfield $tiddler=<<tidSelectedItem>> text=<<__item__>> /> \n</$button>\n</$set>\n\\end \n\n\n\\define twolevel-toc-body(here, exclude)\n<$list filter=\"\"\"[tag[$here$]] $exclude$ +[limit[1]]\"\"\" emptyMessage=\"\"\"<li class=\"kk-toc-item\" style=\"padding-left:1.2em\"><$macrocall $name=twolevel-toc-show-single-item item=<<__here__>> /></li>\"\"\" variable=ignore>\n<li class=\"kk-toc-item\">\n<$reveal type=\"nomatch\" stateTitle=<<tidToggleState>> stateIndex=<<__here__>> text=\"yes\">\n <$button class=\"tc-btn-invisible tc-tiddlylink\" style=\"outline:none;\" setTitle=<<tidToggleState>> setIndex=<<__here__>> setTo=\"yes\">\n {{$:/core/images/right-arrow}}\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<tidToggleState>> stateIndex=<<__here__>> text=\"yes\">\n <$button class=\"tc-btn-invisible tc-tiddlylink\" style=\"outline:none;\" setTitle=<<tidToggleState>> setIndex=<<__here__>> setTo=\"no\">\n {{$:/core/images/down-arrow}}\n </$button>\n </$reveal>\n<$macrocall $name=twolevel-toc-show-single-item item=<<__here__>> />\n</li>\n<$reveal type=\"match\" stateTitle=<<tidToggleState>> stateIndex=<<__here__>> text=\"yes\">\n<ol>\n<$list filter=\"\"\"[tag[$here$]] $exclude$\"\"\">\n<li class=\"kk-toc-item\"><$macrocall $name=twolevel-toc-show-single-item item=<<currentTiddler>> /></li>\n</$list>\n</ol>\n</$reveal>\n\\end\n\n\n\\define twolevel-toc-tree(here, exclude)\n<div class=\"kk-toc\" style=\"margin-top:-10px\">\n<ol>\n<$list filter=\"\"\"[tag[$here$]] $exclude$\"\"\"> \n<$macrocall $name=twolevel-toc-body here=<<currentTiddler>> exclude=<<__exclude__>> />\n</$list>\n</ol>\n</div>\n\\end\n\n\n\\define twolevel-toc-expand-all(here, exclude)\n<$list filter=\"\"\"[tag[$here$]] $exclude$\"\"\"> \n<$list filter=\"[tag<currentTiddler>count[]!match[0]]\" variable=ignore>\n<$action-setfield $tiddler=<<tidToggleState>> $index=<<currentTiddler>> $value=\"yes\"/>\n</$list>\n</$list>\n\\end\n\n\n\\define twolevel-collapse-expand-all(here, exclude)\n<$reveal type=\"match\" stateTitle=<<tidExpandAll>> stateField=\"text\" text=\"expand-all\">\n<$button tooltip=\"collapse all\" class=\"tc-btn-invisible kk-toc-btn\" style=\"outline:none;\" tooltip=\"collapse all\">{{$:/core/images/fold-button}}\n<$action-deletetiddler $tiddler=<<tidToggleState>> />\n<$action-setfield $tiddler=<<tidExpandAll>> text=\"collapse-all\"/>\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" stateTitle=<<tidExpandAll>> stateField=\"text\" text=\"expand-all\">\n<$button tooltip=\"expand all\" class=\"tc-btn-invisible kk-toc-btn\" style=\"outline:none;\">{{$:/core/images/unfold-button}}\n<$macrocall $name=\"twolevel-toc-expand-all\" here=<<__here__>> exclude=<<__exclude__>> />\n<$action-setfield $tiddler=<<tidExpandAll>> text=\"expand-all\"/>\n</$button>\n</$reveal>\n\\end\n\n\n\\define twolevel-toc-expandable(tag:\"Contents\", exclude:\"\", stateTiddler:\"twolevelState\")\n<$set name=stateTiddler value=<<__stateTiddler__>> >\n<$macrocall $name=twolevel-collapse-expand-all here=<<__tag__>> exclude=<<__exclude__>> />\n<$macrocall $name=twolevel-toc-tree here=<<__tag__>> exclude=<<__exclude__>> />\n</$set>\n\\end"},"$:/plugins/kookma/toc/macros/twolevel-navigation":{"created":"20200220082243485","modified":"20200227232831689","tags":"$:/tags/Macro/Toc","type":"text/vnd.tiddlywiki","text":"\\define twolevel-toc-list(here, exclude)\n<$list filter=\"\"\"[tag[$here$]] $exclude$\"\"\"> \n<$text text=\"[[\"/><<currentTiddler>><$text text=\"]]\"/>\n <$list filter=\"\"\"[tag<currentTiddler>] $exclude$\"\"\">\n <$text text=\"[[\"/><<currentTiddler>><$text text=\"]]\"/>\n </$list>\n</$list>\n\\end\n\n\\define twolevel-toc-hierarchical-navigation(tag:\"\", class, close:\"no\")\n<$wikify name=\"all\" text=\"\"\"<$macrocall $name=\"twolevel-toc-list\" here=<<__tag__>> />\"\"\">\n<$vars prev={{{ [enlist<all>before<currentTiddler>] }}} >\n<$vars next={{{ [enlist<all>after<currentTiddler>] }}} >\n<div class=\"$class$\">\n<$list filter=\"[<prev>!is[missing]]\" variable=\"prevTiddler\">\n<$button to=<<prevTiddler>> tooltip=<<prevTiddler>> class=\"tc-btn-invisible $class$\">previous\n<$action-setfield $tiddler=<<tidSelectedItem>> text=<<prevTiddler>> /> \n<$list filter=\"[<__close__>match[yes]]\" variable=ignore><$action-sendmessage $message=\"tm-close-tiddler\" $param=<<currentTiddler>>/></$list>\n</$button>\n</$list>\n<$list filter=\"[<next>!is[missing]] [<prev>!is[missing]] +[count[]] -1 -0\" variable=ignore>|</$list>\n<$list filter=\"[<next>!is[missing]]\" variable=\"nextTiddler\">\n<$button to=<<nextTiddler>> tooltip=<<nextTiddler>> class=\"tc-btn-invisible $class$\">next\n<$action-setfield $tiddler=<<tidSelectedItem>> text=<<nextTiddler>> /> \n<$list filter=\"[<__close__>match[yes]]\" variable=ignore><$action-sendmessage $message=\"tm-close-tiddler\" $param=<<currentTiddler>>/></$list>\n</$button>\n</$list>\n</div>\n</$vars>\n</$vars>\n</$wikify>\n\\end\n\n\\define twolevel-toc-navigation(tag:\"Contents\", close:\"no\", class:\"\", stateTiddler:\"twolevelState\")\n<$set name=stateTiddler value=<<__stateTiddler__>> >\n<$list filter=\"[<currentTiddler>!is[system]]\">\n <div class=\"kk-twolevel-toc-hideForPrint\">\n <$macrocall $name=twolevel-toc-hierarchical-navigation \n tag=\"\"\"$tag$\"\"\" close=<<__close__>> class=<<__class__>> />\n </div>\n</$list>\n</$set>\n\\end"},"$:/plugins/kookma/toc/readme":{"created":"20200220093235979","modified":"20200227232831684","tags":"","type":"text/vnd.tiddlywiki","text":"TOC plugin contains several macros, stylesheets and templates to create table of contents and navigator buttons. In contrast to Tiddlywiki core macros, the TOC plugin has many extra features including\n\n* non recursive two level toc\n* hierarchical navigation\n* exclude feature to exclude a branch or specific entries\n* track and highlight the TOC entry opened from table of contents or by navigation buttons\n\nLike core toc macro, TOC plugin supports also the recursive multi level table of contents, but here, it also support hierarchical navigation."},"$:/plugins/kookma/toc/styles/hierarchical-navigation":{"created":"20200214171655760","modified":"20200311070950926","tags":"$:/tags/Stylesheet","type":"text/css","text":".kk-toc-navigation{\n font-weight: 600;\n}\n\n@media print {\n .kk-toc-hideForPrint{display:none;}\n}\n "},"$:/plugins/kookma/toc/styles/main":{"created":"20200129072515692","modified":"20200311072141280","tags":"$:/tags/Stylesheet","type":"text/css","text":"/* these styles are used to customize the TOC tree and ui */\n/* toc tree lists */\n.kk-toc ol {\n list-style-type: none;\n padding-left:0;\n}\n.kk-toc ol ol{\n list-style-type: none;\n padding-left:2em;\n}\n\n/* bold first level entry and normal weight for other levels */\n.kk-toc li .tc-tiddlylink{font-weight: bold;}\n.kk-toc ol ol .tc-tiddlylink{font-weight:normal;}\n\n\n.kk-toc-item { text-align:left; white-space:nowrap; } /* prevent wrapping long entries*/\n.kk-toc-item img { height:1em; width:1em; }\n.kk-toc-item svg { height:1em; width:1em;}\n\n/* More tools button fade-in */\n.kk-toc-item .kk-toc-tools { opacity:0.0; }\n.kk-toc-item:hover .kk-toc-tools { opacity:0.5; }\n.kk-toc-item:hover .kk-toc-tools:hover { opacity:1.0; }\n\n/* bookmark button fade-in*/\n.kk-toc-item .kk-bookmark { opacity:0.0; }\n.kk-toc-item:hover .kk-bookmark { opacity:0.5; }\n.kk-toc-item:hover .kk-bookmark:hover { opacity:1.0; }\n.kk-toc-item .kk-bookmark.show { opacity:1.0 !important; }\n\n/* drag and drop elements */\n.kk-toc-placeholder{ position:relative; border:0 !important; border-bottom:1px dotted blue !important; }\n.kk-toc-dragtip {\n position:absolute; z-index:1; right:0.5em; top:0.5em; padding:0.25em 0.5em;\n border:1px solid lightgray; box-shadow: 0.3em 0.3em 0.5em rgba(0,0,0,0.3);\n background:white; text-align:center; font-size:80%; line-height:100%;\n}\n\n\n/* set color of links when toc is used in a sidebar tab*/\n.tc-sidebar-lists .kk-toc-item .tc-tiddlylink{color:#999999}\n.tc-sidebar-lists .kk-toc-item svg { height:1em; width:1em; fill: #acacac;}\n\n/* item when are visited NOT in sidebar*/\n/*.kk-toc li .tc-tiddlylink{color:black;} selected or clicked item */\n.kk-toc-opened-item{ \n\tpadding:0;\n\tpadding-left:5px; \n\tborder-radius: unset;\n\tborder-left-width:2px; \n\tborder-left-style:solid;}\n\n/* ui buttons on sidebar */\n.kk-toc button {outline:none;}\n.kk-toc-btn {outline:none;}\n.tc-sidebar-lists .kk-toc-btn svg { fill: #acacac;}\n.tc-sidebar-lists .kk-toc-btn { color: #acacac;}\n\n\n\n\n/* manager buttons */\n.kk-toc-tools-manager { opacity:0.5; }\n.kk-toc-tools-manager:hover { opacity:1.0; }"},"$:/plugins/kookma/toc/templates/bookmark":{"created":"20191202151012761","creator":"EricShulman","modified":"20200227232832187","modifier":"EricShulman","type":"text/vnd.tiddlywiki","text":"\\define bkm-is-bookmark() $(tidBookmarkConfig)$##$(currentTiddler)$\n\\define bkm-emptystar() ☆\n\\define bkm-filledstar() ★\n\\define bkm-tip-addbkm() add '$(tiptext)$' to Bookmarks\n\\define bkm-tip-rembkm() remove '$(tiptext)$' from Bookmarks\n\n<!-- ADD/REMOVE ITEM FROM BOOKMARKS -->\n<$set name=\"tiptext\" filter=\"[<currentTiddler>has[caption]]\" value={{!!caption}} emptyValue={{!!title}}>\n<$reveal state=<<bkm-is-bookmark>> type=\"match\" text=\"\">\n <$button class=\"tc-btn-invisible\" tooltip=<<bkm-tip-addbkm>>>\n <$action-setfield $tiddler=<<tidBookmarkConfig>> $index=<<currentTiddler>> $value=<<now>>/>\n <span class=\"kk-bookmark\"><<bkm-emptystar>></span>\n </$button>\n</$reveal>\n<$reveal state=<<bkm-is-bookmark>> type=\"nomatch\" text=\"\">\n <$button class=\"tc-btn-invisible kk-toc-btn\" tooltip=<<bkm-tip-rembkm>>>\n <$action-setfield $tiddler=<<tidBookmarkConfig>> $index=<<currentTiddler>>/> <!-- DELETEINDEX -->\n <span class=\"kk-bookmark.show\"><<bkm-filledstar>></span>\n </$button></$reveal>\n</$set>"},"$:/plugins/kookma/toc/templates/more-actions":{"created":"20200221121537095","modified":"20200227232832183","type":"text/vnd.tiddlywiki","text":"\\whitespace trim\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/More/Caption}}/>\n</span>\n</$list>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"$:/core/ui/Buttons/new-here $:/core/ui/Buttons/new-journal-here $:/core/ui/Buttons/clone $:/core/ui/Buttons/open-window\" variable=\"listItem\">\n\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$set>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"},"$:/plugins/kookma/toc/templates/show-single-item":{"created":"20200225213226563","modified":"20200313200933258","type":"text/vnd.tiddlywiki","text":"\\define toc-show-menu()\n<!-- SHOW AUTHOR TOOLS AND BOOKMARK STAR -->\n<span class=\"kk-toc-tools\"> {{||$:/plugins/kookma/toc/templates/more-actions}} </span>\n{{||$:/plugins/kookma/toc/templates/bookmark}}\n\\end\n\n\\define show-single-item()\n<$set name=\"openItemClass\" filter=\"[<tidSelectedItem>get[text]match<item>]\" value=\"tc-btn-invisible tc-tiddlylink kk-toc-opened-item\" emptyValue=\"tc-btn-invisible tc-tiddlylink\">\n<!--show the toggle branch button if the item is a branch -->\n<$list filter=\"[<is-branch>match[yes]]\" variable=ignore><<toggle-branch>></$list>\n<$button class=<<openItemClass>> style=\"outline:none;\" to=<<item>> dragTiddler=<<item>>>\n <$tiddler tiddler=<<item>>><<toc_caption>></$tiddler>\n<$action-setfield $tiddler=<<tidSelectedItem>> text=<<item>> /> \n</$button>\n</$set>\n\\end \n\n<$reveal default=<<toc-show-mode>> type=\"match\" text=\"toc-show-item-authormode\" >\n<div class=\"kk-toc-item\" title=\"drag to rearrange items\">\n <<show-single-item>>\n <span style=\"float:right;margin-left:0.5em;\"> <<toc-show-menu>> </span>\n <div style=\"clear:both;\"></div>\n</div>\n</$reveal>\n<$reveal default=<<toc-show-mode>> type=\"nomatch\" text=\"toc-show-item-authormode\" >\n<div class=\"kk-toc-item\" title={{!!title}}>\n <<show-single-item>>\n<!--1. comment to deactivate bookmarks in reader mode-->\n <span style=\"float:right;margin-left:0.5em;\">\n {{||$:/plugins/kookma/toc/templates/bookmark}}\n </span>\n <div style=\"clear:both;\"></div>\n<!--1. end -->\n</div>\n</$reveal>\n\n"}}}
/* these styles are used to customize the TOC tree and ui */
/* toc tree lists */
.kk-toc ol {
list-style-type: none;
padding-left:0;
}
.kk-toc ol ol{
list-style-type: none;
padding-left:1em;
}
/* bold first level entry and normal weight for other levels */
.kk-toc li .tc-tiddlylink{font-weight: bold;}
.kk-toc ol ol .tc-tiddlylink{font-weight:normal;}
.kk-toc-item { text-align:left; white-space:nowrap; } /* prevent wrapping long entries*/
.kk-toc-item img { height:1em; width:1em; }
.kk-toc-item svg { height:1em; width:1em;}
/* More tools button fade-in */
.kk-toc-item .kk-toc-tools { opacity:0.0; }
.kk-toc-item:hover .kk-toc-tools { opacity:0.5; }
.kk-toc-item:hover .kk-toc-tools:hover { opacity:1.0; }
/* bookmark button fade-in*/
.kk-toc-item .kk-bookmark { opacity:0.0; }
.kk-toc-item:hover .kk-bookmark { opacity:0.5; }
.kk-toc-item:hover .kk-bookmark:hover { opacity:1.0; }
.kk-toc-item .kk-bookmark.show { opacity:1.0 !important; }
/* drag and drop elements */
.kk-toc-placeholder{ position:relative; border:0 !important; border-bottom:1px dotted blue !important; }
.kk-toc-dragtip {
position:absolute; z-index:1; right:0.5em; top:0.5em; padding:0.25em 0.5em;
border:1px solid lightgray; box-shadow: 0.3em 0.3em 0.5em rgba(0,0,0,0.3);
background:white; text-align:center; font-size:80%; line-height:100%;
}
/* set color of links when toc is used in a sidebar tab*/
.tc-sidebar-lists .kk-toc-item .tc-tiddlylink{color:#999999}
.tc-sidebar-lists .kk-toc-item svg { height:1em; width:1em; fill: #acacac;}
/* item when are visited NOT in sidebar*/
/*.kk-toc li .tc-tiddlylink{color:black;} selected or clicked item */
.kk-toc-opened-item{
padding:0;
padding-left:5px;
border-radius: unset;
border-left-width:2px;
border-left-style:solid;}
/* ui buttons on sidebar */
.kk-toc button {outline:none;}
.kk-toc-btn {outline:none;}
.tc-sidebar-lists .kk-toc-btn svg { fill: #acacac;}
.tc-sidebar-lists .kk-toc-btn { color: #acacac;}
/* manager buttons */
.kk-toc-tools-manager { opacity:0.5; }
.kk-toc-tools-manager:hover { opacity:1.0; }
{"tiddlers":{"$:/plugins/kookma/todolist/history":{"created":"20200331053532911","modified":"20200405054217219","tags":"","type":"text/vnd.tiddlywiki","text":"Full change log https://kookma.github.io/TW-???/#ChangeLog\n\n* ''1.2.1'' -- 2020.04.05 -- minor issue in drag and drop fixed\n* ''1.2.0'' -- 2020.04.03 -- new features, item reording using drag and drop\n* ''1.1.0'' -- 2020.03.31 -- bugs fixed, moved to new Thirdflow development platform\n* ''1.0.0'' -- 2019.07.22 -- first stable release\n"},"$:/plugins/kookma/todolist/images/archive.svg":{"created":"20190716095419117","modified":"20200331065952093","tags":"","type":"text/vnd.tiddlywiki","text":"<svg class=\"tc-image-file-archive tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 384 512\"><path d=\"M128.3 160v32h32v-32zm64-96h-32v32h32zm-64 32v32h32V96zm64 32h-32v32h32zm177.6-30.1L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h79.7v16h32V48H208v104c0 13.3 10.7 24 24 24h104zM194.2 265.7c-1.1-5.6-6-9.7-11.8-9.7h-22.1v-32h-32v32l-19.7 97.1C102 385.6 126.8 416 160 416c33.1 0 57.9-30.2 51.5-62.6zm-33.9 124.4c-17.9 0-32.4-12.1-32.4-27s14.5-27 32.4-27 32.4 12.1 32.4 27-14.5 27-32.4 27zm32-198.1h-32v32h32z\"/></svg>"},"$:/plugins/kookma/todolist/images/bug.svg":{"created":"20190714051837328","modified":"20200331065952099","type":"text/vnd.tiddlywiki","text":"<svg class=\"tc-image-bug tc-image-button\" width=\"1em\" height=\"1em\" viewBox=\"0 0 512 512\"><path d=\"M511.988 288.9c-.478 17.43-15.217 31.1-32.653 31.1H424v16c0 21.864-4.882 42.584-13.6 61.145l60.228 60.228c12.496 12.497 12.496 32.758 0 45.255-12.498 12.497-32.759 12.496-45.256 0l-54.736-54.736C345.886 467.965 314.351 480 280 480V236c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v244c-34.351 0-65.886-12.035-90.636-32.108l-54.736 54.736c-12.498 12.497-32.759 12.496-45.256 0-12.496-12.497-12.496-32.758 0-45.255l60.228-60.228C92.882 378.584 88 357.864 88 336v-16H32.666C15.23 320 .491 306.33.013 288.9-.484 270.816 14.028 256 32 256h56v-58.745l-46.628-46.628c-12.496-12.497-12.496-32.758 0-45.255 12.498-12.497 32.758-12.497 45.256 0L141.255 160h229.489l54.627-54.627c12.498-12.497 32.758-12.497 45.256 0 12.496 12.497 12.496 32.758 0 45.255L424 197.255V256h56c17.972 0 32.484 14.816 31.988 32.9zM257 0c-61.856 0-112 50.144-112 112h224C369 50.144 318.856 0 257 0z\"/></svg>"},"$:/plugins/kookma/todolist/images/bullhorn":{"caption":"bullhorn (Solid)","created":"20190721150354198","modified":"20200331065952107","type":"text/vnd.tiddlywiki","text":"<svg class=\"tc-image-bullhorn tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 576 512\"><path d=\"M576 240c0-23.63-12.95-44.04-32-55.12V32.01C544 23.26 537.02 0 512 0c-7.12 0-14.19 2.38-19.98 7.02l-85.03 68.03C364.28 109.19 310.66 128 256 128H64c-35.35 0-64 28.65-64 64v96c0 35.35 28.65 64 64 64h33.7c-1.39 10.48-2.18 21.14-2.18 32 0 39.77 9.26 77.35 25.56 110.94 5.19 10.69 16.52 17.06 28.4 17.06h74.28c26.05 0 41.69-29.84 25.9-50.56-16.4-21.52-26.15-48.36-26.15-77.44 0-11.11 1.62-21.79 4.41-32H256c54.66 0 108.28 18.81 150.98 52.95l85.03 68.03a32.023 32.023 0 0 0 19.98 7.02c24.92 0 32-22.78 32-32V295.13C563.05 284.04 576 263.63 576 240zm-96 141.42l-33.05-26.44C392.95 311.78 325.12 288 256 288v-96c69.12 0 136.95-23.78 190.95-66.98L480 98.58v282.84z\"/></svg>"},"$:/plugins/kookma/todolist/images/lightbulb":{"caption":"lightbulb (Regular)","created":"20190721150413950","modified":"20200331065952116","tags":"$:/tags/Image [[Font Awesome 5]] Regular","type":"text/vnd.tiddlywiki","text":"<svg class=\"tc-image-lightbulb tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 352 512\"><path d=\"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"/></svg>"},"$:/plugins/kookma/todolist/images/list-alt.svg":{"created":"20190716095433587","modified":"20200331065952123","tags":"","type":"text/vnd.tiddlywiki","text":"<svg class=\"tc-image-list-alt tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 512 512\"><path d=\"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v340a6 6 0 0 1-6 6zm-42-92v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm-252 12c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36z\"/></svg>"},"$:/plugins/kookma/todolist/images/share-alt":{"caption":"share-alt (Solid)","created":"20190721150321438","modified":"20200331065952131","type":"text/vnd.tiddlywiki","text":"<svg class=\"tc-image-share-alt tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 448 512\"><path d=\"M352 320c-22.608 0-43.387 7.819-59.79 20.895l-102.486-64.054a96.551 96.551 0 0 0 0-41.683l102.486-64.054C308.613 184.181 329.392 192 352 192c53.019 0 96-42.981 96-96S405.019 0 352 0s-96 42.981-96 96c0 7.158.79 14.13 2.276 20.841L155.79 180.895C139.387 167.819 118.608 160 96 160c-53.019 0-96 42.981-96 96s42.981 96 96 96c22.608 0 43.387-7.819 59.79-20.895l102.486 64.054A96.301 96.301 0 0 0 256 416c0 53.019 42.981 96 96 96s96-42.981 96-96-42.981-96-96-96z\"/></svg>"},"$:/plugins/kookma/todolist/images/times.svg":{"created":"20190716033811299","modified":"20200331065952137","tags":"","type":"text/vnd.tiddlywiki","text":"<svg class=\"tc-image-times tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 352 512\"><path d=\"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\"/></svg>"},"$:/plugins/kookma/todolist/images/wrench.svg":{"created":"20190714052925874","modified":"20200331065952142","tags":"","type":"text/vnd.tiddlywiki","text":"<svg class=\"tc-image-wrench tc-image-button\" width=\"1em\" height=\"1em\" viewBox=\"0 0 512 512\"><path d=\"M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"/></svg>"},"$:/plugins/kookma/todolist/license":{"created":"20200331053532912","modified":"20200331055909558","tags":"","type":"text/vnd.tiddlywiki","text":"Distributed under an MIT license.\n\nCopyright (c) 2019-2020 [[Mohammad Rahmani|https://github.com/kookma]]\n\n<<<\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n<<<"},"$:/plugins/kookma/todolist/macros/add-remove-list-item":{"created":"20190718081952856","modified":"20200402154453857","tags":"$:/tags/Todolist/Macro","type":"text/vnd.tiddlywiki","text":"\\define todolist-remove-item-from-list(targetTiddler, item)\n<$action-listops $tiddler=<<__targetTiddler__>> $field=\"list\" $subfilter=\"+[remove[$item$]]\"/>\n\\end\n\n\\define todolist-add-item-to-list(targetTiddler, item)\n<$action-listops $tiddler=<<__targetTiddler__>> $field=\"list\" $subfilter=\"[[$item$]]+[putfirst[]]\"/>\n\\end\n"},"$:/plugins/kookma/todolist/macros/add-task":{"created":"20190715170540482","modified":"20200402122702989","tags":"$:/tags/Todolist/Macro","type":"text/vnd.tiddlywiki","text":"\\define todolist-input-task()\n<$keyboard key=\"escape\" actions=<<todolist-cancel-action>> >\n<$keyboard key=\"enter\" actions=<<todolist-add-task-action>> >\n<$edit-text \n tiddler=<<stateTiddler>> \n index=\"itemtext\" \n tag=\"input\"\n class=\"kk-todolist-input-textbox\"\n placeholder=\"add new item\"\n default=\"\" minHeight=\"1em\" focus=\"yes\"\n />\n</$keyboard> \n</$keyboard> \n\\end\n \n\\define todolist-add-task()\n<$button class=\"tc-btn-invisible\" tooltip=\"Add new item\">\n\t{{$:/core/images/new-button}}\n\t<<todolist-add-task-action>>\n</$button>\n\\end\n\n\\define todolist-add-task-action()\n <$list filter=\"[<stateTiddler>getindex[itemtext]!is[blank]]\" variable=ignor>\n\t<$set name=item value=<<now \"[UTC]YYYY0MM0DD0hh0mm0ssXXX\">> >\n\t<$action-setfield \n\t $tiddler=<<taskTiddler>>\n\t $index=<<item>>\n\t $value={{{ [<stateTiddler>getindex[itemtext]] }}}\n\t/>\n\t<$action-setfield $tiddler=<<statusTiddler>> $index=<<item>> $value=\"undone\"\t/>\n\t<$action-setfield $tiddler=<<priorityTiddler>> $index=<<item>> $value=\"none\"\t/>\n <$macrocall $name=\"todolist-add-item-to-list\" targetTiddler=<<taskTiddler>> item=<<item>> />\n\t</$set>\n\t<$action-setfield $tiddler=<<stateTiddler>> $index=\"itemtext\" $value=\"\"/>\n\t</$list>\n\\end\n\n\\define todolist-cancel-action()\n <$action-setfield $tiddler=<<stateTiddler>> $index=\"itemtext\" $value=\"\"/>\n\\end"},"$:/plugins/kookma/todolist/macros/archive-operations":{"created":"20190719141644069","modified":"20200402120458856","tags":"$:/tags/Todolist/Macro","type":"text/vnd.tiddlywiki","text":"\\define todolist-list-archived-items(nameSpace:\"\")\n<$vars\n archiveTiddler=\"\"\"$nameSpace$/archive\"\"\"\n priorityTiddler=\"\"\"$nameSpace$/priority\"\"\"\n>\n<$list filter=\"[<archiveTiddler>indexes[]!sort[]]\" variable=\"item\">\n<div class=\"kk-todolist-row\">\n <div class=\"kk-todolist-delete\"><<todolist-delete-item>></div>\n\t<div class=\"kk-todolist-priority\"><<todolist-show-priority-level>></div>\n <div class=\"kk-todolist-desc\">\n\t<span class=\"kk-todolist-date\">\n\t<$view tiddler=<<item>> field=\"title\" format=\"date\" template=\"mmm 0DD, YYYY 0hh:0mm\"/></span>\n\t<$transclude tiddler=<<archiveTiddler>> index=<<item>>/>\n\t</div>\n</div>\n</$list>\n</$vars>\n\\end\n\n\\define todolist-show-priority-level()\n<$button class=\"tc-btn-invisible\" tooltip=\"Prority of archived items cannot be changed\">\n<$macrocall $name=\"disp-priority-badge\" color={{{[<priorityTiddler>getindex<item>]}}} />\n</$button>\n\\end\n\n\\define todolist-delete-item()\n<$button class=\"tc-btn-invisible\">\n{{$:/plugins/kookma/todolist/images/times.svg}}\n<$action-setfield $tiddler=<<archiveTiddler>> $index=<<item>> />\n<$action-setfield $tiddler=<<priorityTiddler>> $index=<<item>> />\n</$button>\n\\end\n\n\\define todolist-empty-archived-tiddler(nameSpace)\n<$vars\n archiveTiddler=\"\"\"$nameSpace$/archive\"\"\"\n priorityTiddler=\"\"\"$nameSpace$/priority\"\"\"\n>\n<$button class=\"tc-btn-invisible tc-tiddlylink\" tooltip=\"Empty archive\"> {{$:/core/images/delete-button}} Delete archive\n<$list filter=\"[<archiveTiddler>indexes[]!sort[]]\" variable=\"item\">\n <$action-setfield $tiddler=<<archiveTiddler>> $index=<<item>> />\n <$action-setfield $tiddler=<<priorityTiddler>> $index=<<item>> />\n</$list>\n</$button>\n</$vars>\n\\end\t "},"$:/plugins/kookma/todolist/macros/bulk-operation":{"created":"20190716083959795","modified":"20200403122124607","tags":"$:/tags/Todolist/Macro","type":"text/vnd.tiddlywiki","text":"\\define todolist-all-tasks-unfinished()\n<span style=\"font-size:smaller\">\n<$list filter=\"[<taskTiddler>indexes[]limit[1]]\" emptyMessage=\"You're all done\" variable=ignore>\n<$count filter=\"[<taskTiddler>indexes[]]\"/> ITEMS\n</$list>\n</span>\n\\end\n\n\\define todolist-mark-all-button()\n<$reveal type=\"nomatch\" stateTitle=<<stateTiddler>> stateIndex=\"markall\" text=\"yes\">\n<$button class=\"tc-btn-invisible\" tooltip=\"Mark all items as done\" setTitle=<<stateTiddler>> setIndex=\"markall\" setTo=\"yes\">\n{{$:/core/images/save-button}}\n<<tdl-done-all>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<stateTiddler>> stateIndex=\"markall\" text=\"yes\">\n<$button class=\"tc-btn-invisible\" tooltip=\"Mark all items as undone\" setTitle=<<stateTiddler>> setIndex=\"markall\" setTo=\"no\">\n{{$:/core/images/refresh-button}}\n<<tdl-undone-all>>\n</$button>\n</$reveal>\n\\end\n\n\\define tdl-done-all()\n<$list filter=\"[<taskTiddler>indexes[]]\" variable=\"item\">\n<$action-setfield \n$tiddler=<<doneTiddler>>\n$index=<<item>>\n$value={{{ [<taskTiddler>getindex<item>] }}}\n/>\n<$action-setfield \n$tiddler=<<statusTiddler>>\n$index=<<item>>\n$value=\"done\"\n/>\n<$macrocall $name=\"todolist-remove-item-from-list\" targetTiddler=<<taskTiddler>> item=<<item>> />\n<$action-setfield $tiddler=<<taskTiddler>> $index=<<item>> />\n</$list>\n\\end\n\n\\define tdl-undone-all()\n<$list filter=\"[<doneTiddler>indexes[]]\" variable=\"item\">\n<$action-setfield \n$tiddler=<<taskTiddler>>\n$index=<<item>>\n$value={{{ [<doneTiddler>getindex<item>] }}}\n/>\n<$action-setfield \n$tiddler=<<statusTiddler>>\n$index=<<item>>\n$value=\"undone\"\n/>\n<$macrocall $name=\"todolist-add-item-to-list\" targetTiddler=<<taskTiddler>> item=<<item>> />\n<$action-setfield $tiddler=<<doneTiddler>> $index=<<item>> />\n</$list>\n\\end\n\n\n\\define todolist-archive-completed-items()\n<$button class=\"tc-btn-invisible\" tooltip=\"Archive done items\">\n{{$:/plugins/kookma/todolist/images/archive.svg}}\n<$list filter=\"[<doneTiddler>indexes[]]\" variable=\"item\">\n<$action-setfield \n$tiddler=<<archiveTiddler>>\n$index=<<item>>\n$value={{{ [<doneTiddler>getindex<item>] }}}\n/>\n<$action-setfield $tiddler=<<statusTiddler>> $index=<<item>> />\n<$action-setfield $tiddler=<<doneTiddler>> $index=<<item>> />\n<$action-setfield $tiddler=<<stateTiddler>> $index=\"markall\" $value=\"no\"/>\n</$list>\n</$button>\n\\end\n\n\\define todolist-display-archived-items()\n<$button class=\"tc-btn-invisible\" tooltip=\"Display archived items\"> {{$:/plugins/kookma/todolist/images/list-alt.svg}}\n\n<$action-setfield \n$tiddler=\"$:/plugins/kookma/todolist/template/archive-list\"\ntitle=<<displayArchivedTiddler>> /> \n<$action-setfield $tiddler=<<displayArchivedTiddler>>\n$field=\"td-namespace\" $value=<<nameSpace>> />\n\n<$action-navigate $to=<<displayArchivedTiddler>> $scroll=\"yes\"/>\n</$button>\n\\end\t"},"$:/plugins/kookma/todolist/macros/category":{"created":"20190714040123984","modified":"20200331184650454","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define high(text) \n<span style=\"padding-left:3px;color:#cd5360;\">$text$</span>\n\\end\n\n\\define normal(text) \n<span style=\"color:#286da8;\">$text$</span>\n\\end\n\n\\define low(text) \n<span style=\"color:#b37d4e;\">$text$</span>\n\\end\n\n\\define fixme(text)\n<span class=\"kk-todolist-category-c1\">{{$:/plugins/kookma/todolist/images/wrench.svg}} $text$</span>\n\\end\n\n\\define bug(text)\n<span class=\"kk-todolist-category-c1\">{{$:/plugins/kookma/todolist/images/bug.svg}} $text$</span>\n\\end\n\n\\define horn(text)\n<span class=\"kk-todolist-category-c2\">{{$:/plugins/kookma/todolist/images/bullhorn}} $text$</span>\n\\end\n\n\\define tip(text)\n<span class=\"kk-todolist-category-c2\">{{$:/plugins/kookma/todolist/images/lightbulb}} $text$</span>\n\\end\n\n\\define share(text)\n<span class=\"kk-todolist-category-c2\">{{$:/plugins/kookma/todolist/images/share-alt}} $text$</span>\n\\end"},"$:/plugins/kookma/todolist/macros/confirm-delete":{"created":"20190721041511697","modified":"20200331172725431","tags":"$:/tags/Todolist/Macro","type":"text/vnd.tiddlywiki","text":"\\define todolist-confirm-delete(\nbtnLabel:\"Delete these tiddlers\", \nconfirmMessage:\"Are you sure you wish to delete\", \nstateTiddler:\"\", \ncountFilter:\"\", \nactionMacro:\"\")\n\n<$button class=\"tc-btn-invisible tc-tiddlylink\" tooltip=\"Empty archive\" popup=<<qualify \"\"\"$stateTiddler$\"\"\">> > {{$:/core/images/delete-button}} $btnLabel$\n</$button>\n\n<$reveal state=<<qualify \"\"\"$stateTiddler$\"\"\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<div class=\"tc-dropdown-item-plain\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter=<<__countFilter__>> />\"\"\">\n$confirmMessage$ <<resultCount>> tiddler(s)?\n</$set>\n</div>\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn-invisible tc-tiddlylink\" tooltip=\"Empty archive\"\nactions=<<__actionMacro__>> > \n{{$:/core/images/delete-button}} Delete all?\n</$button>\n</div>\n</div>\n</div>\n</$reveal>\n\\end"},"$:/plugins/kookma/todolist/macros/delete-task":{"created":"20190715170610146","modified":"20200402124703285","tags":"$:/tags/Todolist/Macro","type":"text/vnd.tiddlywiki","text":"\\define todolist-delete-task(dataTiddler)\n<$button class=\"tc-btn-invisible\">\n{{$:/plugins/kookma/todolist/images/times.svg}}\n<$action-setfield $tiddler=<<__dataTiddler__>> $index=<<item>> />\n<$action-setfield $tiddler=<<statusTiddler>> $index=<<item>> />\n<$action-setfield $tiddler=<<priorityTiddler>> $index=<<item>> />\n<!-- delete item from list field of task tiddler if it is an undone task! -->\n<$reveal type=\"match\" text=<<__dataTiddler__>> default=<<taskTiddler>> >\n<$macrocall $name=\"todolist-remove-item-from-list\" targetTiddler=<<taskTiddler>> item=<<item>> />\n</$reveal>\n</$button>\n\\end\n"},"$:/plugins/kookma/todolist/macros/done-task":{"created":"20190715170633034","modified":"20200403094412340","tags":"$:/tags/Todolist/Macro","type":"text/vnd.tiddlywiki","text":"\\define todolist-done-task()\n<$checkbox \n tiddler=<<statusTiddler>> \n index=<<item>> \n checked=\"done\" \n unchecked=\"undone\" \n default=\"undone\"\n actions=<<tdl-done-actions>>\n>\n</$checkbox>\n\\end\n\n\\define tdl-done-actions()\n <$action-setfield \n $tiddler=<<doneTiddler>>\n $index=<<item>>\n $value={{{ [<taskTiddler>getindex<item>] }}}\n />\n<$macrocall $name=\"todolist-remove-item-from-list\" targetTiddler=<<taskTiddler>> item=<<item>> />\n<$action-setfield $tiddler=<<taskTiddler>> $index=<<item>> />\n\\end"},"$:/plugins/kookma/todolist/macros/draggable-list":{"created":"20190718070116654","modified":"20200405054450296","tags":"$:/tags/Todolist/Macro","type":"text/vnd.tiddlywiki","text":"\\define draggable-list(targetTiddler)\n\\whitespace trim\n<$vars targetTiddler=<<__targetTiddler__>> >\n<span class=\"kk-todolist-draggable-list\">\n<$list filter=\"[list<targetTiddler>]\" variable=\"item\">\n<$droppable actions=<<droppable-actions>>>\n <div class=\"tc-droppable-placeholder kk-todolist-placeholder\"></div> \n <$draggable tiddler=<<item>> >\n <$transclude tiddler=\"$:/plugins/kookma/todolist/template/undone-task\" field=\"text\"/>\n </$draggable>\n</$droppable>\n</$list>\n<<disp-empty-placeholder>>\n</span>\n</$vars>\n\\end\n\n\\define droppable-actions()\n<!-- the $list checks to prvents drag items not listed in this Todolist -->\n<$list filter=\"[<targetTiddler>contains<actionTiddler>]\" variable=ignore>\n<$action-listops $tiddler=<<targetTiddler>> $field=\"list\" $subfilter=\"+[insertbefore:item<actionTiddler>]\"/>\n</$list>\n\\end\n\n\\define xxdisp-empty-placeholder()\n<$tiddler tiddler=\"\"><!-- an empty place holder-->\n<$droppable actions=<<droppable-actions>> tag=\"div\">\n<div style=\"height:0.5em;\"/>\n<div class=\"tc-droppable-placeholder kk-todolist-placeholder\"> </div>\n</$droppable>\n</$tiddler>\n\\end\n\n\n\\define disp-empty-placeholder()\n<$tiddler tiddler=\"\">\n<$droppable actions=<<droppable-actions>> tag=\"div\" enable=<<tv-enable-drag-and-drop>>>\n<div class=\"tc-droppable-placeholder kk-todolist-placeholder\">\n \n</div>\n<div style=\"height:0.5em;\"/>\n</$droppable>\n</$tiddler>\n\\end"},"$:/plugins/kookma/todolist/macros/explore-internalTids":{"created":"20190719143452217","modified":"20200401214333824","type":"text/vnd.tiddlywiki","text":"\\define todolist-fullbaseName() $(td-basePath)$$(baseName)$\n\n\\define todolist-explore-data-tiddlers()\n\n><b>Number of internal tiddlers found: <$count filter=\"[all[tiddlers+shadows]prefix<td-basePath>]\" /></b><br>\n><$macrocall $name=\"todolist-delete-all-tids\" filter=<<dataTids>> />\n\n<h2> Todo lists</h2>\n<$list filter=\"[all[shadows+tiddlers]removeprefix<td-basePath>splitbefore[/]removesuffix[/]sort[]]\" variable=\"baseName\">\n\n<$set name=bsFilter value=\"[prefix<todolist-fullbaseName>sort[]]\">\n<h3><<todolist-delete-all-tids-baseName>> <<baseName>></h3>\n<blockquote>\n<$list filter=<<bsFilter>> variable=\"internalTid\" emptyMessage=\"//No internal data tiddlers is found!//\">\n<div class=\"kk-todolist-row\">\n<div class=\"kk-todolist-delete\"><$macrocall $name=\"todolist-delete-single-iternalTid\" /></div>\n<div class=\"kk-todolist-desc\"><$link to=<<internalTid>>><$view tiddler=<<internalTid>> field=\"title\"/></$link></div>\n</div>\n</$list>\n</blockquote>\n</$set>\n\n</$list>\n\n\\end\n\n\n\\define todolist-delete-single-iternalTid()\n<$button class=\"tc-btn-invisible tc-tiddlylink\">\n\t{{$:/plugins/kookma/todolist/images/times.svg}}\n\t<$action-deletetiddler $tiddler=<<internalTid>> />\n</$button>\n\\end\n\n\\define todolist-delete-all-tids-baseName()\n<$button class=\"tc-btn-invisible tc-tiddlylink\" tooltip=\"Delete all data tiddlers in this Todo list?\"> {{$:/core/images/delete-button}}\n <$action-deletetiddler $filter=<<bsFilter>> />\n</$button>\n\\end\n\n\\define todolist-delete-all-tids()\n<!-- uses confirm delete macro to notify user when delete all internal tiddlers -->\n<$macrocall $name=\"todolist-confirm-delete\" \nbtnLabel=\"Delete all interal tiddlers?\"\nstateTiddler=\"temp\"\ncountFilter=\"[all[tiddlers+shadows]prefix<td-basePath>]\"\nactionMacro=<<action-empty-archive>>\n/>\n\\end\n\\define action-empty-archive()\n<$action-deletetiddler $filter=\"[all[tiddlers+shadows]prefix<td-basePath>]\" />\n\\end\t \n"},"$:/plugins/kookma/todolist/macros/nondraggable-list":{"created":"20200403105715811","modified":"20200403105734826","tags":"$:/tags/Todolist/Macro","type":"text/vnd.tiddlywiki","text":"\\define disp-list-in-edit-mode()\n<$list filter=\"[list<taskTiddler>]\" variable=\"item\">\n <$transclude tiddler=\"$:/plugins/kookma/todolist/template/undone-task\" field=\"text\"/>\n</$list>\n\\end"},"$:/plugins/kookma/todolist/macros/options":{"created":"20190716075847899","modified":"20200403120956166","tags":"$:/tags/Todolist/Macro","type":"text/vnd.tiddlywiki","text":"\\define todolist-options-button()\n<$reveal type=\"nomatch\" stateTitle=<<stateTiddler>> stateIndex=\"option\" text=\"yes\">\n<$button class=\"tc-btn-invisible\" tooltip=\"Show options\" setTitle=<<stateTiddler>> setIndex=\"option\" setTo=\"yes\">\n{{$:/core/images/options-button}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<stateTiddler>> stateIndex=\"option\" text=\"yes\">\n<$button class=\"tc-btn-invisible\" tooltip=\"Hide options\" setTitle=<<stateTiddler>> setIndex=\"option\" setTo=\"no\">\n{{$:/core/images/options-button}}\n</$button>\n</$reveal>\n\\end\n\n\\define todolist-options-content()\n<$reveal type=\"match\" stateTitle=<<stateTiddler>> stateIndex=\"option\" text=\"yes\">\n<<todolist-mark-all-button>> <<todolist-archive-completed-items>> <<todolist-display-archived-items>> <<todolist-toggle-timestamp>> <<todolist-all-tasks-unfinished>>\n</$reveal>\n\\end\n\n"},"$:/plugins/kookma/todolist/macros/priority":{"created":"20190718170817837","modified":"20200402105643019","tags":"$:/tags/Todolist/Macro","type":"text/vnd.tiddlywiki","text":"\\define categoryColors()\n<$list filter=\"[[$:/plugins/kookma/todolist/settings/colors]indexes[]sortby{$:/plugins/kookma/todolist/settings/colors!!list}]\" variable=color>\n<<color>>\n</$list>\n\\end\n\n\\define todolist-set-priority()\n<$wikify name=colors text=<<categoryColors>> >\n<$macrocall $name=\"todolist-cycle-color\" arraySet=<<colors>> stateTiddler=<<priorityTiddler>> stateIndex=<<item>> />\n</$wikify>\n\\end\n\n\\define disp-priority-badge(color)\n<svg width=\"12\" height=\"12\" >\n<circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"grey\" fill=\"$color$\" />\n</svg>\n\\end\n\n\n\\define todolist-cycle-color(arraySet:\"\", stateTiddler:\"\", stateIndex:\"txt\")\n<$vars array=<<__arraySet__>> currentColor={{{[<__stateTiddler__>getindex<__stateIndex__>]}}} >\n<$button class=\"tc-btn-invisible\" tooltip=\"Set priority level\">\n <$macrocall $name=\"disp-priority-badge\" color=<<currentColor>> />\n <$set\n filter='[enlist<array>after<currentColor>]'\n name=NextItem\n emptyValue={{{[enlist<array>first[]]}}}\n >\n <$action-setfield\n $tiddler=<<__stateTiddler__>>\n $index=<<__stateIndex__>>\n $value=<<NextItem>> />\n </$set>\n </$button>\n</$vars>\t\n\\end"},"$:/plugins/kookma/todolist/macros/show-task":{"created":"20190715170652239","modified":"20200403054629783","tags":"$:/tags/Todolist/Macro","type":"text/vnd.tiddlywiki","text":"\\define todolist-show-task()\n<$keyboard key=\"enter\" actions=<<tdl-kbd-action>> >\n<$list filter=\"[<stateTiddler>getindex[editview]match[edit]]\" \n emptyMessage=\"\"\"<$macrocall $name=\"view-task\" dataTiddler=<<taskTiddler>> />\"\"\" >\n<$edit-text \n tiddler=<<taskTiddler>>\n index=<<item>>\n tag=input\n class=\"kk-todolist-input-textbox\"\n />\n</$list>\n</$keyboard>\n\\end\n\n\\define tdl-kbd-action()\n<$action-setfield $tiddler=<<stateTiddler>> $index=\"editview\" $value=\"view\" />\n\\end\n\n\\define view-task(dataTiddler)\n<$transclude tiddler=<<__dataTiddler__>> index=<<item>>/>\n<$reveal type=\"match\" stateTitle=<<stateTiddler>> stateIndex=\"timestamp\" text=\"show\">\n<span class=\"kk-todolist-date\"> <$view tiddler=<<item>> field=\"title\" format=\"date\" template=\"mmm 0DD, YYYY 0hh:0mm\"/></span>\n</$reveal>\n\\end"},"$:/plugins/kookma/todolist/macros/toggle-edit-button":{"created":"20190715171733677","modified":"20200331172725488","tags":"$:/tags/Todolist/Macro","type":"text/vnd.tiddlywiki","text":"\\define todolist-toggle-edit-button()\n<$reveal type=\"nomatch\" stateTitle=<<stateTiddler>> stateIndex=\"editview\" text=\"edit\">\n<$button class=\"tc-btn-invisible\" setTitle=<<stateTiddler>> setIndex=\"editview\" setTo=\"edit\" tooltip=\"Edit items\">\n{{$:/core/images/edit-button}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<stateTiddler>> stateIndex=\"editview\" text=\"edit\">\n<$button class=\"tc-btn-invisible\" setTitle=<<stateTiddler>> setIndex=\"editview\" setTo=\"view\" tooltip=\"Save items\">\n{{$:/core/images/done-button}}\n</$button>\n</$reveal>\n\\end"},"$:/plugins/kookma/todolist/macros/toggle-timestamp":{"created":"20190722034557852","modified":"20200331172725496","tags":"$:/tags/Todolist/Macro","type":"text/vnd.tiddlywiki","text":"\\define todolist-toggle-timestamp()\n<$reveal type=\"nomatch\" stateTitle=<<stateTiddler>> stateIndex=\"timestamp\" text=\"show\">\n<$button class=\"tc-btn-invisible\" setTitle=<<stateTiddler>> setIndex=\"timestamp\" setTo=\"show\" tooltip=\"Show timestamp\">\n{{$:/core/images/timestamp-on}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<stateTiddler>> stateIndex=\"timestamp\" text=\"show\">\n<$button class=\"tc-btn-invisible\" setTitle=<<stateTiddler>> setIndex=\"timestamp\" setTo=\"hide\" tooltip=\"Hide timestamp\">\n{{$:/core/images/timestamp-off}}\n</$button>\n</$reveal>\n\\end"},"$:/plugins/kookma/todolist/macros/ui":{"created":"20190715170739310","modified":"20200405061046677","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define td-basePath() $:/todolist/data/\n\n\\define todolist-ui(caption:\"A plain todolist\", width:\"100%\" base:\"base\")\n\\import [all[tiddlers+shadows]tag[$:/tags/Todolist/Macro]!has[draft.of]]\n\\whitespace trim\n\n<$vars \n nameSpace= \"$(td-basePath)$$base$\"\n stateTiddler= \"$(td-basePath)$$base$/state\"\n taskTiddler= \"$(td-basePath)$$base$/tasks\"\n doneTiddler= \"$(td-basePath)$$base$/done\"\n statusTiddler= \"$(td-basePath)$$base$/status\"\n priorityTiddler=\"$(td-basePath)$$base$/priority\"\n archiveTiddler= \"$(td-basePath)$$base$/archive\"\t\n displayArchivedTiddler=\"Todolist - Archived Items - $base$\"\n>\t\n<div class=\"kk-todolist-ui\" style=\"max-width:$width$;\">\n\n$caption$\n\n<div class=\"kk-todolist-header-ui\">\n<div class=\"kk-todolist-header-textbox\"><<todolist-input-task>></div>\n<div><<todolist-add-task>></div>\n<div><<todolist-toggle-edit-button>></div>\n<div><<todolist-options-button>></div>\n</div>\n<<todolist-options-content>>\n<!--\n<$list filter=\"[<taskTiddler>indexes[]!sort[]]\" variable=\"item\">\n<$transclude tiddler=\"$:/plugins/kookma/todolist/template/undone-task\" field=\"text\" />\n</$list>\n-->\n\n<!-- display undone items -->\n<$list filter=\"[<stateTiddler>getindex[editview]match[edit]]\" variable=ignore \n emptyMessage=\"\"\"<$macrocall $name=\"draggable-list\" targetTiddler=<<taskTiddler>> />\"\"\">\n\t <<disp-list-in-edit-mode>>\n</$list>\n\n<div style=\"height:0.2em\"/>\n\n<!-- display done items -->\n<$list filter=\"[<doneTiddler>indexes[]!nsort[]]\" variable=\"item\">\n<$transclude tiddler=\"$:/plugins/kookma/todolist/template/done-task\" field=\"text\" />\n</$list>\n</div>\n</$vars>\n\\end\n"},"$:/plugins/kookma/todolist/macros/undone-task":{"created":"20190715190405259","modified":"20200403094425309","tags":"$:/tags/Todolist/Macro","type":"text/vnd.tiddlywiki","text":"\\define todolist-undone-task()\n<$checkbox \ntiddler=<<statusTiddler>> \nindex=<<item>> \nchecked=\"done\" \nunchecked=\"undone\" \ndefault=\"undone\"\nuncheckactions=<<tdl-undone-actions>>\n>\n</$checkbox>\n\\end\n\n\\define tdl-undone-actions()\n<$action-setfield \n$tiddler=<<taskTiddler>>\n$index=<<item>>\n$value={{{ [<doneTiddler>getindex<item>] }}}\n/><\n<$macrocall $name=\"todolist-add-item-to-list\" targetTiddler=<<taskTiddler>> item=<<item>> />\n<$action-setfield $tiddler=<<doneTiddler>> $index=<<item>> />\n\\end\n"},"$:/plugins/kookma/todolist/readme":{"created":"20200331053532913","modified":"20200403133906816","tags":"","type":"text/vnd.tiddlywiki","text":"; Todolist\nTodolist is a small pure wikitext plugin, contain all of the tasks that you need to complete on a given day. Todolist gives you the confidence that everything’s organized and accounted for, so you can make progress on the things that are important to you.\n\nYou can also make to-dos for major tasks like a project, a work assignment or an overall goal. Therefore, the overall purpose of creating a to-do is to remember tasks and prioritize them.\n\n\n;Code and demo\nFor learning plugin features, syntax, tutorial and examples see the plugin demo and code pages\n\n* Demo: https://kookma.github.io/TW-Todolist/\n* Code: https://github.com/kookma/TW-Todolist\n"},"$:/plugins/kookma/todolist/settings/colors":{"text":"limegreen:50\nyellow: 70\norange: 80\nred: 100\npink: 90\nturquoise:40\ndodgerblue:30\nnone:10","type":"application/x-tiddler-dictionary","created":"20200402092725933","list":"limegreen yellow orange red pink turquoise dodgerblue none","modified":"20200403064915453","tags":""},"$:/plugins/kookma/todolist/settings/internals":{"caption":"Todolist","created":"20190716171918410","modified":"20200401221146952","tags":"$:/tags/ControlPanel/SettingsTab","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/todolist/macros/explore-internalTids\n\n!! Explore Todolist internal tiddlers\n<<<\nTodolist plugin uses some internal data tiddlers to create and manage todo list. Each todolist uses several data tiddlers. It is recommended after deleting a todolist, delete all data tiddlers which are not in use.\n<<<\n\n<<todolist-explore-data-tiddlers>>\n\n\n"},"$:/plugins/kookma/todolist/styles/drag-drop":{"text":"/* drag and drop elements */\n.kk-todolist-placeholder { \n\tposition:relative; \n\theight:0; \t\n\tborder:0 !important; \n\tborder-bottom:1px dotted grey !important; \n}\n\n.kk-todolist-draggable-list .tc-draggable { cursor: default !important; }\n","created":"20200402192425421","modified":"20200403112252654","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/todolist/styles/main.css":{"text":"/* Todolist main ui */\n.kk-todolist-ui{\n\tmin-width:320px; /* controls the minimum width of whole ui */\n}\n\n.kk-todolist-ui svg{\n\tfill:#aaaaaa;\n}\n\n\n.kk-todolist-ui button:hover svg {\n\tfill: #888888; \n}\n\n\n/* Todolist header ui */\n\n.kk-todolist-header-ui{\n\tdisplay: flex;\n\twidth: 100%;\n}\n.kk-todolist-header-ui > div{\n\tmargin: 2px;\n\tflex-grow:0;\t\n}\n.kk-todolist-header-ui .kk-todolist-header-textbox{\n\tflex-grow:1;\t\n}\n\n/* Todolist items ui */\n.kk-todolist-row{\n\tdisplay: flex;\t\n\twidth: 100%; /* for larg screen width> 960px*/\n\tflex-wrap: wrap;\n}\n\n.kk-todolist-row .kk-todolist-done,\n.kk-todolist-row .kk-todolist-priority,\n.kk-todolist-row .kk-todolist-delete {\n\tflex-grow:0; width:15px;\n}\n\n.kk-todolist-row .kk-todolist-desc{\n\tflex-grow:1; \n\twidth: calc(100% - 50px); \n\tpadding-left: 10px;\n\tpadding-right: 10px;\n}\n.kk-todolist-row .kk-todolist-delete {\n\topacity: 0.3;\n}\n\n.kk-todolist-row .kk-todolist-priority{\n\tmargin-right:5px;\n}\n.kk-todolist-row:hover {\n\tbackground-color: #f6f6f6;\n}\n.kk-todolist-row:hover .kk-todolist-delete {\n\topacity: 1;\n}","created":"20190716040116074","modified":"20200401084920801","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/todolist/styles/other.css":{"text":"/* completed item */\n\n.kk-todolist-item-done {\n\ttext-decoration: red line-through;\n\tfont-style: italic;\n}\n\n/* inputbox for add-task */\n.kk-todolist-input-textbox {\n\twidth:100%;\n\tpadding-left: 5px;\n\tborder: none;\n\tborder-bottom: 1px dotted grey;\n}\n\n.kk-todolist-input-textbox:focus {\n\toutline: none;\n\tborder-bottom: 1px solid #5778d8;\n\tbackground: transparent;\n}\n\n/* item timestamp */\n.kk-todolist-date {\n\tfont-size:0.8em;\n\tcolor:#c0c0c0;\n}\n\n/* Item categories */\n.kk-todolist-category-c1,\n.kk-todolist-category-c2 {\n\tpadding-right:3px;\n}\n\n.kk-todolist-category-c1 svg, \n.kk-todolist-category-c2 svg {\n\topacity:0.70;\n\tvertical-align: middle;\n\twidth: 1em;\n\theight: 1em;\n}\n\n.kk-todolist-category-c1 svg{\n\tfill:#8B0000;\n}\n\n.kk-todolist-category-c2 svg{\n\tfill:#006400;\n}","created":"20190715171940902","modified":"20200401084923039","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/todolist/template/archive-list":{"created":"20190716084402662","modified":"20200401214548455","tags":"","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/todolist/macros/archive-operations\n\\import $:/plugins/kookma/todolist/macros/priority\n\n!! Archive of completed (done) items\n\n<$macrocall $name=\"todolist-empty-archived-tiddler\" nameSpace={{!!td-namespace}} />\n\n> <$macrocall $name=\"todolist-list-archived-items\" nameSpace={{!!td-namespace}} />\n\n"},"$:/plugins/kookma/todolist/template/done-task":{"created":"20200402102928801","modified":"20200402103156109","tags":"","type":"text/vnd.tiddlywiki","text":"<div class=\"kk-todolist-row\">\n <div class=\"kk-todolist-done\"><<todolist-undone-task>></div>\n <div class=\"kk-todolist-desc\"><span class=\"kk-todolist-item-done\">\n\t<$macrocall $name=\"view-task\" dataTiddler=<<doneTiddler>> /></span></div>\n\t<div class=\"kk-todolist-priority\"><<todolist-set-priority>></div>\n <div class=\"kk-todolist-delete\"><$macrocall $name=\"todolist-delete-task\" dataTiddler=<<doneTiddler>>/></div>\n</div>\n"},"$:/plugins/kookma/todolist/template/undone-task":{"created":"20200402103007259","modified":"20200402103542808","tags":"","type":"text/vnd.tiddlywiki","text":"<div class=\"kk-todolist-row\">\n\t<div class=\"kk-todolist-done\"><<todolist-done-task>></div>\n\t<div class=\"kk-todolist-desc\"><<todolist-show-task>></div>\n\t<div class=\"kk-todolist-priority\"><<todolist-set-priority>></div>\n\t<div class=\"kk-todolist-delete\"><$macrocall $name=\"todolist-delete-task\" dataTiddler=<<taskTiddler>>/></div>\n</div>"}}}
{"tiddlers":{"$:/plugins/kookma/trashbin/history":{"created":"20200325121105806","modified":"20200410061128665","tags":"","type":"text/vnd.tiddlywiki","text":"Full change log https://kookma.github.io/TW-Trashbin/#ChangeLog\n\n* ''1.2.2'' -- 2020.04.10 -- bug fix in remove draft tiddlers to trashbin\n* ''1.2.1'' -- 2020.03.30 -- bug fix and doc improvement and UI fade correction\n* ''1.1.2'' -- 2020.03.28 -- stable release with new features and bug fixes\n* ''0.1.0'' -- 2019.02.12 -- mature public release\n"},"$:/plugins/kookma/trashbin/images/recycle":{"created":"20190723043410550","modified":"20200325115955820","tags":"","type":"text/vnd.tiddlywiki","text":"<svg class=\"tc-image-recycle tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 512 512\"><path d=\"M184.561 261.903c3.232 13.997-12.123 24.635-24.068 17.168l-40.736-25.455-50.867 81.402C55.606 356.273 70.96 384 96.012 384H148c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12H96.115c-75.334 0-121.302-83.048-81.408-146.88l50.822-81.388-40.725-25.448c-12.081-7.547-8.966-25.961 4.879-29.158l110.237-25.45c8.611-1.988 17.201 3.381 19.189 11.99l25.452 110.237zm98.561-182.915l41.289 66.076-40.74 25.457c-12.051 7.528-9 25.953 4.879 29.158l110.237 25.45c8.672 1.999 17.215-3.438 19.189-11.99l25.45-110.237c3.197-13.844-11.99-24.719-24.068-17.168l-40.687 25.424-41.263-66.082c-37.521-60.033-125.209-60.171-162.816 0l-17.963 28.766c-3.51 5.62-1.8 13.021 3.82 16.533l33.919 21.195c5.62 3.512 13.024 1.803 16.536-3.817l17.961-28.743c12.712-20.341 41.973-19.676 54.257-.022zM497.288 301.12l-27.515-44.065c-3.511-5.623-10.916-7.334-16.538-3.821l-33.861 21.159c-5.62 3.512-7.33 10.915-3.818 16.536l27.564 44.112c13.257 21.211-2.057 48.96-27.136 48.96H320V336.02c0-14.213-17.242-21.383-27.313-11.313l-80 79.981c-6.249 6.248-6.249 16.379 0 22.627l80 79.989C302.689 517.308 320 510.3 320 495.989V448h95.88c75.274 0 121.335-82.997 81.408-146.88z\"/></svg>"},"$:/plugins/kookma/trashbin/images/sort-alpha-down":{"caption":"sort-alpha-down","created":"20200327153959154","modified":"20200327185043770","tags":"$:/tags/Image","type":"text/vnd.tiddlywiki","text":"<svg class=\"tc-image-sort-alpha-down tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 448 512\"><path d=\"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm240-64H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z\"/></svg>"},"$:/plugins/kookma/trashbin/images/sort-alpha-up":{"caption":"sort-alpha-up (Solid)","created":"20200327155639132","modified":"20200327162316327","tags":"$:/tags/Image","type":"text/vnd.tiddlywiki","text":"<svg class=\"tc-image-sort-alpha-up-alt tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 448 512\"><path d=\"M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm272 64h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z\"/></svg>"},"$:/plugins/kookma/trashbin/images/sort-numeric-down":{"caption":"sort-numeric-down","created":"20200327153929866","modified":"20200327185052283","tags":"$:/tags/Image","type":"text/vnd.tiddlywiki","text":"<svg class=\"tc-image-sort-numeric-down tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 448 512\"><path d=\"M304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zm26.15 162.91a79 79 0 0 0-55 54.17c-14.25 51.05 21.21 97.77 68.85 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zm-176-4h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z\"/></svg>"},"$:/plugins/kookma/trashbin/images/sort-numeric-up":{"caption":"sort-numeric-up (Solid)","created":"20200327155701392","modified":"20200327162214617","tags":"$:/tags/Image","type":"text/vnd.tiddlywiki","text":"<svg class=\"tc-image-sort-numeric-up-alt tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 448 512\"><path d=\"M107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31zM400 416h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z\"/></svg>"},"$:/plugins/kookma/trashbin/images/times.svg":{"created":"20190716033811299","modified":"20200325115955828","tags":"","type":"text/vnd.tiddlywiki","text":"<svg class=\"tc-image-times tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 352 512\"><path d=\"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\"/></svg>"},"$:/plugins/kookma/trashbin/images/trash-alt":{"caption":"trash-alt","created":"20190710102513532","modified":"20200327173632794","type":"text/vnd.tiddlywiki","text":"<svg class=\"tc-image-trash-alt tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 448 512\"><path d=\"M268 416h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12zM432 80h-82.41l-34-56.7A48 48 0 0 0 274.41 0H173.59a48 48 0 0 0-41.16 23.3L98.41 80H16A16 16 0 0 0 0 96v16a16 16 0 0 0 16 16h16v336a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128h16a16 16 0 0 0 16-16V96a16 16 0 0 0-16-16zM171.84 50.91A6 6 0 0 1 177 48h94a6 6 0 0 1 5.15 2.91L293.61 80H154.39zM368 464H80V128h288zm-212-48h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12z\"/></svg>"},"$:/plugins/kookma/trashbin/license":{"created":"20200325121133911","modified":"20200325121209299","tags":"","type":"text/vnd.tiddlywiki","text":"Distributed under an MIT license.\n\nCopyright (c) 2019-2020 [[Mohammad Rahmani|https://github.com/kookma]]\n\n<<<\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n<<<"},"$:/plugins/kookma/trashbin/macros/bulk-operation":{"created":"20190723115934925","modified":"20200327170128541","type":"text/vnd.tiddlywiki","text":"\\define delete-trashed-tiddlers()\n<$list filter=\"[tag[$:/tags/trashbin]search:title[$:/trashbin/]]\" variable=\"Item\">\n<$action-deletetiddler $tiddler=<<Item>> />\n</$list>\n\\end\n\n\\define trashbin-empty-bin()\n<$macrocall $name=\"trashbin-confirm-delete\"\nbtnLabel=\"Empty Trashbin\"\ncountFilter=\"[tag[$:/tags/trashbin]search:title[$:/trashbin/]]\"\nactionMacro=<<delete-trashed-tiddlers>>\nstateTiddler=\"$:/state/trashbin/emptyTrashBin\"\n/>\n\\end\n\n\\define restore-all()\n<$button tooltip=\"Restore all\" class=\"tc-btn-invisible tc-tiddlylink\"> {{$:/plugins/kookma/trashbin/images/recycle}}\n<$list filter=\"[tag[$:/tags/trashbin]search:title[$:/trashbin/]sort[]]\" variable=\"Item\">\n<$macrocall $name=\"restore\" tiddler=<<Item>> />\n</$list>\n</$button>\n\\end"},"$:/plugins/kookma/trashbin/macros/confirm-empty":{"created":"20190723114948285","modified":"20200327170306636","type":"text/vnd.tiddlywiki","text":"\\define trashbin-confirm-delete(\nbtnLabel:\"Delete these tiddlers\", \nconfirmMessage:\"Are you sure you wish to delete\", \nstateTiddler:\"\", \ncountFilter:\"\", \nactionMacro:\"\")\n\n<$button class=\"tc-btn-invisible tc-tiddlylink\" tooltip=\"Empty Trashbin\" popup=<<qualify \"\"\"$stateTiddler$\"\"\">> > {{$:/core/images/delete-button}}\n</$button>\n\n<$reveal state=<<qualify \"\"\"$stateTiddler$\"\"\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<div class=\"tc-dropdown-item-plain\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter=<<__countFilter__>> />\"\"\">\n$confirmMessage$ <<resultCount>> tiddler(s)?\n</$set>\n</div>\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn-invisible tc-tiddlylink\" tooltip=\"Empty archive\"\nactions=<<__actionMacro__>> > \n{{$:/core/images/delete-button}} Delete all?\n</$button>\n</div>\n</div>\n</div>\n</$reveal>\n\\end"},"$:/plugins/kookma/trashbin/macros/move-to-trashbin":{"created":"20190710071039480","modified":"20200410061108463","type":"text/vnd.tiddlywiki","text":"\\define trashTidName() <<unusedtitle baseName:\"$(trashTiddler)$\">>\n\n\\define move-to-trashbin(tiddler)\n<$list filter=\"[<__tiddler__>has[title]]\" variable=ignore> <!-- ignore missing tiddlers -->\n<$vars trashTiddler={{{ [<__tiddler__>addprefix[$:/trashbin/]] }}}>\n<$wikify name=\"trashTid\" text=<<trashTidName>> >\n<$list filter=\"[<__tiddler__>fields[]]\" variable=\"fieldName\">\n<$action-setfield \n $tiddler=<<trashTid>>\n $index=<<fieldName>>\n $value={{{[<__tiddler__>get<fieldName>] }}}\n/>\n</$list>\n<$action-setfield $tiddler=<<trashTid>> tags=\"$:/tags/trashbin\"/>\n</$wikify>\n<$action-sendmessage $message=\"tm-close-tiddler\" $param=<<__tiddler__>> />\n<$list filter=\"[<__tiddler__>has[draft.of]]\" variable=ignore emptyMessage=\"\"\"<$action-deletetiddler $tiddler=<<__tiddler__>> />\"\"\">\n<$action-deletetiddler $tiddler={{{[<__tiddler__>get[draft.of]]}}} /><!--delete main tiddler-->\n<$action-deletetiddler $tiddler=<<__tiddler__>> /> <!--delete draft tiddler-->\n</$list>\n</$vars>\n</$list>\n\\end\n"},"$:/plugins/kookma/trashbin/macros/preview-option":{"created":"20200327203154169","modified":"20200327205705076","tags":"","type":"text/vnd.tiddlywiki","text":"\\define viewTemplateTid() $:/plugins/kookma/trashbin/viewtemplate/trash-item\n\\define styleTid() $:/plugins/kookma/trashbin/styles/show-trashed\n\n\\define preview-option()\n<$reveal type=\"nomatch\" stateTitle=<<viewTemplateTid>> stateField=\"tags\" text=\"$:/tags/ViewTemplate\" default=\"\">\n<$button setTitle=<<viewTemplateTid>> setField=\"tags\" setTo=\"$:/tags/ViewTemplate\" class=\"tc-btn-invisible\" tooltip=\"Show trash item preview\"> \n{{$:/core/images/preview-open}}\n<$action-setfield $tiddler=<<styleTid>> tags=\"$:/tags/Stylesheet\"/> \n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<viewTemplateTid>> stateField=\"tags\" text=\"$:/tags/ViewTemplate\" default=\"\">\n<$button setTitle=<<viewTemplateTid>> setField=\"tags\" setTo=\"\" class=\"tc-btn-invisible\" tooltip=\"Hide trash item preview\"> \n{{$:/core/images/preview-closed}}\n<$action-setfield $tiddler=<<styleTid>> tags=\"\"/> \n</$button>\n</$reveal>\n\\end\n\n<<preview-option>>"},"$:/plugins/kookma/trashbin/macros/restore":{"created":"20190710105439064","modified":"20200327170445307","type":"text/vnd.tiddlywiki","text":"\\define open-restoredTid-in-story-river()\n<$action-listops $tiddler=\"$:/StoryList\" $field='list' $subfilter=\"\"\"[[$(restoredTid)$]]+[putfirst[]]\"\"\"/>\n\\end\n\n\\define restoreTid(tiddler)\n<$list filter=\"[<__tiddler__>indexes[]] -title\" variable=\"fieldName\">\n <$action-setfield \n $tiddler=<<restoredTid>> \n\t $field=<<fieldName>> \n\t $value={{{ [<__tiddler__>getindex<fieldName>] }}} \n />\n</$list>\n<$action-sendmessage $message=\"tm-close-tiddler\" $param=<<__tiddler__>> />\n<$action-deletetiddler $tiddler=<<__tiddler__>> />\n<$macrocall $name=\"open-restoredTid-in-story-river\" />\n\\end\n\n\n\\define restore(tiddler)\n<$vars \n restoredTid={{{ [<__tiddler__>getindex[title]] }}} \n isExisted= {{{ [<__tiddler__>getindex[title]has[title]] }}} \n >\n<$reveal type=\"nomatch\" text=<<isExisted>> default=<<restoredTid>> >\n<$macrocall $name=\"restoreTid\" tiddler=<<__tiddler__>> />\n</$reveal>\n\n<$reveal type=\"match\" text=<<isExisted>> default=<<restoredTid>> >\n <$action-sendmessage $message=\"tm-notify\" \n $param=\"$:/plugins/kookma/trashbin/restore-notification\" \n\t restoredTiddler=<<restoredTid>>\n\t/>\n</$reveal>\n\n</$vars>\n\\end"},"$:/plugins/kookma/trashbin/macros/sort":{"created":"20200327141043944","modified":"20200327201042137","type":"text/vnd.tiddlywiki","text":"\\define tempSortTid() $:/keepstate/trashbin/sort\n\n\\define show-icons()\n<$vars state-alpha-down=\"sortan[title]\" state-alpha-up=\"!sortan[title]\"\n state-numeric-down=\"sort[modified]\" state-numeric-up=\"!sort[modified]\" >\n<$list filter=\"[<tempSortTid>get[text]match<state-alpha-down>]\">\n{{$:/plugins/kookma/trashbin/images/sort-alpha-down}}\n</$list>\n<$list filter=\"[<tempSortTid>get[text]match<state-alpha-up>]\">\n{{$:/plugins/kookma/trashbin/images/sort-alpha-up}}\n</$list>\n<$list filter=\"[<tempSortTid>get[text]match<state-numeric-down>]\">\n{{$:/plugins/kookma/trashbin/images/sort-numeric-down}}\n</$list>\n<$list filter=\"[<tempSortTid>get[text]match<state-numeric-up>]\">\n{{$:/plugins/kookma/trashbin/images/sort-numeric-up}}\n</$list>\n<$list filter=\"[<tempSortTid>!has[title]]\">\nClick to sort\n</$list>\n</$vars>\n\\end\n\n\n\\define trashbin-cycle(arraySet:\"\", stateTiddler:\"\", stateField:\"text\")\n<$vars array=<<__arraySet__>> currentItem={{{[<__stateTiddler__>get<__stateField__>]}}} \n tooltip={{{[<tempSortTid>get[text]]}}} >\n <$button tooltip=<<tooltip>> class=\"tc-btn-invisible\"> <<show-icons>>\n <$set\n filter='[enlist<array>after<currentItem>]'\n name=NextItem\n emptyValue={{{[enlist<array>first[]]}}}\n >\n <$action-setfield\n $tiddler=<<__stateTiddler__>>\n $field=<<__stateField__>>\n $value=<<NextItem>> />\n </$set>\n </$button>\n</$vars>\t\n\\end\n\n\\define sort-by()\n<$macrocall $name=\"trashbin-cycle\" \n arraySet=\"sortan[title] !sortan[title] sort[modified] !sort[modified]\" \n stateTiddler=<<tempSortTid>> />\n\\end"},"$:/plugins/kookma/trashbin/readme":{"created":"20200325121220142","modified":"20200325171839260","tags":"","type":"text/vnd.tiddlywiki","text":"; Trashbin\nThe concept behind Trashbin plugin is to have a simple mechanism to move deleted tiddlers to Trashbin and be able to restore them later if required.\n\n; Code and demo\nFor learning plugin features, mechanism, terminology, syntax, tutorial and examples see the plugin demo and code pages\n\n* Demo: https://kookma.github.io/TW-Trashbin/\n* Code: https://github.com/kookma/TW-Trashbin\n"},"$:/plugins/kookma/trashbin/restore-notification":{"created":"20190711130503628","modified":"20200325115955867","tags":"","type":"text/vnd.tiddlywiki","text":"{{$:/plugins/kookma/trashbin/images/recycle}} \n\n''Warning''<br>\nThe target tiddler <b><$text text=<<restoredTiddler>>/></b> already exists.<br>\nIt cannot be overwritten!"},"$:/plugins/kookma/trashbin/sidebar-tab":{"caption":"Trashbin","created":"20190613131234955","modified":"20200330082257793","tags":"$:/tags/SideBar","type":"text/vnd.tiddlywiki","text":"{{$:/plugins/kookma/trashbin/ui/sidebar}}"},"$:/plugins/kookma/trashbin/styles/main.css":{"text":"/* trashbin main ui */\n.kk-trashbin-ui{\n\tmin-width:320px; /* controls the minimum width of whole ui */\n}\n\n.kk-trahbin-ui svg{\n fill:#aaaaaa;\n}\n\n.kk-trahbin-ui .kk-trahbin-ui-controls svg{\n width:1.2em;\n height:1.2em;\t\n}\n\n\n/* trashbin items list ui */\n.kk-trashbin-row{\n\tdisplay: flex;\t\n\twidth: 95%;\n\tflex-wrap: wrap;\n}\n\n\n.kk-trashbin-row .kk-trashbin-delete,\n.kk-trashbin-row .kk-trashbin-restore {\n\tflex-grow:0; width:20px;\n\tmargin-left:5px;\n}\n\n.kk-trashbin-row .kk-trashbin-link{\n\tflex-grow:1; \n\twidth: calc(100% - 50px); \n\tpadding-right: 10px;\n}\n\n.kk-trashbin-row:hover { background-color: #f6f6f6; }\n\n/* UI button fade-in*/\n.kk-trahbin-ui button:hover svg { fill: #000000; }\n.kk-trahbin-ui .kk-trashbin-ui-btn { opacity:0.5; }\n.kk-trahbin-ui .kk-trashbin-ui-btn:hover { opacity:1.0; }","created":"20190716040116074","modified":"20200330103433380","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/trashbin/styles/show-trashed":{"created":"20200327100826751","modified":"20200330123344137","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":"[data-tags~=\"$:/tags/trashbin\"] .tc-tiddler-body,\n[data-tags~=\"$:/tags/trashbin\"] .tc-tags-wrapper\n{\n display:none;\n}\n"},"$:/plugins/kookma/trashbin/styles/toolbar-buttons":{"text":"html body.tc-body .tc-tiddler-controls .tc-image-trash-alt {stroke: white;fill:#660000;}\nhtml body.tc-body .tc-tiddler-controls .tc-image-recycle {stroke: white;fill:#138808;}","created":"20200329162056060","modified":"20200406191049638","type":"text/css"},"$:/plugins/kookma/trashbin/styles/trashed-item":{"text":"/* set style for trashed tiddlers */\n[data-tags ~=\"$:/tags/trashbin\"] { border: 1px solid crimson; }","created":"20200329161931981","modified":"20200329162224824","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/trashbin/templates/body":{"created":"20200329133632160","modified":"20200329155701084","tags":"","type":"text/vnd.tiddlywiki","text":"\\define show-plain() \n<div class=\"tc-tiddler-body\">\n<pre><$transclude index=\"text\" mode=\"block\"/></pre>\n</div>\n\\end\n\n\\define show() \n<div class=\"tc-tiddler-body\">\n<$transclude index=\"text\" mode=\"block\"/>\n</div>\n\\end\n\n\n<!-- json tiddlers including plugins -->\n<$list filter=\"[<currentTiddler>getindex[type]match[application/json]]\" variable=ignore>\n<$list filter=\"[<currentTiddler>getindex[plugin-type]]\" variable=ignore emptyMessage=<<show-plain>> >\n<div class=\"tc-binary-warning\">\nThis tiddler contains plugin!\n</div>\n</$list>\n</$list>\n<!-- text tiddlers including: css, plain, dictionary -->\n<$list filter=\"[<currentTiddler>getindex[type]match[application/x-tiddler-dictionary]]\n[<currentTiddler>getindex[type]match[text/plain]]\n[<currentTiddler>getindex[type]match[text/css]]\" variable=ignore>\n<<show-plain>>\n</$list>\n\n\n<!-- other tiddlers like image, vnd.tiddlywiki -->\n<$list filter=\"[<currentTiddler>getindex[type]]\" variable=type emptyMessage=<<show>> >\n<$list filter=\"[<type>match[text/vnd.tiddlywiki]]\" variable=ignore>\n<$transclude index=\"text\" mode=\"block\"/>\n</$list>\n<$list filter=\"[<type>search:title[image]]\" variable=ignore>\n<div class=\"tc-binary-warning\">\nThis tiddler contains image data!\n</div>\n</$list>\n</$list>"},"$:/plugins/kookma/trashbin/templates/subtitle":{"text":"<div class=\"tc-subtitle\">\n<$link to={{##modifier}}>\n<$view index=\"modifier\"/>\n</$link> <$view index=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>","created":"20200327082525694","modified":"20200327083014840","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/trashbin/templates/tags":{"created":"20200327084049139","modified":"20200327120921036","tags":"","type":"text/vnd.tiddlywiki","text":"<div class=\"tc-tags-wrapper\">\n<$vars tagsIndex={{{[<currentTiddler>getindex[tags]]}}}>\n<$list filter=\"[enlist<tagsIndex>]\" template=\"$:/core/ui/TagTemplate\" storyview=\"pop\"/>\n</$vars>\n</div>"},"$:/plugins/kookma/trashbin/templates/title":{"created":"20200327085342927","modified":"20200327195225059","tags":"","type":"text/vnd.tiddlywiki","text":"\\define title-styles()\nfill:$(foregroundColor)$;\n\\end\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<$set name=\"tv-wikilinks\" value={{$:/config/Tiddlers/TitleLinks}}>\n<$link>\n<$set name=\"foregroundColor\" value={{##color}}>\n<span class=\"tc-tiddler-title-icon\" style=<<title-styles>>>\n<$transclude tiddler={{##icon}}>\n<$transclude tiddler={{$:/config/DefaultTiddlerIcon}}/>\n</$transclude>\n</span>\n</$set>\n<$list filter=\"[{##title}removeprefix[$:/]]\">\n<h2 class=\"tc-title\" title={{$:/language/SystemTiddler/Tooltip}}>\n<span class=\"tc-system-title-prefix\">$:/</span><$text text=<<currentTiddler>>/>\n</h2>\n</$list>\n<$list filter=\"[{##title}!prefix[$:/]]\">\n<h2 class=\"tc-title\">\n<$view field=\"title\"/>\n</h2>\n</$list>\n</$link>\n</$set>\n</div></div>"},"$:/plugins/kookma/trashbin/ui/sidebar":{"caption":"Trashbin","created":"20200330082034854","modified":"20200330123325985","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/trashbin/macros/sort\n\\import $:/plugins/kookma/trashbin/macros/restore\n\\import $:/plugins/kookma/trashbin/macros/confirm-empty\n\\import $:/plugins/kookma/trashbin/macros/bulk-operation\n\\import $:/plugins/kookma/trashbin/macros/preview-option\n\n\\define show-link()\n<$link to=<<currentTiddler>> ><$text text={{{ [<currentTiddler>removeprefix[$:/trashbin/]] }}} /> </$link> <span style=\"float:right;padding-right:10px;font-size:smaller;\" title=\"Date Deleted\"><$view field=\"modified\" format=\"date\" template=\"0MM/0DD/YYYY 0hh:0mm AM\"/></span>\n\\end\n\n\\define recycle-button()\n{{||$:/plugins/kookma/trashbin/ui/toolbar-button}}\n\\end\n\n\\define delete-button()\n<$button class=\"tc-btn-invisible\" tooltip=\"Delete permanently\">\n{{$:/plugins/kookma/trashbin/images/times.svg}}\n<$list filter=\"[list[$:/StoryList]] +[field:title<currentTiddler>>]\" variable=ignore>\n<$action-sendmessage $message=\"tm-close-tiddler\" $param=<<<currentTiddler>> />\n</$list>\n<$action-deletetiddler $tiddler=<<currentTiddler>> />\n</$button>\n\\end\n\n\\define trashbin-siderbar-ui()\n<div class=\"kk-trahbin-ui\">\n\n<span class=\"kk-trahbin-ui-controls kk-trashbin-ui-btn\">\n<<trashbin-empty-bin>> <<restore-all>> <<sort-by>> <<preview-option>>\n\n</span> \n<span style=\"font-size:smaller\">\n<$list filter='[tag[$:/tags/trashbin]prefix[$:/trashbin/]limit[1]]' variable=null emptyMessage=\"Trash bin is empty\">\n<$count filter='[tag[$:/tags/trashbin]]'/> items in Trashbin\n</$list>\n</span>\n\n<!-- create the trash items list -->\n<$list filter=\"[tag[$:/tags/trashbin]prefix[$:/trashbin/]$(sortType)$]\">\n<div class=\"kk-trashbin-row\">\n\t<div class=\"kk-trashbin-link\"><<show-link>></div>\n\t<div class=\"kk-trashbin-recycle kk-trashbin-ui-btn\"><<recycle-button>></div>\n\t<div class=\"kk-trashbin-delete kk-trashbin-ui-btn\"><<delete-button>></div>\n</div>\n</$list>\n\n</div>\n\\end\n\n<$vars sortType={{{[<tempSortTid>get[text]] ~[[]] }}}>\n<<trashbin-siderbar-ui>>\n</$vars>"},"$:/plugins/kookma/trashbin/ui/toolbar-button":{"caption":"{{$:/plugins/kookma/trashbin/images/trash-alt}} {{$:/language/Buttons/Trashbin/Caption/Move}}","created":"20190623140751496","creator":"Mohammad","description":"<$list filter=\"[all[current]tag[$:/tags/trashbin]prefix[$:/trashbin/]]\" emptyMessage={{$:/language/Buttons/Trashbin/Hint/Move}}>{{$:/language/Buttons/Trashbin/Hint/Recycle}}</$list>","list-after":"$:/core/ui/Buttons/delete","modified":"20200328140420576","modifier":"Mohammad","tags":"$:/tags/ViewToolbar $:/tags/EditToolbar","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/trashbin/macros/move-to-trashbin\n\\import $:/plugins/kookma/trashbin/macros/restore\n\\whitespace trim\n\n<!-- move to trashbin -->\n<$list filter=\"[all[current]!tag[$:/tags/trashbin]!prefix[$:/trashbin/]]\">\n<$button \n aria-label={{$:/language/Buttons/Trashbin/Caption/Move}}\n tooltip={{$:/language/Buttons/Trashbin/Hint/Move}} class=<<tv-config-toolbar-class>> >\n <$macrocall $name=\"move-to-trashbin\" tiddler=<<currentTiddler>> />\t\n <$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n {{$:/plugins/kookma/trashbin/images/trash-alt}}\n </$list>\n <$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n <span class=\"tc-btn-text\">\n\t\t <$text text={{$:/language/Buttons/Trashbin/Caption/Move}}/>\n </span>\n </$list>\n</$button>\n</$list>\n\n<!-- recycle from trashbin -->\n<$list filter=\"[all[current]tag[$:/tags/trashbin]prefix[$:/trashbin/]]\">\n<$button\n aria-label={{$:/language/Buttons/Trashbin/Caption/Recycle}}\n tooltip={{$:/language/Buttons/Trashbin/Hint/Recycle}} class=<<tv-config-toolbar-class>> >\n <$macrocall $name=\"restore\" tiddler=<<currentTiddler>> />\n <$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n {{$:/plugins/kookma/trashbin/images/recycle}}\n </$list>\n <$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n <span class=\"tc-btn-text\"> \n <$text text={{$:/language/Buttons/Trashbin/Caption/Recycle}}/>\n </span>\n </$list>\n</$button>\n</$list>"},"$:/plugins/kookma/trashbin/viewtemplate/trash-item":{"created":"20200327081227209","modified":"20200330123344172","tags":"$:/tags/ViewTemplate","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[all[current]tag[$:/tags/trashbin]prefix[$:/trashbin/]]\">\n<div class=\"tc-tiddler-frame kk-trashbin-viewtrashitem\">\n{{||$:/plugins/kookma/trashbin/templates/title}}\n{{||$:/plugins/kookma/trashbin/templates/subtitle}}\n{{||$:/plugins/kookma/trashbin/templates/tags}}\n{{||$:/plugins/kookma/trashbin/templates/body}}\n</div>\n<div class=\"kk-trashbin-viewtrashitem\" style=\"margin-left:40px;\">\n<h2>Tiddler fields</h2>\n<$list filter=\"[<currentTiddler>indexes[]] -title -tags -text -created -modified\" variable=idx>\n<label style=\"display:inline-block;width:15ch;font-weight:bold;\"><<idx>>:</label> <$transclude index=<<idx>>/><br/>\n</$list>\n</div>\n\n<style>\n.kk-trashbin-viewtrashitem {\n margin-top:15px;\n }\n.kk-trashbin-viewtrashitem .tc-tags-wrapper {\n display:inline;\n}\n.kk-trashbin-viewtrashitem .tc-tiddler-body{\n display:block;\n}\n</style>"},"$:/language/Buttons/Trashbin/Caption/Move":{"created":"20200325181608623","modified":"20200327192039481","tags":"","type":"text/vnd.tiddlywiki","text":"trashbin"},"$:/language/Buttons/Trashbin/Caption/Recycle":{"created":"20200327192303891","modified":"20200327192322259","tags":"","type":"text/vnd.tiddlywiki","text":"recycle"},"$:/language/Buttons/Trashbin/Hint/Move":{"created":"20200325181718189","modified":"20200327192226676","tags":"","type":"text/vnd.tiddlywiki","text":"Move this tiddler to Trashbin"},"$:/language/Buttons/Trashbin/Hint/Recycle":{"created":"20200327192150450","modified":"20200327194553902","tags":"","type":"text/vnd.tiddlywiki","text":"Recycle this tiddler from Trashbin"}}}
{"tiddlers":{"$:/plugins/kookma/utility/author/author-tools":{"created":"20190912082519234","key":"((author-tools))","modified":"20200316130508400","tags":"$:/tags/KeyboardShortcut","type":"text/vnd.tiddlywiki","text":"<$action-sendmessage $message=\"tm-modal\" $param=\"$:/plugins/kookma/utility/author/modal\" />"},"$:/plugins/kookma/utility/author/exclude-items":{"caption":"Exclude items","created":"20200313124437263","modified":"20200322115519909","tags":"","type":"text/vnd.tiddlywiki","text":"\\define showItems(label, filter)\n<h2>$label$</h2>\n<$list filter=<<__filter__>> >\n<$checkbox tiddler=<<currentTiddler>> tag=\"excluded\"/> <$link to=<<currentTiddler>>><$text text=<<currentTiddler>>/></$link><br>\n</$list>\n\\end\n<!-- drag and drop -->\n<<showItems label:\"Disable drag and drop\" filter:\"[title[$:/config/DragAndDrop/Enable]]\">>\n<!-- side bar items -->\n<<showItems label:\"Sidebar tabs\" filter:\"[all[shadows+tiddlers]]+[tag[$:/tags/SideBar]]\">>\n<!-- viewtoolbar items -->\n<<showItems label:\"View toolbars\" filter:\"[all[shadows+tiddlers]prefix[$:/config/ViewToolbarButtons/Visibility]]\">>\n<!-- Page controls -->\n<<showItems label:\"Page controls\" filter:\"[all[shadows+tiddlers]prefix[$:/config/PageControlButtons/Visibility]]\">>\n<$list filter=\"\">"},"$:/plugins/kookma/utility/author/individual-items":{"caption":"Hide individual UI element","created":"20200313141533701","modified":"20200322130601872","tags":"","type":"text/vnd.tiddlywiki","text":"Select individual items to hide in reader mode.\n\n! Site options\n<$checkbox tiddler=\"$:/core/ui/SideBarSegments/site-title\" tag=\"$:/tags/SideBarSegment\"/> Show site title<br/>\n<$checkbox tiddler=\"$:/core/ui/SideBarSegments/site-subtitle\" tag=\"$:/tags/SideBarSegment\"/> Show site subtitle<br/>\n<$checkbox tiddler=\"$:/core/ui/SideBarSegments/page-controls\" tag=\"$:/tags/SideBarSegment\"/> Show page controls<br/>\n\n! Right sidebar elements\n<$checkbox tiddler=\"$:/core/ui/TopBar/menu\" tag=\"$:/tags/TopRightBar\"/> Show right sidebar toggle button<br/>\n<$checkbox tiddler=\"$:/core/ui/SideBarSegments/search\" tag=\"$:/tags/SideBarSegment\"/> Show search bar<br/>\n<$checkbox tiddler=\"$:/core/ui/SideBarSegments/tabs\" tag=\"$:/tags/SideBarSegment\"/> Show sidebar tabs<br/>\n<!-- reserved\n<$checkbox tiddler=\"$:/config/custom-segment\" tag=\"$:/tags/SideBarSegment\"/> Show custom menu -->\n\n! Sidebar tabs\n<$checkbox tiddler=\"$:/core/ui/SideBar/Open\" tag=\"$:/tags/SideBar\"/> Show Open tab<br/>\n<$checkbox tiddler=\"$:/core/ui/SideBar/Recent\" tag=\"$:/tags/SideBar\"/> Show Recent tab<br/>\n<$checkbox tiddler=\"$:/core/ui/SideBar/Tools\" tag=\"$:/tags/SideBar\"/> Show Tools tab<br/>\n<$checkbox tiddler=\"$:/core/ui/SideBar/More\" tag=\"$:/tags/SideBar\"/> Show More tab<br/>\n\n! Tiddler options\n<$checkbox tiddler=\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/edit\" field=text checked=show unchecked=hide default=show /> Show edit button in the tiddler toolbar<br/>\n<$checkbox tiddler=\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close\" field=text checked=show unchecked=hide default=show /> Show close button in the tiddler toolbar<br/>\n<$checkbox tiddler=\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions\" field=text checked=show unchecked=hide default=show /> Show more actions button in the tiddler toolbar\n\n! Other items\n<$checkbox tiddler=\"$:/config/DragAndDrop/Enable\" field=text checked=no unchecked=yes default=yes /> Disable page dropzone\n"},"$:/plugins/kookma/utility/author/modal":{"created":"20190912073245120","modified":"20200316124818329","tags":"","type":"text/vnd.tiddlywiki","text":"<<tabs tabsList:\"$:/plugins/kookma/utility/author/tools $:/plugins/kookma/utility/author/individual-items\" default:\"$:/plugins/kookma/utility/author/tools\">>"},"$:/plugins/kookma/utility/author/switch-author":{"created":"20200315203327216","key":"((switch-author))","modified":"20200316130423198","tags":"$:/tags/KeyboardShortcut","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/utility/author/tools\n\n<$reveal type=nomatch state=<<configTid>> text=\"\">\n<<unhide-elements>>\n</$reveal>\n<$reveal type=match state=<<configTid>> text=\"\" default=\"\">\n<<hide-elements>>\n</$reveal>"},"$:/plugins/kookma/utility/author/tools":{"caption":"Hide bulk of UI elements","created":"20200313111922410","modified":"20200322160845236","type":"text/vnd.tiddlywiki","text":"\\define configTid() $:/config/utility/author\n\\define add-remove-tag(msg:\"\", tag:\"\")\n<$fieldmangler><!--msg: tm-add-tag tm-remove-tag-->\n<$action-sendmessage $message=\"$msg$\" $param=\"$tag$\"/>\n</$fieldmangler>\n\\end\n\n\\define hide-elements()\n<!-- hide side bar items -->\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!tag[excluded]]\">\n<$action-setfield $tiddler=<<configTid>> $index=<<currentTiddler>> $value=\"$:/tags/SideBar\"/>\n<$macrocall $name=\"add-remove-tag\" msg=\"tm-remove-tag\" tag=\"$:/tags/SideBar\"/>\n</$list>\n<!-- hide view toolbars -->\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/config/ViewToolbarButtons/Visibility]!tag[excluded]]\">\n<$reveal type=match stateTitle=<<currentTiddler>> stateField=\"text\" text=\"show\">\n<$action-setfield $tiddler=<<configTid>> $index=<<currentTiddler>> $value=\"show\"/>\n<$action-setfield $tiddler=<<currentTiddler>> $field=\"text\" $value=\"hide\"/>\n</$reveal>\n</$list>\n<!-- hide page controls -->\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/config/PageControlButtons/Visibility]!tag[excluded]]\">\n<$reveal type=match stateTitle=<<currentTiddler>> stateField=\"text\" text=\"show\">\n<$action-setfield $tiddler=<<configTid>> $index=<<currentTiddler>> $value=\"show\"/>\n<$action-setfield $tiddler=<<currentTiddler>> $field=\"text\" $value=\"hide\"/>\n</$reveal>\n</$list>\n<!-- disable dropzone -->\n<$list filter=\"[[$:/config/DragAndDrop/Enable]!tag[excluded]]\" variable=ignore>\n<$action-setfield $tiddler=\"$:/config/DragAndDrop/Enable\" $field=\"text\" $value=\"no\"/>\n</$list>\n\\end\n\n\\define unhide-elements()\n<!-- Revert view toolbar and page controls -->\n<$list filter=\"[<configTid>indexes[]]\">\n<$reveal type=match stateTitle=<<configTid>> stateIndex=<<currentTiddler>> text=\"show\">\n<$action-setfield $tiddler=<<currentTiddler>> $field=\"text\" $value=\"show\"/>\n</$reveal>\n</$list>\n<!-- Revert sidebar tabs -->\n<$list filter=\"[<configTid>indexes[]]\">\n<$reveal type=match stateTitle=<<configTid>> stateIndex=<<currentTiddler>> text=\"$:/tags/SideBar\">\n<$macrocall $name=\"add-remove-tag\" msg=\"tm-add-tag\" tag=\"$:/tags/SideBar\"/>\n</$reveal>\n</$list>\n<!-- delete the configTid -->\n<$action-deletetiddler $tiddler=<<configTid>>/>\n<!-- enable dropzone -->\n<$list filter=\"[[$:/config/DragAndDrop/Enable]!tag[excluded]]\" variable=ignore>\n<$action-deletetiddler $tiddler=\"$:/config/DragAndDrop/Enable\"/>\n</$list>\n\\end\n\n<$reveal type=nomatch state=<<configTid>> text=\"\">\n<$button actions=<<unhide-elements>> tooltip=\"Unhide UI elements\">Author mode</$button>\n</$reveal>\n<$reveal type=match state=<<configTid>> text=\"\" default=\"\">\n<$button actions=<<hide-elements>> tooltip=\"Hide UI elements\">Reader mode</$button>\n</$reveal>\n<small><ul>\n<li>Author mode: all UI elements are visible</li>\n<li>Redaer mode: all UI elements are hidden except those excluded</li>\n</ul></small>\n<$reveal type=match state=<<configTid>> text=\"\" default=\"\">\n<details>\n<summary>Select items to be excluded</summary>\n<div style=\"padding-left:30px\">{{$:/plugins/kookma/utility/author/exclude-items}}\n</div>\n</details>\n</$reveal>"},"$:/plugins/kookma/utility/config/reveal-tags":{"created":"20200123085623608","modified":"20200123200112351","tags":"","type":"text/vnd.tiddlywiki","text":""},"$:/plugins/kookma/utility/history":{"created":"20190930044127683","modified":"20210409142806322","tags":"","type":"text/vnd.tiddlywiki","text":"* ''2.1.4'' -- 2021.04.09 -- new viewtemplate for show fields used\n* ''2.1.2'' -- 2020.04.03 -- page control button issue fixed\n* ''2.1.1'' -- 2020.03.25 -- page control button improved and minor issues in css fixed\n* ''2.1.0'' -- 2020.03.23 -- new transclusion output for fields macro and disable drag and drop globally\n* ''2.0.0'' -- 2020.03.16 -- new author-reader mode switch\n* ''1.8.0'' -- 2020.03.13 -- admin panel added\n* ''1.7.0'' -- 2020.02.23 -- show tiddler raw content including the macros on demand\n* ''1.0.0'' -- 2019.10.13 -- stable release\n* ''0.5.0'' -- 2019.10.10 -- first beta release"},"$:/plugins/kookma/utility/images/view-fields.svg":{"created":"20181010193706723","modified":"20200123200937680","tags":"","type":"text/vnd.tiddlywiki","text":"<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"tc-image-button tc-image-view-fields\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M7 11H1v2h6v-2zm2.17-3.24L7.05 5.64 5.64 7.05l2.12 2.12 1.41-1.41zM13 1h-2v6h2V1zm5.36 6.05l-1.41-1.41-2.12 2.12 1.41 1.41 2.12-2.12zM17 11v2h6v-2h-6zm-5-2c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zm2.83 7.24l2.12 2.12 1.41-1.41-2.12-2.12-1.41 1.41zm-9.19.71l1.41 1.41 2.12-2.12-1.41-1.41-2.12 2.12zM11 23h2v-6h-2v6z\"/></svg>"},"$:/plugins/kookma/utility/license":{"created":"20190930044127683","modified":"20200325141629992","tags":"","type":"text/vnd.tiddlywiki","text":"Distributed under an MIT license.\n\nCopyright (c) 2019-2020 [[Mohammad Rahmani|https://github.com/kookma]]\n\n<<<\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n<<<\n"},"$:/plugins/kookma/utility/macro/doc-svg":{"created":"20190722141637145","modified":"20200123200937669","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define doc-svg(tiddler:\"\", color:\"\")\n<span class=\"kk-doc\" style=\"fill:$color$;\"><$transclude tiddler=<<__tiddler__>> /></span>\n\\end"},"$:/plugins/kookma/utility/macro/find":{"created":"20181213121411187","modified":"20200325124037811","tags":"$:/tags/Macro","type":"application/x-tiddler","text":"\\define find(text, begin, end, output:\"simple\", mode:\"all\")\n<$vars \n fulltext=<<__text__>>\n start=<<__begin__>>\n stop=<<__end__>>\n output-macro=<<__output__>>\n>\n<$list variable=\"p1\" filter=\"[<fulltext>splitbefore<start>]\">\n<$list variable=\"p2\" filter=\"[<fulltext>removeprefix<p1>]\">\n<$list variable=\"p3\" filter=\"[<p2>splitbefore<stop>removesuffix<stop>]\">\n<$macrocall $name=<<output-macro>> p=<<p3>> />\n<$reveal type=\"match\" text=\"all\" default=<<__mode__>> >\n<$macrocall $name=\"find\"\n text={{{[<p2>removeprefix<p3>removeprefix<stop>]}}}\n begin=<<start>>\n end=<<stop>>\n output=<<output-macro>>\n/>\n</$reveal>\n</$list>\n</$list>\n</$list>\n</$vars>\n\\end\n\n\\define simple(p)\n<$text text=<<__p__>> />\n\\end\n\n\\define simple-list(p)\n<li><$text text=<<__p__>>/></li>\n\\end\n\n\n!! Summary\n* `find` is a macro to search a text and find all snippets delimited between values of `begin` and `end` delimiters\n* `simple` is a macro used by `find` to show the output in a simple format\n* `simple-list` is a macro used by `find` to show the output in a simple list format. The ordered and unordered list\ncan be used if the call to `find` macro wrapped in a `div` with suitable type e.g `ol` or `ul`."},"$:/plugins/kookma/utility/macro/lorem":{"author":"Jeremy Ruston","created":"20190316214433792","description":"creates few paragraphs of dumy text","modified":"20200123200937645","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define .lorem(np:1)\n<$list filter=\"[range[1,$np$]]\" variable=null>\nLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\n<$list filter=\"[<__np__>!match[1]]\"><p/></$list>\n</$list>\n\\end"},"$:/plugins/kookma/utility/macro/show-macro":{"created":"20190317174614898","modified":"20201130152604002","tags":"$:/tags/Macro","type":"application/x-tiddler","text":"\\define disp-macro-contents(p)\n<pre>\\define<$text text=<<__p__>> />\\end</pre>\n\\end\n\n\\define show-macro(tiddler)\n<$set name=selected-tiddler value=\"$tiddler$\" emptyValue=<<currentTiddler>> >\n<$macrocall $name='find'\n text={{{[<selected-tiddler>get[text]]}}}\n begin=\"\\define\"\n end=\"\\end\"\n output=\"disp-macro-contents\"/>\n</$set>\n\\end"},"$:/plugins/kookma/utility/macro/simple-navigation":{"created":"20190823062102008","description":"create a new tiddler tagged with $:/tags/Viewtemplate and call simple-navigation with desired tag","modified":"20200126151115600","tags":"$:/tags/Macro","type":"application/x-tiddler","text":"\\define simple-navigation(tag:\"demo\", class, close:\"no\")\n<$list filter=\"[all[current]tag[$tag$]]\">\n<div class=\"$class$\">\n<$list filter=\"[tag[$tag$]before<currentTiddler>]\" variable=\"prevTiddler\">\n<$button to=<<prevTiddler>> tooltip=<<prevTiddler>> class=\"tc-btn-invisible $class$\">previous\n<$list filter=\"[<__close__>match[yes]]\" variable=ignore><$action-sendmessage $message=\"tm-close-tiddler\" $param=<<currentTiddler>>/></$list>\n</$button>\n</$list>\n<$list filter=\"[tag[$tag$]after<currentTiddler>] [tag[$tag$]before<currentTiddler>] +[count[]] -1\" variable=ignore>|</$list>\n<$list filter=\"[tag[$tag$]after<currentTiddler>]\" variable=\"nextTiddler\">\n<$button to=<<nextTiddler>> tooltip=<<nextTiddler>> class=\"tc-btn-invisible $class$\">next\n<$list filter=\"[<__close__>match[yes]]\" variable=ignore><$action-sendmessage $message=\"tm-close-tiddler\" $param=<<currentTiddler>>/></$list>\n</$button>\n</$list>\n</div>\n</$list>\n\\end"},"$:/plugins/kookma/utility/macro/transclusion":{"created":"20190930050545887","modified":"20200324201449425","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define code(tiddler)\n<$set name=selected-tiddler value=\"$tiddler$\" emptyValue=<<currentTiddler>> >\n<$codeblock language={{{[<selected-tiddler>get[type]]}}} code={{{[<selected-tiddler>get[text]]}}}/>\n</$set>\n\\end\n\n\\define code-link(tiddler)\n<$set name=selected-tiddler value=\"$tiddler$\" emptyValue=<<currentTiddler>> >\n<$link to=<<selected-tiddler>>/>\n<$codeblock language={{{[<selected-tiddler>get[type]]}}} code={{{[<selected-tiddler>get[text]]}}}/>\n</$set>\n\\end\n\n\\define content(tiddler)\n<$set name=selected-tiddler value=\"$tiddler$\" emptyValue=<<currentTiddler>> >\n<$link to=<<selected-tiddler>>/>\n<$transclude tiddler=<<selected-tiddler>> mode=\"block\"/>\n</$set>\n\\end\n\n\\define fields(tiddler)\n<style>\n/*Borderless table*/\n.kk-utility-tbl-borderless, \n.kk-utility-tbl-borderless tr,\n.kk-utility-tbl-borderless td{border:0;}\n</style>\n<$set name=selected-tiddler value=\"$tiddler$\" emptyValue=<<currentTiddler>> >\n<$link to=<<selected-tiddler>>/>\n<$list filter='[<selected-tiddler>fields[]] -[enlist[text title created modified tags creator modifier]] +[limit[1]]' variable=\"ignore\"><!--check if there is any user field -->\n<table class=\"kk-utility-tbl-borderless\">\n<$list filter='[<selected-tiddler>fields[]] -[enlist[text title created modified tags creator modifier]]' variable=\"fld\">\n<tr><td style=\"text-align:right\"><<fld>>:</td><td><$text text={{{[<selected-tiddler>get<fld>]}}}/></td></tr>\n</$list>\n</table>\n</$list>\n</$set>\n\\end\n\n\\define description(tiddler)\n<$set name=selected-tiddler value=\"$tiddler$\" emptyValue=<<currentTiddler>> >\n<dl><dt><$link to=<<selected-tiddler>>/></dt><dd><$transclude tiddler=<<selected-tiddler>> field=\"description\"/></dd></dl>\n</$set>\n\\end"},"$:/plugins/kookma/utility/macro/unique-id":{"author":"Jeremy Ruston","created":"20200210134515855","description":"creates a unique id for permanent state tiddler","modified":"20200210134635362","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define create_id_from_timedata(prefix) $prefix$-<<now [UTC]YYYY0MM0DD0hh0mm0ssXXX>>\n\n\\define unique-id(prefix:id)\n<$wikify name=id text=<<create_id_from_timedata \"\"\"$prefix$\"\"\">> >\n<$button tooltip=\"create unique id\" class=\"tc-btn-invisible\" message=\"tm-copy-to-clipboard\" param=<<id>> >{{$:/core/images/copy-clipboard}} \n</$button> <$text text=<<id>>/>\n</$wikify>\n\\end\n"},"$:/plugins/kookma/utility/macro/wikitext-macros":{"created":"20150117184156000","modified":"20200123200937571","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define wikitext-example(src)\n<div class=\"doc-example\">\n\n<$macrocall $name=\"copy-to-clipboard-above-right\" src=<<__src__>>/>\n\n```\n$src$\n```\n\nThat renders as:\n\n$src$\n\n... and the underlying HTML is:\n\n$$$text/vnd.tiddlywiki>text/html\n$src$\n$$$\n</div>\n\\end\n\n\\define wikitext-example-without-html(src)\n<div class=\"doc-example\">\n\n<$macrocall $name=\"copy-to-clipboard-above-right\" src=<<__src__>>/>\n\n```\n$src$\n```\n\nThat renders as:\n\n$src$\n</div>\n\\end\n<!--\n; Credit\n:Jeremy Ruston TW 5.1.18\n\nThe wiki-text macros are set of macro for documenting TW codes.\n-->"},"$:/plugins/kookma/utility/pagecontrol/view-fields-button":{"caption":"{{$:/plugins/kookma/utility/images/view-fields.svg}} {{$:/language/Buttons/Utility/Caption}}","created":"20181010190533135","description":"Show a toggle button for view fields","modified":"20200403115112475","tags":"$:/tags/PageControls","type":"text/vnd.tiddlywiki","text":"\\define viewtemplateTid() $:/plugins/kookma/utility/viewtemplate/view-fields\n\\define fldshowstateTid() $:/keepstate/utility/toggle-view-fields\n\n\\define show-fields-button()\n\\whitespace trim\n\n<$reveal type=\"nomatch\" state=<<fldshowstateTid>> text=\"show\">\n <$button set=<<fldshowstateTid>> setTo=\"show\" \n\t tooltip={{$:/language/Buttons/Utility/Hint}} \n\t\t\t\t\t aria-label={{$:/language/Buttons/Utility/Caption}} \n\t\t\t\t\t class=<<tv-config-toolbar-class>> >\n <<disp-on-pagecontrols>>\n <$action-setfield $tiddler=<<viewtemplateTid>> tags=\"$:/tags/ViewTemplate\"/>\n </$button>\n</$reveal>\n\n<$reveal type=\"match\" state=<<fldshowstateTid>> text=\"show\">\n <$button set=<<fldshowstateTid>> setTo=\"hide\" \n tooltip={{$:/language/Buttons/Utility/Hint}} \n\t\t\t\t aria-label={{$:/language/Buttons/Utility/Caption}} \n\t\t\t\t class=\"\"\"$(tv-config-toolbar-class)$ tc-selected\"\"\">\n <<disp-on-pagecontrols>>\n <$action-setfield $tiddler=<<viewtemplateTid>> tags=\"\"/>\n </$button>\n</$reveal>\n\\end\n\n\\define disp-on-pagecontrols() \n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/plugins/kookma/utility/images/view-fields.svg}} \n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Utility/Caption}}/></span>\n</$list>\n\\end\n\n\n<<show-fields-button>>"},"$:/plugins/kookma/utility/readme":{"created":"20190930044127683","modified":"20200322194049962","tags":"","type":"text/vnd.tiddlywiki","text":"; Utility plugin\nThe utility plugin objective is to provide set of tools for developers and authors. These tools includes simple transclusions, show raw contents of tiddlers, author tools, wikitext macros, show fields in view mode, ...\n\n; Code and demo\nFor learning plugin features, syntax, tutorial and examples see the plugin demo and code pages\n\n* Demo: https://kookma.github.io/TW-Utility/\n* Code: https://github.com/kookma/TW-Utility\n"},"$:/plugins/kookma/utility/snippet/macrocall-wikitext-example":{"caption":"Wikitext-example macrocall","created":"20181023161605661","modified":"20200123200937811","tags":"$:/tags/TextEditor/Snippet","type":"text/vnd.tiddlywiki","text":"<$macrocall $name=\"wikitext-example-without-html\" \nsrc=\"\"\"\n\"\"\"/>"},"$:/plugins/kookma/utility/snippet/wikitext-macro":{"caption":"Wikitext-example","created":"20181007154126921","modified":"20200123200937797","tags":"$:/tags/TextEditor/Snippet","type":"text/vnd.tiddlywiki","text":"<<wikitext-example-without-html \nsrc:\"\"\"\n\"\"\">>"},"$:/plugins/kookma/utility/styles/doc-svg":{"text":".kk-doc svg{\nwidth: 1.2em;\nheight: 1.2em;\nvertical-align: middle;}\n\n.kk-ut-txt{\nmin-width:50%}","created":"20190722142023425","modified":"20200322091202744","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/utility/styles/tw-version":{"text":"<pre>/* TW-version added to site title */\n.tc-site-title:before {\n content:\"TW <<version>>\";\n position:absolute;\n margin-top:-1.9em;\n color:silver;\n font-size:13px;\n}\n</pre>","created":"20180906042308596","modified":"20200325164200123","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/utility/styles/wikitext-macro":{"text":".doc-example { margin: 1em 0; padding: 0.8em 0; } .doc-example:hover { background-color: #f7f7f9; } .doc-example ul { margin-bottom: 0; padding-bottom: 0; margin-top: 0.2em; } .doc-example pre:first-child { margin-top: 0; } .doc-example-result { border-left: 5px solid #bbb; border-right: 5px solid #bbb; margin-left: 0; margin-right: 0; padding: 0 10px; } .doc-example-result ul { margin-left: 0; padding-left: 10px; } .doc-example-result ol { margin-left: 0; padding-left: 20px; }","created":"20180909042646908","modified":"20200325141241379","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/utility/ui/ControlPanel/Settings":{"caption":"Utility","created":"20190930212747824","list-after":"$:/core/ui/ControlPanel/Settings/TiddlyWiki","modified":"20200322091210028","tags":"$:/tags/ControlPanel/SettingsTab $:/tags/MoreSideBar","type":"text/vnd.tiddlywiki","text":"These settings let you customise the behaviour of Utility plugin.\n\n---\n\n;Show Utility setting in more sidebar\n:<$checkbox tiddler=\"$:/plugins/kookma/utility/ui/ControlPanel/Settings\" tag=\"$:/tags/MoreSideBar\"> Show setting in more sidebar</$checkbox>\n\n;Options\n:<$checkbox tiddler=\"$:/plugins/kookma/utility/pagecontrol/view-fields-button\" tag=\"$:/tags/PageControls\"> Enable show fields</$checkbox>\n:<$checkbox tiddler=\"$:/plugins/kookma/utility/styles/tw-version\" tag=\"$:/tags/Stylesheet\"> Show the Tiddlywiki version badge</$checkbox>\n:<$checkbox tiddler=\"$:/plugins/kookma/utility/viewtemplate/display-tiddler-raw-content\" tag=\"$:/tags/ViewTemplate\"> Display the tiddler raw content</$checkbox><div style=\"padding-left:18px;\">\n<$list filter=\"[[$:/plugins/kookma/utility/viewtemplate/display-tiddler-raw-content]tags[]search[$:/tags/ViewTemplate]]\" variable=ignore>\nFilters to reveal tiddlers content <$edit-text tiddler=\"$:/plugins/kookma/utility/config/reveal-tags\" field=\"text\" tag=input defualt=\"\" placeholder=\"enter a filter e.g. [tag[myTag]] \" class=\"kk-ut-txt\"/>\n</$list></div>\n\n"},"$:/plugins/kookma/utility/viewtemplate/display-tiddler-raw-content":{"created":"20181212041419278","description":"this view template displays the content of global macro tiddlers","modified":"20200126142626441","tags":"$:/tags/ViewTemplate","type":"text/vnd.tiddlywiki","text":"<$set name=\"revealFilters\" tiddler=\"$:/plugins/kookma/utility/config/reveal-tags\" field=text>\n<$list filter=\"[all[current]tag[show-content]]\n [all[current]tag[$:/tags/EditTemplate]]\n [all[current]tag[$:/tags/ViewTemplate]] \n [all[current]tag[$:/tags/Macro]]\n [all[current]subfilter<revealFilters>] +[limit[1]]\">\n<$codeblock code={{!!text}} language=\"xml\" />\n</$list>\n</$set>\n\n"},"$:/plugins/kookma/utility/viewtemplate/view-fields":{"created":"20181010162537613","description":"Toggle field handling in view mode","list-after":"$:/core/ui/ViewTemplate/tags","modified":"20210409144300064","tags":"","type":"text/vnd.tiddlywiki","text":"<$vars newFieldNameTiddler=<<qualify \"$:/temp/NewFieldName\">>\nnewFieldValueTiddler=<<qualify \"$:/temp/NewFieldValue\">> \nsearchListState=<<qualify \"$:/temp/searchListState\">> \nstoreTitle=<<qualify \"$:/temp/storeTitle\">> \n>\n<$transclude tiddler=\"$:/core/ui/EditTemplate/fields\"/>\n</$vars>"},"$:/language/Buttons/Utility/Hint":{"created":"20190930171301401","modified":"20191111154125882","tags":"","type":"text/vnd.tiddlywiki","text":"Show fields"},"$:/language/Buttons/Utility/Caption":{"created":"20190930171340202","modified":"20191111154125886","tags":"","type":"text/vnd.tiddlywiki","text":"show fields"},"$:/config/ShortcutInfo/author-tools":{"created":"20190912083358612","modified":"20200316123519558","tags":"","type":"text/vnd.tiddlywiki","text":"Show Author tools dialog"},"$:/config/shortcuts/author-tools":{"created":"20191121050813703","modified":"20200316123531677","type":"text/vnd.tiddlywiki","text":"ctrl-alt-A"},"$:/config/ShortcutInfo/switch-author":{"created":"20200315203528401","modified":"20200316123455880","type":"text/vnd.tiddlywiki","text":"Toggle the author-reader mode"},"$:/config/shortcuts/switch-author":{"created":"20200315203409995","modified":"20200316123545221","type":"text/vnd.tiddlywiki","text":"ctrl+alt+L"}}}
<$vars newFieldNameTiddler=<<qualify "$:/temp/NewFieldName">>
newFieldValueTiddler=<<qualify "$:/temp/NewFieldValue">>
searchListState=<<qualify "$:/temp/searchListState">>
storeTitle=<<qualify "$:/temp/storeTitle">>
>
<$transclude tiddler="$:/core/ui/EditTemplate/fields"/>
</$vars>
{"tiddlers":{"$:/plugins/kookma/vote/config/display-filter":{"created":"20210224051207259","modified":"20210224075320900","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/vote/history":{"created":"20210215150432240","modified":"20210225112615089","tags":"","type":"text/vnd.tiddlywiki","text":"Full change log https://kookma.github.io/TW-Vote/#ChangeLog\n\n* ''1.0.0'' -- 2021.02.25 -- first stable release\n* ''0.5.0'' -- 2021.02.16 -- performance improvement\n* ''0.1.0'' -- 2021.02.15 -- initial release\n"},"$:/plugins/kookma/vote/images/svg-downvote":{"created":"20210215041358884","modified":"20210218034901100","tags":"","type":"text/vnd.tiddlywiki","text":"<svg height=\"16\" class=\"octicon octicon-arrow-down width-full discussion-downvote-icon\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M13.03 8.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.47 9.28a.75.75 0 011.06-1.06l2.97 2.97V3.75a.75.75 0 011.5 0v7.44l2.97-2.97a.75.75 0 011.06 0z\"></path></svg>"},"$:/plugins/kookma/vote/images/svg-upvote":{"created":"20210215041421497","modified":"20210218034907934","tags":"","type":"text/vnd.tiddlywiki","text":"<svg height=\"16\" class=\"octicon octicon-arrow-up width-full discussion-upvote-icon\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M3.47 7.78a.75.75 0 010-1.06l4.25-4.25a.75.75 0 011.06 0l4.25 4.25a.75.75 0 01-1.06 1.06L9 4.81v7.44a.75.75 0 01-1.5 0V4.81L4.53 7.78a.75.75 0 01-1.06 0z\"></path></svg>"},"$:/plugins/kookma/vote/license":{"created":"20210215150432241","modified":"20210215150545382","tags":"","type":"text/vnd.tiddlywiki","text":"Distributed under an MIT license.\n\nCopyright (c) 2021 [[Mohammad Rahmani|https://github.com/kookma]]\n\n<<<\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n<<<"},"$:/plugins/kookma/vote/macros/configs":{"created":"20210218071829609","modified":"20210225101412165","tags":"$:/tags/Macro/Vote","type":"text/vnd.tiddlywiki","text":"\\define votingsTiddler() $:/vote/dataTiddler/votings\n\\define sortStateTiddler() $:/state/vote/sort\n\\define entryStateTiddler() $:/state/vote/entry-per-page\n\\define pageStateTiddler() $:/state/vote/page-number\n\\define deleteTempTiddler() $:/temp/vote/delete-votes\n\\define voteFilterTiddler() $:/plugins/kookma/vote/config/display-filter\n\\define voteEditSummaryTable() $:/state/vote/edit-summary-table\n\n\\define myfilter() [<votingsTiddler>indexes[]]"},"$:/plugins/kookma/vote/macros/delete-votings":{"created":"20210225091253613","modified":"20210225113855670","tags":"$:/tags/Macro/Vote","type":"text/vnd.tiddlywiki","text":"\\define confirm-delete()\n<!-- reveals deletion confirmation -->\n<$list filter=\"[subfilter<myfilter>limit[1]]\" variable=ignore>\n<$reveal class=\"tbl-delete-confirm\" type=\"match\" stateTitle=<<deleteTempTiddler>> stateField=text text=\"yes\" tag=\"tr\">\n<th colspan=3 >\n<$list filter=\"[<deleteTempTiddler>get[confirm]match[yes]]\" \n variable=ignore emptyMessage=<<ask-for-delete>> >\n <<perform-delete>>\n</$list>\n</th>\n</$reveal>\n</$list>\n\\end\n\n\\define ask-for-delete()\n<$set name=ntids filter=\"[subfilter<myfilter>count[]]\">\n Delete all <<ntids>> records?\n <$button class=\"tc-btn-invisible\">\n <$action-setfield $tiddler=<<deleteTempTiddler>> $field=\"confirm\" $value=\"yes\"/>\n {{$:/core/images/delete-button}} yes\n </$button> or \n <$button class=\"tc-btn-invisible\">\n <$action-deletetiddler $tiddler=<<deleteTempTiddler>>/>\n {{$:/core/images/close-button}} no\n </$button>\n</$set>\t\t\t\t\n\\end\n\n\\define perform-delete()\n Warning! this action cannot be undone!\n <$button class=\"tc-btn-invisible\">\n <$action-deletetiddler $tiddler=<<deleteTempTiddler>> />\n <$action-deletetiddler $tiddler=<<votingsTiddler>> />\n {{$:/core/images/delete-button}} delete\n </$button> or \n <$button class=\"tc-btn-invisible\">\n <$action-deletetiddler $tiddler=<<deleteTempTiddler>> />\n {{$:/core/images/close-button}} cancel \n </$button>\n\\end"},"$:/plugins/kookma/vote/macros/keyvals.js":{"text":"/*\\\nkeyvals.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the key_°_values of a data tiddler\nNote the _°_ is a separator used here for sorting purpose\n\n\\*/\n(function(){\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.keyvals = function(source,operator,options) {\n\tvar results = [];\n\tvar sep=\"_°_\";\n\n\tsource(function(tiddler,title) {\n\t\tvar data = options.wiki.getTiddlerDataCached(title);\n\t\tif(data) {\n\t\t\tfor (var [key, value] of Object.entries(data)) {\n\t\t\t\tresults.push(key+sep+value);\n\t\t\t}\n\t\t}\n\n\t});\n\n\treturn results;\n};\n\n})();\n","type":"application/javascript","module-type":"filteroperator","created":"20210221170519326","modified":"20210221182924712","tags":""},"$:/plugins/kookma/vote/macros/pagination":{"created":"20210224180410216","modified":"20210225081828998","tags":"$:/tags/Macro/Vote","type":"text/vnd.tiddlywiki","text":"\\define prev-button()\n<!-- create previous page button --->\n<$list filter=\"[<page-number>compare:number:lt[2]then[yes]else[no]]\" variable=state>\n<$button disabled=<<state>> class=\"vote-tbl-page-prev tc-btn-invisible\">\n{{$:/core/images/chevron-left}} <strong>Prev</strong>\n<$action-listops $tiddler=<<pageStateTiddler>> $field=text $subfilter=\"+[subtract[1]] ~[[1]]\"/>\n</$button>\n</$list>\n\\end\n\n\\define next-button()\n<!-- create next page button --->\n<$list filter=\"[<high>compare:number:gteq<total-entries>then[yes]else[no]]\" variable=state> \n<$button disabled=<<state>> class=\"vote-tbl-page-next tc-btn-invisible\">\n<strong>Next</strong> {{$:/core/images/chevron-right}} \n<$action-listops $tiddler=<<pageStateTiddler>> $field=text $subfilter=\"+[add[1]] ~[[2]]\"/>\n</$button>\n</$list>\n\\end\n\n\\define limit-entries()\n<!-- set number of entries per page -->\n<$select tiddler=<<entryStateTiddler>> default=25 actions=\"\"\"<$action-setfield $tiddler=<<pageStateTiddler>> text=1/>\"\"\">\n<$list filter='5 10 15 20 25 30 40 50' variable=num>\n<option value=<<num>>>Limit <$text text=<<num>>/></option>\n</$list>\n<option value=<<total-entries>> >Show all</option>\n</$select>\n\\end"},"$:/plugins/kookma/vote/macros/remove-missing-tiddlers":{"created":"20210218034153267","modified":"20210225084303393","tags":"$:/tags/Macro/Vote","type":"text/vnd.tiddlywiki","text":"\\define clean-votings-dataTiddler()\n<$list filter=\"[subfilter<myfilter>is[missing]count[]compare:integer:gt[0]]\" variable=ignore emptyMessage=\"There is no vote for missing tiddlers\">\n<$button class=\"tc-btn-invisible\">{{$:/core/images/delete-button}} Remove votes for <$count filter=\"[subfilter<myfilter>is[missing]]\"/> missing tiddler\n<$list filter=\"[[$:/vote/dataTiddler/votings]indexes[]]\">\n<$list filter=\"[<currentTiddler>is[missing]]\" variable=idx>\n<$action-setfield $tiddler=\"$:/vote/dataTiddler/votings\" $index=<<idx>> />\n</$list>\n</$list>\n</$button>\n\\end\n<$vars num={{{[subfilter<myfilter>] +[is[missing]] +[count[]] }}}>"},"$:/plugins/kookma/vote/macros/summary":{"created":"20210219073827766","modified":"20210225110540825","tags":"$:/tags/Macro/Vote","type":"text/vnd.tiddlywiki","text":"\\define btnLable(label)\n''$label$''\n<$list filter=\"[<sortBy>match[$label$]]\" variable=null>\n<$list filter=\"[<sortNeg>match[!]]\" variable=null emptyMessage=\"{{$:/core/images/down-arrow}}\">\n{{$:/core/images/up-arrow}}\n</$list></$list>\n\\end\n\n\\define remove(idx)\n<$button class=\"tc-btn-invisible vote-delete-svg\"> {{$:/core/images/close-button}}\n<$action-setfield $tiddler=<<votingsTiddler>> $index=<<__idx__>>/>\n</$button>\n\\end\n\n\\define show-records-by-vote()\n<$vars sortby=\"[split[_°_]nth[2]]\">\n<$vars tfilter=\"[<votingsTiddler>keyvals[]] +[$(sortNeg)$sortsub:number<sortby>]\">\n<$list filter=\"[subfilter<tfilter>first<high>] -[subfilter<tfilter>first<low>]\" variable=item>\n<tr>\n<td><$link to={{{ [<item>split[_°_]nth[1]] }}}/></td>\n<td><$text text={{{ [<item>split[_°_]nth[2]] }}}/></td>\n<$list filter=\"[<voteEditSummaryTable>get[text]match[yes]]\" variable=ignore>\n<td><$macrocall $name=\"remove\" idx={{{ [<item>split[_°_]nth[1]] }}} /></td>\n</$list>\n</tr>\n</$list>\n</$vars>\n</$vars>\n\\end\n\n\n\\define show-records-by-title()\n<$vars tfilter=\"[subfilter<myfilter>] +[$(sortNeg)$sort[]]\">\n<$list filter=\"[subfilter<tfilter>first<high>] -[subfilter<tfilter>first<low>]\">\n<tr>\n<td><$link/></td>\n<td><$text text={{{[<votingsTiddler>getindex<currentTiddler>]}}}/></td>\n<$list filter=\"[<voteEditSummaryTable>get[text]match[yes]]\" variable=ignore>\n<td><$macrocall $name=\"remove\" idx=<<currentTiddler>> /></td>\n</$list>\n</tr>\n</$list>\n</$vars>\n\\end\n\n\\define sort-by-title()\n<$button class=\"tc-btn-invisible vote-sort-svg\"><<btnLable Title>>\n<$action-setfield $tiddler=<<sortStateTiddler>> text=\"Title\"/>\n<$action-listops $tiddler=<<sortStateTiddler>> $field=sort-neg $subfilter=\"+[toggle[!]]\"/>\n</$button>\n\\end\n\n\\define sort-by-vote()\n<$button class=\"tc-btn-invisible vote-sort-svg\"><<btnLable Vote>>\n<$action-setfield $tiddler=<<sortStateTiddler>> text=\"Vote\"/>\n<$action-listops $tiddler=<<sortStateTiddler>> $field=sort-neg $subfilter=\"+[toggle[!]]\"/>\n</$button>\n\\end\n\n\\define edit-button()\n<$button class=\"tc-btn-invisible\">{{$:/core/images/edit-button}}\n<$action-listops $tiddler=<<voteEditSummaryTable>> $field=\"text\" $subfilter=\"+[toggle[yes]]\" />\n<$action-listops $tiddler=<<voteEditSummaryTable>> $field=\"ncols\" $subfilter=\"+[toggle[3],[2]]\" />\n</$button>\n\\end\n"},"$:/plugins/kookma/vote/readme":{"created":"20210215150432241","modified":"20210215170949045","tags":"","type":"text/vnd.tiddlywiki","text":"; Vote\nThe vote plugin lets you to rate tiddlers. Both voting and ranking of tiddlers can be done.\n\n;Code and demo\nFor learning plugin features, syntax, tutorial and examples see the plugin demo and code pages\n\n* Demo: https://kookma.github.io/TW-Vote/\n* Code: https://github.com/kookma/TW-Vote\n"},"$:/plugins/kookma/vote/styles/dynamic":{"created":"20210224171009495","modified":"20210225112102972","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":".vote-tbl-page-footer select{\n background-color: <<colour table-header-background>>;\n color:<<colour foreground>>;\n}\n\ntable.vote-summary-table tfoot .vote-tbl-page-footer > td{\nbackground-color: <<colour table-header-background>>;\n}\n"},"$:/plugins/kookma/vote/styles/summary-table":{"text":"/* Summary Table */\n.vote-summary-table{\n\t width:100%;\n}\n/* Table caption at top */\n.vote-summary-table caption {\n caption-side:top;\n margin-bottom:0.2rem;\n text-align:left;\t\n}\n\n.vote-tbl-page-footer td{\n\tmargin: 0 0 0 0;\n\tpadding: 4px 7px 4px 7px;\n}\n\n.vote-tbl-page-footer select{\n\tpadding:0;\n\tmargin:0;\n\tborder:none;\t\n}\n\n.vote-tbl-page-footer {\n\ttext-align:center;\n}\n\n.vote-tbl-page-prev{\n\tfloat:left;\n}\n\n.vote-tbl-page-next{\n\tfloat:right;\n}\n\n.vote-tbl-page-footer button svg {height:0.7em;}\n.vote-tbl-page-footer button {outline: none;}\n.vote-tbl-page-footer button:disabled {display:none;}\n\n\n/*button and svg */\nbutton.vote-sort-svg,\nbutton.vote-delete-svg {\n\toutline: none;}\n\nbutton.vote-sort-svg > svg,\nbutton.vote-delete-svg >svg {\n\ttext-shadow: none;\n\theight:10px;\n\tpadding:0 0 2px 0;\n}\n\n\n/* DELETE CONFIRMATION */\ntable.vote-summary-table thead .tbl-delete-confirm > th {\n color: white;\n background-color:#ff0033;\n padding: 8px;\n margin: 0px;\n text-align:center;\n font-weight:normal;\n}\n\ntable.vote-summary-table thead .tbl-delete-confirm > th > button {\n color: white;\n fill: white;\n}\n\n\n\n","created":"20210219205554747","modified":"20210225103105201","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/vote/styles/vote-pill":{"text":".vote-container{\n\tdisplay:inline-block;\n\tfloat:left;\n\tmargin-right:10px;\n}\n\n.vote-flex {\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.vote-counter{\n\tdisplay:inline-block;\n\tbox-sizing: content-box; \n\twidth: 1.5em;\n\theight: 1.5em;\n\tline-height: 1.5em;\n\ttext-align: center;\n\tborder-radius: 2em;\n\tpadding:0 6px;\n}\n","created":"20210215041752859","modified":"20210225062114585","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/vote/ui/ControlPanel/Settings":{"caption":"Vote","created":"20210215163644178","modified":"20210225063636230","tags":"$:/tags/ControlPanel/SettingsTab $:/tags/MoreSideBar","type":"text/vnd.tiddlywiki","text":"\\import [all[tiddlers+shadows]tag[$:/tags/Macro/Vote]]\nThese settings let you customise the behaviour of Vote plugin.\n\n---\n\n;Show Vote setting in more sidebar\n:<$checkbox tiddler=\"$:/plugins/kookma/vote/ui/ControlPanel/Settings\" tag=\"$:/tags/MoreSideBar\"> Show setting in more sidebar</$checkbox>\n\n;General display option\n:<$checkbox tiddler=\"$:/plugins/kookma/vote/viewtemplate/voting\" tag=\"$:/tags/ViewTemplate\"> Show the vote pill on all non system tiddlers</$checkbox>\n\n\n;Selection filter\n: Filters to show vote pill only on selected tiddlers <$edit-text tiddler=<<voteFilterTiddler>> field=\"text\" tag=input defualt=\"[all[current]]\" placeholder=\"enter a filter e.g. [tag[myTag]] \" class=\"kk-ut-txt\"/>\n\n;Clean\n:<<clean-votings-dataTiddler>>\n\n;Summary table\n:<$button to=\"$:/plugins/kookma/vote/ui/summary\" class=\"tc-btn-invisible\"> {{$:/core/images/right-arrow}} Open votings summary table</$button>"},"$:/plugins/kookma/vote/ui/summary":{"created":"20210219210131049","modified":"20210225112106193","tags":"","type":"text/vnd.tiddlywiki","text":"\\import [all[tiddlers+shadows]tag[$:/tags/Macro/Vote]]\n\n\\define delete-votes()\n<$button class=\"tc-btn-invisible\">\n{{$:/core/images/delete-button}}\n<$action-setfield $tiddler=<<deleteTempTiddler>> text=yes />\n</$button>\n\\end\n\n<$list filter=\"[subfilter<myfilter>limit[1]]\" variable=ignore emptyMessage=\"Summary table is empty. There is no votes!\">\n<table class=\"vote-summary-table\">\n<caption><<edit-button>> Voting summary</caption>\n<$vars sortBy={{{ [<sortStateTiddler>get[text]] }}} \n sortNeg={{{ [<sortStateTiddler>get[sort-neg]] }}} >\n<$vars total-entries={{{[subfilter<myfilter>count[]] }}}\n\t\t\t page-number={{{[<pageStateTiddler>get[text]] ~[[1]]}}} \n\t\t\t entries-per-page={{{ [<entryStateTiddler>get[text]] ~[[25]] }}} >\n<$vars low={{{ [<page-number>subtract[1]multiply<entries-per-page>] }}} \n high={{{[<page-number>multiply<entries-per-page>] }}} \n\t\t\t ncols={{{[<voteEditSummaryTable>get[ncols]] ~[[2]]}}}>\n<thead>\t\t\n<<confirm-delete>>\n<tr><!-- create the header row -->\n<th style=\"text-align:left\"><<sort-by-title>></th>\n<th style=\"width:8ch;text-align:left\"><<sort-by-vote>></th>\n<$list filter=\"[<voteEditSummaryTable>get[text]match[yes]]\" variable=ignore>\n<th style=\"width:6ch;text-align:left;\"><b><<delete-votes>></b></th>\n</$list>\n</tr>\n</thead>\n<tbody>\n<$list filter=\"[<sortBy>!match[Vote]]\" variable=\"sort_by_title\">\n<<show-records-by-title>>\n</$list>\n<$list filter=\"[<sortBy>match[Vote]]\" variable=\"sort_by_vote\">\n<<show-records-by-vote>>\n</$list>\n</tbody>\n<tfoot>\n<tr class=\"vote-tbl-page-footer\">\n<td colspan=<<ncols>> >\n<<prev-button>>\nDisplaying <$text text={{{[<low>add[1]]}}}/> through <<high>> of <<total-entries>> Results | <<limit-entries>>\n<<next-button>>\n</td>\n</tr>\n</tfoot>\n</$vars></$vars></$vars>\n</table>\n<$list filter=\"[<voteEditSummaryTable>get[text]match[yes]]\" variable=ignore>\n<<clean-votings-dataTiddler>>\n</$list>\n</$list>"},"$:/plugins/kookma/vote/viewtemplate/voting":{"created":"20210214160252823","list-before":"$:/core/ui/ViewTemplate/title","modified":"20210225062408550","tags":"$:/tags/ViewTemplate","type":"text/vnd.tiddlywiki","text":"\\import [[$:/plugins/kookma/vote/macros/configs]]\n\n\\define upvote() <$action-setfield $tiddler=<<votingsTiddler>> $index=<<currentTiddler>> $value={{{ [<votingsTiddler>getindex<currentTiddler>else[0]add[1]] }}}/>\n\n\\define downvote() <$action-setfield $tiddler=<<votingsTiddler>> $index=<<currentTiddler>> $value={{{[<votingsTiddler>getindex<currentTiddler>else[0]subtract[1]]}}}/>\n\n<$set name=\"revealFilters\" tiddler=<<voteFilterTiddler>> field=text emptyValue=\"[!is[system]]\">\n<$list filter=\"[all[current]subfilter<revealFilters>match<currentTiddler>]\">\n<div class=\"vote-container\">\n<div class=\"vote-flex\">\n<$button class=\"tc-btn-invisible\" actions=<<upvote>> >\n{{$:/plugins/kookma/vote/images/svg-upvote}}\n</$button>\n<div>\n<$vars vote={{{ [<votingsTiddler>getindex<currentTiddler>else[0]] }}}>\n<$list filter=\"[<vote>compare:number:lt[0]then[#fffbdd]] [<vote>compare:number:lteq[-5]then[#ffebda]] [<vote>compare:number:gt[0]then[#dbedff]] [<vote>compare:number:gteq[5]then[#dcffe4]] +[last[]] ~[[#ececec]]\" variable=bgcolor>\n<span class=\"vote-counter\" style={{{ [<bgcolor>addprefix[background-color:]] }}} >\n<$text text=<<vote>> />\n</span>\n</$list>\n</$vars>\n</div>\n<$button class=\"tc-btn-invisible\" actions=<<downvote>> >\n{{$:/plugins/kookma/vote/images/svg-downvote}}\n</$button>\n</div>\n</div>\n</$list>\n</$set>"}}}
{"tiddlers":{"$:/config/EditorTypeMappings/application/javascript":{"text":"codemirror"},"$:/config/EditorTypeMappings/application/json":{"text":"codemirror"},"$:/config/EditorTypeMappings/application/x-tiddler-dictionary":{"text":"codemirror"},"$:/config/EditorTypeMappings/text/css":{"text":"codemirror"},"$:/config/EditorTypeMappings/text/html":{"text":"codemirror"},"$:/config/EditorTypeMappings/text/plain":{"text":"codemirror"},"$:/config/EditorTypeMappings/text/vnd.tiddlywiki":{"text":"codemirror"},"$:/config/EditorTypeMappings/text/x-markdown":{"text":"codemirror"},"$:/config/EditorTypeMappings/text/x-tiddlywiki":{"text":"codemirror"},"$:/config/codemirror/cursorBlinkRate":{"type":"integer","text":"530"},"$:/config/codemirror/extraKeysTW":{"extend":"extraKeys","type":"json","text":"{\n\t\"Ctrl-Esc\": \"singleSelection\",\n\t\"Esc\": \"\",\n\t\"Ctrl-S\": \"\",\n\t\"Ctrl-U\": \"\",\n\t\"Ctrl-T\": \"\",\n\t\"Alt-T\": \"transposeChars\",\n\t\"Alt-U\": \"undoSelection\",\n\t\"Shift-Alt-U\": \"redoSelection\",\n\t\"Cmd-U\": \"\",\n\t\"Tab\": \"indentAuto()\",\n\t\"Enter\": \"newLineAndIndent()\"\n}\n"},"$:/config/codemirror/indentUnit":{"type":"integer","text":"2"},"$:/config/codemirror/indentWithTabs":{"type":"bool","text":"true"},"$:/config/codemirror/inputStyle":{"type":"string","text":"textarea"},"$:/config/codemirror/keyMap":{"type":"string","text":"default"},"$:/config/codemirror/lineNumbers":{"type":"bool","text":"false"},"$:/config/codemirror/lineWrapping":{"type":"bool","text":"true"},"$:/config/codemirror/showCursorWhenSelecting":{"type":"bool","text":"true"},"$:/config/codemirror/smartIndent":{"type":"bool","text":"true"},"$:/config/codemirror/styleActiveLine":{"type":"bool","text":"false"},"$:/config/codemirror/tabSize":{"type":"integer","text":"2"},"$:/config/codemirror/theme":{"type":"string","text":"default"},"$:/language/codemirror/homeUrl":{"text":"http://codemirror.net"},"$:/language/codemirror/addOnUrl":{"text":"http://codemirror.net/doc/manual.html#addons"},"$:/language/codemirror/configUrl":{"text":"http://codemirror.net/doc/manual.html#config"},"$:/language/codemirror/controlPanel/hint":{"text":"These settings let you customise the behaviour of [[CodeMirror|$:/plugins/tiddlywiki/codemirror]]."},"$:/language/codemirror/controlPanel/usage":{"text":"Usage information"},"$:/language/codemirror/editorFont/hint":{"text":"Editor font family"},"$:/language/codemirror/editorFont/info":{"text":"Set the font family for the ~CodeMirror text-editor"},"$:/language/codemirror/controlPanel/keyboard":{"text":"Keyboard shortcuts"},"$:/language/codemirror/keyMap/hint":{"text":"~CodeMirror keymap"},"$:/language/codemirror/keyMap/info":{"text":"~The Keyboard KeyMap used within the ~CodeMirror text-editor"},"$:/language/codemirror/lineNumbers/hint":{"text":"Enable line numbers"},"$:/language/codemirror/lineNumbers/info":{"text":"Whether to show line numbers to the left of the editor."},"$:/language/codemirror/lineWrapping/hint":{"text":"Enable line wrapping"},"$:/language/codemirror/lineWrapping/info":{"text":"Whether CodeMirror should scroll or wrap for long lines. Defaults to `false` (scroll)."},"$:/language/codemirror/showCursorWhenSelecting/hint":{"text":"Show cursor, when selecting"},"$:/language/codemirror/showCursorWhenSelecting/info":{"text":"Whether the cursor should be drawn when a selection is active."},"$:/language/codemirror/styleActiveLine/hint":{"text":"Highlight active line"},"$:/language/codemirror/styleActiveLine/info":{"text":"Whether or not to highlight the active text-editor line"},"$:/language/codemirror/theme/hint":{"text":"Select a theme"},"$:/language/codemirror/theme/info":{"text":"Choose between ~CodeMirror themes"},"$:/plugins/tiddlywiki/codemirror/edit-codemirror.js":{"text":"!function(){'use strict';var r=require('$:/core/modules/editor/factory.js').editTextWidgetFactory,e=require('$:/plugins/tiddlywiki/codemirror/engine.js').CodeMirrorEngine;exports['edit-codemirror']=r(e,e)}();","type":"application/javascript","module-type":"widget"},"$:/plugins/tiddlywiki/codemirror/engine.js":{"text":"!function(){'use strict';var d='[all[shadows+tiddlers]prefix[$:/config/codemirror/]]';if($tw.browser&&!window.CodeMirror){var t=$tw.modules.types.codemirror,e=Object.getOwnPropertyNames(t);if(window.CodeMirror=require('$:/plugins/tiddlywiki/codemirror/lib/codemirror.js'),e)if($tw.utils.isArray(e))for(var i=0;i<e.length;i++)require(e[i]);else require(e)}function r(t){var i=this;t=t||{},this.widget=t.widget,this.value=t.value,this.parentNode=t.parentNode,this.nextSibling=t.nextSibling,this.domNode=this.widget.document.createElement('div'),this.widget.editClass&&(this.domNode.className=this.widget.editClass),this.domNode.style.display='inline-block',this.parentNode.insertBefore(this.domNode,this.nextSibling),this.widget.domNodes.push(this.domNode);var e=function(){var t,e,i,r,s={},n=$tw.wiki.filterTiddlers(d);if($tw.utils.isArray(n))for(var o=0;o<n.length;o++)if(r=$tw.wiki.getTiddler(n[o]))switch(e=n[o].replace(/\\$:\\/config\\/codemirror\\//gi,''),r.fields.type?r.fields.type.trim().toLocaleLowerCase():'string'){case'bool':t='true'===r.fields.text.trim().toLowerCase(),s[e]=t;break;case'string':t=r.fields.text.trim(),s[e]=t;break;case'integer':t=parseInt(r.fields.text.trim(),10),s[e]=t;break;case'json':t=JSON.parse(r.fields.text.trim()),s[i=r.fields.extend||e]?$tw.utils.extend(s[i],t):s[i]=t}return s}();e.mode=t.type,e.value=t.value,this.widget.editTabIndex&&(e.tabindex=this.widget.editTabIndex),this.cm=window.CodeMirror(function(t){i.widget.document.isTiddlyWikiFakeDom||i.domNode.appendChild(t)},e),this.cm.on('change',function(){i.widget.saveChanges(i.getText())}),this.cm.on('drop',function(t,e){return e.stopPropagation(),!1}),this.cm.on('keydown',function(t,e){return i.widget.handleKeydownEvent.call(i.widget,e)})}r.prototype.setText=function(t,e){this.cm.setOption('mode',e),this.cm.hasFocus()||this.cm.setValue(t)},r.prototype.getText=function(){return this.cm.getValue()},r.prototype.fixHeight=function(){var t;this.widget.editAutoHeight?this.cm.setSize(null,null):(t=parseInt(this.widget.wiki.getTiddlerText('$:/config/TextEditor/EditorHeight/Height','400px'),10),t=Math.max(t,20),this.cm.setSize(null,t))},r.prototype.focus=function(){this.cm.focus()},r.prototype.createTextOperation=function(){var t,e=this.cm.listSelections();0<e.length&&(t=this.cm.indexFromPos(e[0].anchor),i=this.cm.indexFromPos(e[0].head));var i={text:this.cm.getValue(),selStart:Math.min(t,i),selEnd:Math.max(t,i),cutStart:null,cutEnd:null,replacement:null,newSelStart:null,newSelEnd:null};return i.selection=i.text.substring(i.selStart,i.selEnd),i},r.prototype.executeTextOperation=function(t){var e=t.text;return null!==t.replacement&&(this.cm.replaceRange(t.replacement,this.cm.posFromIndex(t.cutStart),this.cm.posFromIndex(t.cutEnd)),this.cm.setSelection(this.cm.posFromIndex(t.newSelStart),this.cm.posFromIndex(t.newSelEnd)),e=t.text.substring(0,t.cutStart)+t.replacement+t.text.substring(t.cutEnd)),this.cm.focus(),e},exports.CodeMirrorEngine=r}();","type":"application/javascript","module-type":"library"},"$:/plugins/tiddlywiki/codemirror/lib/codemirror.js":{"text":"var e,t;e=this,t=function(){'use strict';var e=navigator.userAgent,t=navigator.platform,d=/gecko\\/\\d/i.test(e),n=/MSIE \\d/.test(e),r=/Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(e),i=/Edge\\/(\\d+)/.exec(e),b=n||r||i,w=b&&(n?document.documentMode||6:+(i||r)[1]),x=!i&&/WebKit\\//.test(e),r=x&&/Qt\\/\\d+\\.\\d+/.test(e),o=!i&&/Chrome\\//.test(e),f=/Opera\\//.test(e),a=/Apple Computer/.test(navigator.vendor),l=/Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(e),m=/PhantomJS/.test(e),s=!i&&/AppleWebKit/.test(e)&&/Mobile\\/\\w+/.test(e),u=/Android/.test(e),c=s||u||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(e),C=s||/Mac/.test(t),S=/\\bCrOS\\b/.test(e),t=/win/i.test(t),e=f&&e.match(/Version\\/(\\d*\\.\\d*)/);(e=e&&Number(e[1]))&&15<=e&&(x=!(f=!1));var h=C&&(r||f&&(null==e||e<12.11)),p=d||b&&9<=w;function g(e){return new RegExp('(^|\\\\s)'+e+'(?:$|\\\\s)\\\\s*')}var y,v=function(e,t){var n=e.className,r=g(t).exec(n);r&&(t=n.slice(r.index+r[0].length),e.className=n.slice(0,r.index)+(t?r[1]+t:''))};function L(e){for(var t=e.childNodes.length;0<t;--t)e.removeChild(e.firstChild);return e}function k(e,t){return L(e).appendChild(t)}function M(e,t,n,r){var i=document.createElement(e);if(n&&(i.className=n),r&&(i.style.cssText=r),'string'==typeof t)i.appendChild(document.createTextNode(t));else if(t)for(var o=0;o<t.length;++o)i.appendChild(t[o]);return i}function T(e,t,n,r){r=M(e,t,n,r);return r.setAttribute('role','presentation'),r}function N(e,t){if(3==t.nodeType&&(t=t.parentNode),e.contains)return e.contains(t);do{if(11==t.nodeType&&(t=t.host),t==e)return!0}while(t=t.parentNode)}function O(){var t;try{t=document.activeElement}catch(e){t=document.body||null}for(;t&&t.shadowRoot&&t.shadowRoot.activeElement;)t=t.shadowRoot.activeElement;return t}function A(e,t){var n=e.className;g(t).test(n)||(e.className+=(n?' ':'')+t)}function W(e,t){for(var n=e.split(' '),r=0;r<n.length;r++)n[r]&&!g(n[r]).test(t)&&(t+=' '+n[r]);return t}y=document.createRange?function(e,t,n,r){var i=document.createRange();return i.setEnd(r||e,n),i.setStart(e,t),i}:function(e,t,n){var r=document.body.createTextRange();try{r.moveToElementText(e.parentNode)}catch(e){return r}return r.collapse(!0),r.moveEnd('character',n),r.moveStart('character',t),r};var D=function(e){e.select()};function H(e){var t=Array.prototype.slice.call(arguments,1);return function(){return e.apply(null,t)}}function F(e,t,n){for(var r in t=t||{},e)!e.hasOwnProperty(r)||!1===n&&t.hasOwnProperty(r)||(t[r]=e[r]);return t}function P(e,t,n,r,i){null==t&&-1==(t=e.search(/[^\\s\\u00a0]/))&&(t=e.length);for(var o=r||0,l=i||0;;){var s=e.indexOf('\\t',o);if(s<0||t<=s)return l+(t-o);l+=s-o,l+=n-l%n,o=s+1}}s?D=function(e){e.selectionStart=0,e.selectionEnd=e.value.length}:b&&(D=function(e){try{e.select()}catch(e){}});var E=function(){this.id=null};function z(e,t){for(var n=0;n<e.length;++n)if(e[n]==t)return n;return-1}E.prototype.set=function(e,t){clearTimeout(this.id),this.id=setTimeout(t,e)};var I=30,R={toString:function(){return'CodeMirror.Pass'}},B={scroll:!1},G={origin:'*mouse'},U={origin:'+move'};function V(e,t,n){for(var r=0,i=0;;){var o=e.indexOf('\\t',r);-1==o&&(o=e.length);var l=o-r;if(o==e.length||t<=i+l)return r+Math.min(l,t-i);if(i+=o-r,r=o+1,(i+=n-i%n)>=t)return r}}var K=[''];function j(e){for(;K.length<=e;)K.push(X(K)+' ');return K[e]}function X(e){return e[e.length-1]}function Y(e,t){for(var n=[],r=0;r<e.length;r++)n[r]=t(e[r],r);return n}function _(){}function q(e,t){e=Object.create?Object.create(e):(_.prototype=e,new _);return t&&F(t,e),e}var $=/[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;function Z(e){return/\\w/.test(e)||''<e&&(e.toUpperCase()!=e.toLowerCase()||$.test(e))}function Q(e,t){return t?!!(-1<t.source.indexOf('\\\\w')&&Z(e))||t.test(e):Z(e)}function J(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return;return 1}var ee=/[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;function te(e){return 768<=e.charCodeAt(0)&&ee.test(e)}function ne(e,t,n){for(;(n<0?0<t:t<e.length)&&te(e.charAt(t));)t+=n;return t}function re(e,t,n){for(var r=n<t?-1:1;;){if(t==n)return t;var i=(t+n)/2,i=r<0?Math.ceil(i):Math.floor(i);if(i==t)return e(i)?t:n;e(i)?n=i:t=i+r}}function ie(e,t){if((t-=e.first)<0||t>=e.size)throw new Error('There is no line '+(t+e.first)+' in the document.');for(var n=e;!n.lines;)for(var r=0;;++r){var i=n.children[r],o=i.chunkSize();if(t<o){n=i;break}t-=o}return n.lines[t]}function oe(e,t,n){var r=[],i=t.line;return e.iter(t.line,n.line+1,function(e){e=e.text;i==n.line&&(e=e.slice(0,n.ch)),i==t.line&&(e=e.slice(t.ch)),r.push(e),++i}),r}function le(e,t,n){var r=[];return e.iter(t,n,function(e){r.push(e.text)}),r}function se(e,t){var n=t-e.height;if(n)for(var r=e;r;r=r.parent)r.height+=n}function ae(e){if(null==e.parent)return null;for(var t=e.parent,n=z(t.lines,e),r=t.parent;r;r=(t=r).parent)for(var i=0;r.children[i]!=t;++i)n+=r.children[i].chunkSize();return n+t.first}function ue(e,t){var n=e.first;e:do{for(var r=0;r<e.children.length;++r){var i=e.children[r],o=i.height;if(t<o){e=i;continue e}t-=o,n+=i.chunkSize()}return n}while(!e.lines);for(var l=0;l<e.lines.length;++l){var s=e.lines[l].height;if(t<s)break;t-=s}return n+l}function ce(e,t){return t>=e.first&&t<e.first+e.size}function he(e,t){return String(e.lineNumberFormatter(t+e.firstLineNumber))}function de(e,t,n){if(void 0===n&&(n=null),!(this instanceof de))return new de(e,t,n);this.line=e,this.ch=t,this.sticky=n}function fe(e,t){return e.line-t.line||e.ch-t.ch}function pe(e,t){return e.sticky==t.sticky&&0==fe(e,t)}function ge(e){return de(e.line,e.ch)}function me(e,t){return fe(e,t)<0?t:e}function ve(e,t){return fe(e,t)<0?e:t}function ye(e,t){return Math.max(e.first,Math.min(t,e.first+e.size-1))}function be(e,t){if(t.line<e.first)return de(e.first,0);var n=e.first+e.size-1;return t.line>n?de(n,ie(e,n).text.length):(e=ie(e,(n=t).line).text.length,null==(t=n.ch)||e<t?de(n.line,e):t<0?de(n.line,0):n)}function we(e,t){for(var n=[],r=0;r<t.length;r++)n[r]=be(e,t[r]);return n}var xe=!1,Ce=!1;function Se(e,t,n){this.marker=e,this.from=t,this.to=n}function Le(e,t){if(e)for(var n=0;n<e.length;++n){var r=e[n];if(r.marker==t)return r}}function ke(e,t){if(t.full)return null;var n=ce(e,t.from.line)&&ie(e,t.from.line).markedSpans,r=ce(e,t.to.line)&&ie(e,t.to.line).markedSpans;if(!n&&!r)return null;var i=t.from.ch,o=t.to.ch,e=0==fe(t.from,t.to),l=function(e,t,n){var r;if(e)for(var i=0;i<e.length;++i){var o,l=e[i],s=l.marker;null!=l.from&&!(s.inclusiveLeft?l.from<=t:l.from<t)&&(l.from!=t||'bookmark'!=s.type||n&&l.marker.insertLeft)||(o=null==l.to||(s.inclusiveRight?l.to>=t:l.to>t),(r=r||[]).push(new Se(s,l.from,o?null:l.to)))}return r}(n,i,e),s=function(e,t,n){var r;if(e)for(var i=0;i<e.length;++i){var o,l=e[i],s=l.marker;null!=l.to&&!(s.inclusiveRight?l.to>=t:l.to>t)&&(l.from!=t||'bookmark'!=s.type||n&&!l.marker.insertLeft)||(o=null==l.from||(s.inclusiveLeft?l.from<=t:l.from<t),(r=r||[]).push(new Se(s,o?null:l.from-t,null==l.to?null:l.to-t)))}return r}(r,o,e),a=1==t.text.length,u=X(t.text).length+(a?i:0);if(l)for(var c=0;c<l.length;++c){var h,d=l[c];null==d.to&&((h=Le(s,d.marker))?a&&(d.to=null==h.to?null:h.to+u):d.to=i)}if(s)for(var f=0;f<s.length;++f){var p=s[f];null!=p.to&&(p.to+=u),null==p.from?Le(l,p.marker)||(p.from=u,a&&(l=l||[]).push(p)):(p.from+=u,a&&(l=l||[]).push(p))}l=l&&Te(l),s&&s!=l&&(s=Te(s));var g=[l];if(!a){var m,v=t.text.length-2;if(0<v&&l)for(var y=0;y<l.length;++y)null==l[y].to&&(m=m||[]).push(new Se(l[y].marker,null,null));for(var b=0;b<v;++b)g.push(m);g.push(s)}return g}function Te(e){for(var t=0;t<e.length;++t){var n=e[t];null!=n.from&&n.from==n.to&&!1!==n.marker.clearWhenEmpty&&e.splice(t--,1)}return e.length?e:null}function Me(e){var t=e.markedSpans;if(t){for(var n=0;n<t.length;++n)t[n].marker.detachLine(e);e.markedSpans=null}}function Ne(e,t){if(t){for(var n=0;n<t.length;++n)t[n].marker.attachLine(e);e.markedSpans=t}}function Oe(e){return e.inclusiveLeft?-1:0}function Ae(e){return e.inclusiveRight?1:0}function We(e,t){var n=e.lines.length-t.lines.length;if(0!=n)return n;var r=e.find(),i=t.find(),n=fe(r.from,i.from)||Oe(e)-Oe(t);return n?-n:fe(r.to,i.to)||Ae(e)-Ae(t)||t.id-e.id}function De(e,t){var n,r=Ce&&e.markedSpans;if(r)for(var i,o=0;o<r.length;++o)(i=r[o]).marker.collapsed&&null==(t?i.from:i.to)&&(!n||We(n,i.marker)<0)&&(n=i.marker);return n}function He(e){return De(e,!0)}function Fe(e){return De(e,!1)}function Pe(e,t,n,r,i){var t=ie(e,t),o=Ce&&t.markedSpans;if(o)for(var l=0;l<o.length;++l){var s=o[l];if(s.marker.collapsed){var a=s.marker.find(0),u=fe(a.from,n)||Oe(s.marker)-Oe(i),c=fe(a.to,r)||Ae(s.marker)-Ae(i);if(!(0<=u&&c<=0||u<=0&&0<=c)&&(u<=0&&(s.marker.inclusiveRight&&i.inclusiveLeft?0<=fe(a.to,n):0<fe(a.to,n))||0<=u&&(s.marker.inclusiveRight&&i.inclusiveLeft?fe(a.from,r)<=0:fe(a.from,r)<0)))return 1}}}function Ee(e){for(var t;t=He(e);)e=t.find(-1,!0).line;return e}function ze(e,t){var n=ie(e,t),e=Ee(n);return n==e?t:ae(e)}function Ie(e,t){if(t>e.lastLine())return t;var n,r=ie(e,t);if(!Re(e,r))return t;for(;n=Fe(r);)r=n.find(1,!0).line;return ae(r)+1}function Re(e,t){var n=Ce&&t.markedSpans;if(n)for(var r,i=0;i<n.length;++i)if((r=n[i]).marker.collapsed){if(null==r.from)return!0;if(!r.marker.widgetNode&&0==r.from&&r.marker.inclusiveLeft&&function e(t,n,r){if(null==r.to){var i=r.marker.find(1,!0);return e(t,i.line,Le(i.line.markedSpans,r.marker))}if(r.marker.inclusiveRight&&r.to==n.text.length)return!0;for(var o=void 0,l=0;l<n.markedSpans.length;++l)if((o=n.markedSpans[l]).marker.collapsed&&!o.marker.widgetNode&&o.from==r.to&&(null==o.to||o.to!=r.from)&&(o.marker.inclusiveLeft||r.marker.inclusiveRight)&&e(t,n,o))return!0}(e,t,r))return!0}}function Be(e){for(var t=0,n=(e=Ee(e)).parent,r=0;r<n.lines.length;++r){var i=n.lines[r];if(i==e)break;t+=i.height}for(var o=n.parent;o;o=(n=o).parent)for(var l=0;l<o.children.length;++l){var s=o.children[l];if(s==n)break;t+=s.height}return t}function Ge(e){if(0==e.height)return 0;for(var t,n=e.text.length,r=e;t=He(r);){var i=t.find(0,!0),r=i.from.line;n+=i.from.ch-i.to.ch}for(r=e;t=Fe(r);){var o=t.find(0,!0);n-=r.text.length-o.from.ch,n+=(r=o.to.line).text.length-o.to.ch}return n}function Ue(e){var n=e.display,e=e.doc;n.maxLine=ie(e,e.first),n.maxLineLength=Ge(n.maxLine),n.maxLineChanged=!0,e.iter(function(e){var t=Ge(e);t>n.maxLineLength&&(n.maxLineLength=t,n.maxLine=e)})}var Ve=null;function Ke(e,t,n){var r;Ve=null;for(var i=0;i<e.length;++i){var o=e[i];if(o.from<t&&o.to>t)return i;o.to==t&&(o.from!=o.to&&'before'==n?r=i:Ve=i),o.from==t&&(o.from!=o.to&&'before'!=n?r=i:Ve=i)}return null!=r?r:Ve}var je,Xe,Ye,_e,qe,$e=(je=/[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/,Xe=/[stwN]/,Ye=/[LRr]/,_e=/[Lb1n]/,qe=/[1n]/,function(e,t){var n='ltr'==t?'L':'R';if(0==e.length||'ltr'==t&&!je.test(e))return!1;for(var r,i=e.length,o=[],l=0;l<i;++l)o.push((r=e.charCodeAt(l))<=247?'bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN'.charAt(r):1424<=r&&r<=1524?'R':1536<=r&&r<=1785?'nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111'.charAt(r-1536):1774<=r&&r<=2220?'r':8192<=r&&r<=8203?'w':8204==r?'b':'L');for(var s=0,a=n;s<i;++s){var u=o[s];'m'==u?o[s]=a:a=u}for(var c=0,h=n;c<i;++c){var d=o[c];'1'==d&&'r'==h?o[c]='n':Ye.test(d)&&('r'==(h=d)&&(o[c]='R'))}for(var f=1,p=o[0];f<i-1;++f){var g=o[f];'+'==g&&'1'==p&&'1'==o[f+1]?o[f]='1':','!=g||p!=o[f+1]||'1'!=p&&'n'!=p||(o[f]=p),p=g}for(var m=0;m<i;++m){var v=o[m];if(','==v)o[m]='N';else if('%'==v){for(var y=void 0,y=m+1;y<i&&'%'==o[y];++y);for(var b=m&&'!'==o[m-1]||y<i&&'1'==o[y]?'1':'N',w=m;w<y;++w)o[w]=b;m=y-1}}for(var x=0,C=n;x<i;++x){var S=o[x];'L'==C&&'1'==S?o[x]='L':Ye.test(S)&&(C=S)}for(var L=0;L<i;++L)if(Xe.test(o[L])){for(var k=void 0,k=L+1;k<i&&Xe.test(o[k]);++k);for(var T='L'==(L?o[L-1]:n),M=T==('L'==(k<i?o[k]:n))?T?'L':'R':n,N=L;N<k;++N)o[N]=M;L=k-1}for(var O,A=[],W=0;W<i;)if(_e.test(o[W])){var D=W;for(++W;W<i&&_e.test(o[W]);++W);A.push(new Ze(0,D,W))}else{var H=W,F=A.length;for(++W;W<i&&'L'!=o[W];++W);for(var P=H;P<W;)if(qe.test(o[P])){H<P&&A.splice(F,0,new Ze(1,H,P));var E=P;for(++P;P<W&&qe.test(o[P]);++P);A.splice(F,0,new Ze(2,E,P)),H=P}else++P;H<W&&A.splice(F,0,new Ze(1,H,W))}return'ltr'==t&&(1==A[0].level&&(O=e.match(/^\\s+/))&&(A[0].from=O[0].length,A.unshift(new Ze(0,0,O[0].length))),1==X(A).level&&(O=e.match(/\\s+$/))&&(X(A).to-=O[0].length,A.push(new Ze(0,i-O[0].length,i)))),'rtl'==t?A.reverse():A});function Ze(e,t,n){this.level=e,this.from=t,this.to=n}function Qe(e,t){var n=e.order;return null==n&&(n=e.order=$e(e.text,t)),n}var Je=[],et=function(e,t,n){e.addEventListener?e.addEventListener(t,n,!1):e.attachEvent?e.attachEvent('on'+t,n):(e=e._handlers||(e._handlers={}))[t]=(e[t]||Je).concat(n)};function tt(e,t){return e._handlers&&e._handlers[t]||Je}function nt(e,t,n){var r;e.removeEventListener?e.removeEventListener(t,n,!1):e.detachEvent?e.detachEvent('on'+t,n):!(e=(r=e._handlers)&&r[t])||-1<(n=z(e,n))&&(r[t]=e.slice(0,n).concat(e.slice(n+1)))}function rt(e,t){var n=tt(e,t);if(n.length)for(var r=Array.prototype.slice.call(arguments,2),i=0;i<n.length;++i)n[i].apply(null,r)}function it(e,t,n){return'string'==typeof t&&(t={type:t,preventDefault:function(){this.defaultPrevented=!0}}),rt(e,n||t.type,e,t),ct(t)||t.codemirrorIgnore}function ot(e){var t=e._handlers&&e._handlers.cursorActivity;if(t)for(var n=e.curOp.cursorActivityHandlers||(e.curOp.cursorActivityHandlers=[]),r=0;r<t.length;++r)-1==z(n,t[r])&&n.push(t[r])}function lt(e,t){return 0<tt(e,t).length}function st(e){e.prototype.on=function(e,t){et(this,e,t)},e.prototype.off=function(e,t){nt(this,e,t)}}function at(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function ut(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function ct(e){return null!=e.defaultPrevented?e.defaultPrevented:0==e.returnValue}function ht(e){at(e),ut(e)}function dt(e){return e.target||e.srcElement}function ft(e){var t=e.which;return null==t&&(1&e.button?t=1:2&e.button?t=3:4&e.button&&(t=2)),C&&e.ctrlKey&&1==t&&(t=3),t}var pt,gt,mt=function(){if(b&&w<9)return!1;var e=M('div');return'draggable'in e||'dragDrop'in e}();var vt=3!='\\n\\nb'.split(/\\n/).length?function(e){for(var t=0,n=[],r=e.length;t<=r;){var i=e.indexOf('\\n',t);-1==i&&(i=e.length);var o=e.slice(t,'\\r'==e.charAt(i-1)?i-1:i),l=o.indexOf('\\r');-1!=l?(n.push(o.slice(0,l)),t+=l+1):(n.push(o),t=i+1)}return n}:function(e){return e.split(/\\r\\n?|\\n/)},yt=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch(e){return!1}}:function(e){var t;try{t=e.ownerDocument.selection.createRange()}catch(e){}return!(!t||t.parentElement()!=e)&&0!=t.compareEndPoints('StartToEnd',t)},bt='oncopy'in(r=M('div'))||(r.setAttribute('oncopy','return;'),'function'==typeof r.oncopy),wt=null,xt={},Ct={};function St(e){if('string'==typeof e&&Ct.hasOwnProperty(e))e=Ct[e];else if(e&&'string'==typeof e.name&&Ct.hasOwnProperty(e.name)){var t=Ct[e.name];'string'==typeof t&&(t={name:t}),(e=q(t,e)).name=t.name}else{if('string'==typeof e&&/^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(e))return St('application/xml');if('string'==typeof e&&/^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(e))return St('application/json')}return'string'==typeof e?{name:e}:e||{name:'null'}}function Lt(e,t){t=St(t);var n=xt[t.name];if(!n)return Lt(e,'text/plain');var r=n(e,t);if(kt.hasOwnProperty(t.name)){var i,o=kt[t.name];for(i in o)o.hasOwnProperty(i)&&(r.hasOwnProperty(i)&&(r['_'+i]=r[i]),r[i]=o[i])}if(r.name=t.name,t.helperType&&(r.helperType=t.helperType),t.modeProps)for(var l in t.modeProps)r[l]=t.modeProps[l];return r}var kt={};function Tt(e,t){if(!0===t)return t;if(e.copyState)return e.copyState(t);var n,r={};for(n in t){var i=t[n];i instanceof Array&&(i=i.concat([])),r[n]=i}return r}function Mt(e,t){for(var n;e.innerMode&&(n=e.innerMode(t))&&n.mode!=e;)t=n.state,e=n.mode;return n||{mode:e,state:t}}function Nt(e,t,n){return!e.startState||e.startState(t,n)}var Ot=function(e,t,n){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=n};Ot.prototype.eol=function(){return this.pos>=this.string.length},Ot.prototype.sol=function(){return this.pos==this.lineStart},Ot.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},Ot.prototype.next=function(){if(this.pos<this.string.length)return this.string.charAt(this.pos++)},Ot.prototype.eat=function(e){var t=this.string.charAt(this.pos);if('string'==typeof e?t==e:t&&(e.test?e.test(t):e(t)))return++this.pos,t},Ot.prototype.eatWhile=function(e){for(var t=this.pos;this.eat(e););return this.pos>t},Ot.prototype.eatSpace=function(){for(var e=this.pos;/[\\s\\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},Ot.prototype.skipToEnd=function(){this.pos=this.string.length},Ot.prototype.skipTo=function(e){e=this.string.indexOf(e,this.pos);if(-1<e)return this.pos=e,!0},Ot.prototype.backUp=function(e){this.pos-=e},Ot.prototype.column=function(){return this.lastColumnPos<this.start&&(this.lastColumnValue=P(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue),this.lastColumnPos=this.start),this.lastColumnValue-(this.lineStart?P(this.string,this.lineStart,this.tabSize):0)},Ot.prototype.indentation=function(){return P(this.string,null,this.tabSize)-(this.lineStart?P(this.string,this.lineStart,this.tabSize):0)},Ot.prototype.match=function(e,t,n){if('string'!=typeof e){var r=this.string.slice(this.pos).match(e);return r&&0<r.index?null:(r&&!1!==t&&(this.pos+=r[0].length),r)}r=function(e){return n?e.toLowerCase():e};if(r(this.string.substr(this.pos,e.length))==r(e))return!1!==t&&(this.pos+=e.length),!0},Ot.prototype.current=function(){return this.string.slice(this.start,this.pos)},Ot.prototype.hideFirstChars=function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}},Ot.prototype.lookAhead=function(e){var t=this.lineOracle;return t&&t.lookAhead(e)},Ot.prototype.baseToken=function(){var e=this.lineOracle;return e&&e.baseToken(this.pos)};var At=function(e,t){this.state=e,this.lookAhead=t},Wt=function(e,t,n,r){this.state=t,this.doc=e,this.line=n,this.maxLookAhead=r||0,this.baseTokens=null,this.baseTokenPos=1};function Dt(t,n,r,e){var a=[t.state.modeGen],i={};Gt(t,n.text,t.doc.mode,r,function(e,t){return a.push(e,t)},i,e);for(var u=r.state,o=0;o<t.state.overlays.length;++o)!function(e){r.baseTokens=a;var o=t.state.overlays[e],l=1,s=0;r.state=!0,Gt(t,n.text,o.mode,r,function(e,t){for(var n=l;s<e;){var r=a[l];e<r&&a.splice(l,1,e,a[l+1],r),l+=2,s=Math.min(e,r)}if(t)if(o.opaque)a.splice(n,l-n,e,'overlay '+t),l=n+2;else for(;n<l;n+=2){var i=a[n+1];a[n+1]=(i?i+' ':'')+'overlay '+t}},i),r.state=u,r.baseTokens=null,r.baseTokenPos=1}(o);return{styles:a,classes:i.bgClass||i.textClass?i:null}}function Ht(e,t,n){var r,i,o;return t.styles&&t.styles[0]==e.state.modeGen||(r=Ft(e,ae(t)),i=t.text.length>e.options.maxHighlightLength&&Tt(e.doc.mode,r.state),o=Dt(e,t,r),i&&(r.state=i),t.stateAfter=r.save(!i),t.styles=o.styles,o.classes?t.styleClasses=o.classes:t.styleClasses&&(t.styleClasses=null),n===e.doc.highlightFrontier&&(e.doc.modeFrontier=Math.max(e.doc.modeFrontier,++e.doc.highlightFrontier))),t.styles}function Ft(n,u,e){var t=n.doc,r=n.display;if(!t.mode.startState)return new Wt(t,!0,u);var i=function(e,t){for(var n,r,i=e.doc,o=t?-1:u-(e.doc.mode.innerMode?1e3:100),l=u;o<l;--l){if(l<=i.first)return i.first;var s=ie(i,l-1),a=s.stateAfter;if(a&&(!t||l+(a instanceof At?a.lookAhead:0)<=i.modeFrontier))return l;s=P(s.text,null,e.options.tabSize);(null==r||s<n)&&(r=l-1,n=s)}return r}(n,e),o=i>t.first&&ie(t,i-1).stateAfter,l=o?Wt.fromSaved(t,o,i):new Wt(t,Nt(t.mode),i);return t.iter(i,u,function(e){Pt(n,e.text,l);var t=l.line;e.stateAfter=t==u-1||t%5==0||t>=r.viewFrom&&t<r.viewTo?l.save():null,l.nextLine()}),e&&(t.modeFrontier=l.line),l}function Pt(e,t,n,r){var i=e.doc.mode,o=new Ot(t,e.options.tabSize,n);for(o.start=o.pos=r||0,''==t&&Et(i,n.state);!o.eol();)zt(i,o,n.state),o.start=o.pos}function Et(e,t){if(e.blankLine)return e.blankLine(t);if(e.innerMode){t=Mt(e,t);return t.mode.blankLine?t.mode.blankLine(t.state):void 0}}function zt(e,t,n,r){for(var i=0;i<10;i++){r&&(r[0]=Mt(e,n).mode);var o=e.token(t,n);if(t.pos>t.start)return o}throw new Error('Mode '+e.name+' failed to advance stream.')}Wt.prototype.lookAhead=function(e){var t=this.doc.getLine(this.line+e);return null!=t&&e>this.maxLookAhead&&(this.maxLookAhead=e),t},Wt.prototype.baseToken=function(e){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=e;)this.baseTokenPos+=2;var t=this.baseTokens[this.baseTokenPos+1];return{type:t&&t.replace(/( |^)overlay .*/,''),size:this.baseTokens[this.baseTokenPos]-e}},Wt.prototype.nextLine=function(){this.line++,0<this.maxLookAhead&&this.maxLookAhead--},Wt.fromSaved=function(e,t,n){return t instanceof At?new Wt(e,Tt(e.mode,t.state),n,t.lookAhead):new Wt(e,Tt(e.mode,t),n)},Wt.prototype.save=function(e){e=!1!==e?Tt(this.doc.mode,this.state):this.state;return 0<this.maxLookAhead?new At(e,this.maxLookAhead):e};function It(e,t,n){this.start=e.start,this.end=e.pos,this.string=e.current(),this.type=t||null,this.state=n}function Rt(e,t,n,r){var i,o,l=e.doc,s=l.mode,a=ie(l,(t=be(l,t)).line),u=Ft(e,t.line,n),c=new Ot(a.text,e.options.tabSize,u);for(r&&(o=[]);(r||c.pos<t.ch)&&!c.eol();)c.start=c.pos,i=zt(s,c,u.state),r&&o.push(new It(c,i,Tt(l.mode,u.state)));return r?o:new It(c,i,u.state)}function Bt(e,t){if(e)for(;;){var n=e.match(/(?:^|\\s+)line-(background-)?(\\S+)/);if(!n)break;e=e.slice(0,n.index)+e.slice(n.index+n[0].length);var r=n[1]?'bgClass':'textClass';null==t[r]?t[r]=n[2]:new RegExp('(?:^|s)'+n[2]+'(?:$|s)').test(t[r])||(t[r]+=' '+n[2])}return e}function Gt(e,t,n,r,i,o,l){var s=n.flattenSpans;null==s&&(s=e.options.flattenSpans);var a=0,u=null,c=new Ot(t,e.options.tabSize,r),h=e.options.addModeClass&&[null];for(''==t&&Bt(Et(n,r.state),o);!c.eol();){var d,f=c.pos>e.options.maxHighlightLength?(s=!1,l&&Pt(e,t,r,c.pos),c.pos=t.length,null):Bt(zt(n,c,r.state,h),o);if(h&&(d=h[0].name)&&(f='m-'+(f?d+' '+f:d)),!s||u!=f){for(;a<c.start;)i(a=Math.min(c.start,a+5e3),u);u=f}c.start=c.pos}for(;a<c.pos;){var p=Math.min(c.pos,a+5e3);i(p,u),a=p}}var Ut=function(e,t,n){this.text=e,Ne(this,t),this.height=n?n(this):1};Ut.prototype.lineNo=function(){return ae(this)},st(Ut);var Vt={},Kt={};function jt(e,t){if(!e||/^\\s*$/.test(e))return null;t=t.addModeClass?Kt:Vt;return t[e]||(t[e]=e.replace(/\\S+/g,'cm-$&'))}function Xt(e,t){var n=T('span',null,null,x?'padding-right: .1px':null),r={pre:T('pre',[n],'CodeMirror-line'),content:n,col:0,pos:0,cm:e,trailingSpace:!1,splitSpaces:(b||x)&&e.getOption('lineWrapping')};t.measure={};for(var i=0;i<=(t.rest?t.rest.length:0);i++){var o=i?t.rest[i-1]:t.line,l=void 0;r.pos=0,r.addToken=_t,function(e){if(null!=gt)return gt;var t=k(e,document.createTextNode('AخA')),n=y(t,0,1).getBoundingClientRect(),t=y(t,1,2).getBoundingClientRect();return L(e),n&&n.left!=n.right&&(gt=t.right-n.right<3)}(e.display.measure)&&(l=Qe(o,e.doc.direction))&&(r.addToken=function(h,d){return function(e,t,n,r,i,o,l){n=n?n+' cm-force-border':'cm-force-border';for(var s=e.pos,a=s+t.length;;){for(var u=void 0,c=0;c<d.length&&!((u=d[c]).to>s&&u.from<=s);c++);if(u.to>=a)return h(e,t,n,r,i,o,l);h(e,t.slice(0,u.to-s),n,r,null,o,l),r=null,t=t.slice(u.to-s),s=u.to}}}(r.addToken,l)),r.map=[],function(e,t,n){var r=e.markedSpans,i=e.text,o=0;if(r)for(var l,s,a,u,c,h,d,f=i.length,p=0,g=1,m='',v=0;;){if(v==p){a=u=c=h=s='',d=null,v=1/0;for(var y=[],b=void 0,w=0;w<r.length;++w){var x=r[w],C=x.marker;'bookmark'==C.type&&x.from==p&&C.widgetNode?y.push(C):x.from<=p&&(null==x.to||x.to>p||C.collapsed&&x.to==p&&x.from==p)?(null!=x.to&&x.to!=p&&v>x.to&&(v=x.to,u=''),C.className&&(a+=' '+C.className),C.css&&(s=(s?s+';':'')+C.css),C.startStyle&&x.from==p&&(c+=' '+C.startStyle),C.endStyle&&x.to==v&&(b=b||[]).push(C.endStyle,x.to),C.title&&!h&&(h=C.title),C.collapsed&&(!d||We(d.marker,C)<0)&&(d=x)):x.from>p&&v>x.from&&(v=x.from)}if(b)for(var S=0;S<b.length;S+=2)b[S+1]==v&&(u+=' '+b[S]);if(!d||d.from==p)for(var L=0;L<y.length;++L)qt(t,0,y[L]);if(d&&(d.from||0)==p){if(qt(t,(null==d.to?f+1:d.to)-p,d.marker,null==d.from),null==d.to)return;d.to==p&&(d=!1)}}if(f<=p)break;for(var k=Math.min(f,v);;){if(m){var T,M=p+m.length;if(d||(T=k<M?m.slice(0,k-p):m,t.addToken(t,T,l?l+a:a,c,p+T.length==v?u:'',h,s)),k<=M){m=m.slice(k-p),p=k;break}p=M,c=''}m=i.slice(o,o=n[g++]),l=jt(n[g++],t.cm.options)}}else for(var N=1;N<n.length;N+=2)t.addToken(t,i.slice(o,o=n[N]),jt(n[N+1],t.cm.options))}(o,r,Ht(e,o,t!=e.display.externalMeasured&&ae(o))),o.styleClasses&&(o.styleClasses.bgClass&&(r.bgClass=W(o.styleClasses.bgClass,r.bgClass||'')),o.styleClasses.textClass&&(r.textClass=W(o.styleClasses.textClass,r.textClass||''))),0==r.map.length&&r.map.push(0,0,r.content.appendChild(function(e){null==pt&&(t=M('span',''),k(e,M('span',[t,document.createTextNode('x')])),0!=e.firstChild.offsetHeight&&(pt=t.offsetWidth<=1&&2<t.offsetHeight&&!(b&&w<8)));var t=pt?M('span',''):M('span',' ',null,'display: inline-block; width: 1px; margin-right: -1px');return t.setAttribute('cm-text',''),t}(e.display.measure))),0==i?(t.measure.map=r.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(r.map),(t.measure.caches||(t.measure.caches=[])).push({}))}return x&&(n=r.content.lastChild,(/\\bcm-tab\\b/.test(n.className)||n.querySelector&&n.querySelector('.cm-tab'))&&(r.content.className='cm-tab-wrap-hack')),rt(e,'renderLine',e,t.line,r.pre),r.pre.className&&(r.textClass=W(r.pre.className,r.textClass||'')),r}function Yt(e){var t=M('span','•','cm-invalidchar');return t.title='\\\\u'+e.charCodeAt(0).toString(16),t.setAttribute('aria-label',t.title),t}function _t(e,t,n,r,i,o,l){if(t){var s,a=e.splitSpaces?function(e,t){if(1<e.length&&!/ /.test(e))return e;for(var n=t,r='',i=0;i<e.length;i++){var o=e.charAt(i);' '!=o||!n||i!=e.length-1&&32!=e.charCodeAt(i+1)||(o=' '),r+=o,n=' '==o}return r}(t,e.trailingSpace):t,u=e.cm.state.specialChars,c=!1;if(u.test(t)){s=document.createDocumentFragment();for(var h=0;;){u.lastIndex=h;var d=u.exec(t),f=d?d.index-h:t.length-h;if(f&&(p=document.createTextNode(a.slice(h,h+f)),b&&w<9?s.appendChild(M('span',[p])):s.appendChild(p),e.map.push(e.pos,e.pos+f,p),e.col+=f,e.pos+=f),!d)break;h+=1+f;var p=void 0;'\\t'==d[0]?(f=(f=e.cm.options.tabSize)-e.col%f,(p=s.appendChild(M('span',j(f),'cm-tab'))).setAttribute('role','presentation'),p.setAttribute('cm-text','\\t'),e.col+=f):('\\r'==d[0]||'\\n'==d[0]?(p=s.appendChild(M('span','\\r'==d[0]?'␍':'','cm-invalidchar'))).setAttribute('cm-text',d[0]):((p=e.cm.options.specialCharPlaceholder(d[0])).setAttribute('cm-text',d[0]),b&&w<9?s.appendChild(M('span',[p])):s.appendChild(p)),e.col+=1),e.map.push(e.pos,e.pos+1,p),e.pos++}}else e.col+=t.length,s=document.createTextNode(a),e.map.push(e.pos,e.pos+t.length,s),b&&w<9&&(c=!0),e.pos+=t.length;if(e.trailingSpace=32==a.charCodeAt(t.length-1),n||r||i||c||l){n=n||'';r&&(n+=r),i&&(n+=i);l=M('span',[s],n,l);return o&&(l.title=o),e.content.appendChild(l)}e.content.appendChild(s)}}function qt(e,t,n,r){var i=!r&&n.widgetNode;i&&e.map.push(e.pos,e.pos+t,i),!r&&e.cm.display.input.needsContentAttribute&&(i=i||e.content.appendChild(document.createElement('span'))).setAttribute('cm-marker',n.id),i&&(e.cm.display.input.setUneditable(i),e.content.appendChild(i)),e.pos+=t,e.trailingSpace=!1}function $t(e,t,n){this.line=t,this.rest=function(e){for(var t,n;t=Fe(e);)e=t.find(1,!0).line,(n=n||[]).push(e);return n}(t),this.size=this.rest?ae(X(this.rest))-n+1:1,this.node=this.text=null,this.hidden=Re(e,t)}function Zt(e,t,n){for(var r=[],i=t;i<n;i=l){var o=new $t(e.doc,ie(e.doc,i),i),l=i+o.size;r.push(o)}return r}var Qt=null,Jt=null;function en(e,t){var n=tt(e,t);if(n.length){var r,i=Array.prototype.slice.call(arguments,2);Qt?r=Qt.delayedCallbacks:Jt?r=Jt:(r=Jt=[],setTimeout(tn,0));for(var o=0;o<n.length;++o)!function(e){r.push(function(){return n[e].apply(null,i)})}(o)}}function tn(){var e=Jt;Jt=null;for(var t=0;t<e.length;++t)e[t]()}function nn(e,t,n,r){for(var i,o,l,s,a=0;a<t.changes.length;a++){var u=t.changes[a];'text'==u?(i=e,s=l=void 0,l=(o=t).text.className,s=on(i,o),o.text==o.node&&(o.node=s.pre),o.text.parentNode.replaceChild(s.pre,o.text),o.text=s.pre,s.bgClass!=o.bgClass||s.textClass!=o.textClass?(o.bgClass=s.bgClass,o.textClass=s.textClass,ln(i,o)):l&&(o.text.className=l)):'gutter'==u?sn(e,t,n,r):'class'==u?ln(e,t):'widget'==u&&function(e,t,n){t.alignable&&(t.alignable=null);for(var r=t.node.firstChild,i=void 0;r;r=i)i=r.nextSibling,'CodeMirror-linewidget'==r.className&&t.node.removeChild(r);an(e,t,n)}(e,t,r)}t.changes=null}function rn(e){return e.node==e.text&&(e.node=M('div',null,null,'position: relative'),e.text.parentNode&&e.text.parentNode.replaceChild(e.node,e.text),e.node.appendChild(e.text),b&&w<8&&(e.node.style.zIndex=2)),e.node}function on(e,t){var n=e.display.externalMeasured;return n&&n.line==t.line?(e.display.externalMeasured=null,t.measure=n.measure,n.built):Xt(e,t)}function ln(e,t){var n,r;n=e,(r=(i=t).bgClass?i.bgClass+' '+(i.line.bgClass||''):i.line.bgClass)&&(r+=' CodeMirror-linebackground'),i.background?r?i.background.className=r:(i.background.parentNode.removeChild(i.background),i.background=null):r&&(e=rn(i),i.background=e.insertBefore(M('div',null,r),e.firstChild),n.display.input.setUneditable(i.background)),t.line.wrapClass?rn(t).className=t.line.wrapClass:t.node!=t.text&&(t.node.className='');var i=t.textClass?t.textClass+' '+(t.line.textClass||''):t.line.textClass;t.text.className=i||''}function sn(e,t,n,r){t.gutter&&(t.node.removeChild(t.gutter),t.gutter=null),t.gutterBackground&&(t.node.removeChild(t.gutterBackground),t.gutterBackground=null),t.line.gutterClass&&(o=rn(t),t.gutterBackground=M('div',null,'CodeMirror-gutter-background '+t.line.gutterClass,'left: '+(e.options.fixedGutter?r.fixedPos:-r.gutterTotalWidth)+'px; width: '+r.gutterTotalWidth+'px'),e.display.input.setUneditable(t.gutterBackground),o.insertBefore(t.gutterBackground,t.text));var i=t.line.gutterMarkers;if(e.options.lineNumbers||i){var o=rn(t),l=t.gutter=M('div',null,'CodeMirror-gutter-wrapper','left: '+(e.options.fixedGutter?r.fixedPos:-r.gutterTotalWidth)+'px');if(e.display.input.setUneditable(l),o.insertBefore(l,t.text),t.line.gutterClass&&(l.className+=' '+t.line.gutterClass),!e.options.lineNumbers||i&&i['CodeMirror-linenumbers']||(t.lineNumber=l.appendChild(M('div',he(e.options,n),'CodeMirror-linenumber CodeMirror-gutter-elt','left: '+r.gutterLeft['CodeMirror-linenumbers']+'px; width: '+e.display.lineNumInnerWidth+'px'))),i)for(var s=0;s<e.options.gutters.length;++s){var a=e.options.gutters[s],u=i.hasOwnProperty(a)&&i[a];u&&l.appendChild(M('div',[u],'CodeMirror-gutter-elt','left: '+r.gutterLeft[a]+'px; width: '+r.gutterWidth[a]+'px'))}}}function an(e,t,n){if(un(e,t.line,t,n,!0),t.rest)for(var r=0;r<t.rest.length;r++)un(e,t.rest[r],t,n,!1)}function un(e,t,n,r,i){if(t.widgets)for(var o=rn(n),l=0,s=t.widgets;l<s.length;++l){var a=s[l],u=M('div',[a.node],'CodeMirror-linewidget');a.handleMouseEvents||u.setAttribute('cm-ignore-events','true'),h=u,d=n,f=r,(c=a).noHScroll&&((d.alignable||(d.alignable=[])).push(h),d=f.wrapperWidth,h.style.left=f.fixedPos+'px',c.coverGutter||(d-=f.gutterTotalWidth,h.style.paddingLeft=f.gutterTotalWidth+'px'),h.style.width=d+'px'),c.coverGutter&&(h.style.zIndex=5,h.style.position='relative',c.noHScroll||(h.style.marginLeft=-f.gutterTotalWidth+'px')),e.display.input.setUneditable(u),i&&a.above?o.insertBefore(u,n.gutter||n.text):o.appendChild(u),en(a,'redraw')}var c,h,d,f}function cn(e){if(null!=e.height)return e.height;var t,n=e.doc.cm;return n?(N(document.body,e.node)||(t='position: relative;',e.coverGutter&&(t+='margin-left: -'+n.display.gutters.offsetWidth+'px;'),e.noHScroll&&(t+='width: '+n.display.wrapper.clientWidth+'px;'),k(n.display.measure,M('div',[e.node],null,t))),e.height=e.node.parentNode.offsetHeight):0}function hn(e,t){for(var n=dt(t);n!=e.wrapper;n=n.parentNode)if(!n||1==n.nodeType&&'true'==n.getAttribute('cm-ignore-events')||n.parentNode==e.sizer&&n!=e.mover)return 1}function dn(e){return e.lineSpace.offsetTop}function fn(e){return e.mover.offsetHeight-e.lineSpace.offsetHeight}function pn(e){if(e.cachedPaddingH)return e.cachedPaddingH;var t=k(e.measure,M('pre','x')),t=window.getComputedStyle?window.getComputedStyle(t):t.currentStyle,t={left:parseInt(t.paddingLeft),right:parseInt(t.paddingRight)};return isNaN(t.left)||isNaN(t.right)||(e.cachedPaddingH=t),t}function gn(e){return I-e.display.nativeBarWidth}function mn(e){return e.display.scroller.clientWidth-gn(e)-e.display.barWidth}function vn(e){return e.display.scroller.clientHeight-gn(e)-e.display.barHeight}function yn(e,t,n){if(e.line==t)return{map:e.measure.map,cache:e.measure.cache};for(var r=0;r<e.rest.length;r++)if(e.rest[r]==t)return{map:e.measure.maps[r],cache:e.measure.caches[r]};for(var i=0;i<e.rest.length;i++)if(ae(e.rest[i])>n)return{map:e.measure.maps[i],cache:e.measure.caches[i],before:!0}}function bn(e,t,n,r){return Cn(e,xn(e,t),n,r)}function wn(e,t){if(t>=e.display.viewFrom&&t<e.display.viewTo)return e.display.view[qn(e,t)];e=e.display.externalMeasured;return e&&t>=e.lineN&&t<e.lineN+e.size?e:void 0}function xn(e,t){var n=ae(t),r=wn(e,n);r&&!r.text?r=null:r&&r.changes&&(nn(e,r,n,Kn(e)),e.curOp.forceUpdate=!0);n=yn(r=r||function(e,t){var n=ae(t=Ee(t)),t=e.display.externalMeasured=new $t(e.doc,t,n);t.lineN=n;n=t.built=Xt(e,t);return t.text=n.pre,k(e.display.lineMeasure,n.pre),t}(e,t),t,n);return{line:t,view:r,rect:null,map:n.map,cache:n.cache,before:n.before,hasHeights:!1}}function Cn(u,e,v,t,n){e.before&&(v=-1);var r,i=v+(t||'');return e.cache.hasOwnProperty(i)?r=e.cache[i]:(e.rect||(e.rect=e.view.text.getBoundingClientRect()),e.hasHeights||(function(e,t){var n=u.options.lineWrapping,r=n&&mn(u);if(!e.measure.heights||n&&e.measure.width!=r){var i=e.measure.heights=[];if(n){e.measure.width=r;for(var o=e.text.firstChild.getClientRects(),l=0;l<o.length-1;l++){var s=o[l],a=o[l+1];2<Math.abs(s.bottom-a.bottom)&&i.push((s.bottom+a.top)/2-t.top)}}i.push(t.bottom-t.top)}}(e.view,e.rect),e.hasHeights=!0),(r=function(e,t,n){var r,i=kn(t.map,v,n),o=i.node,l=i.start,s=i.end,a=i.collapse;if(3==o.nodeType){for(var u=0;u<4;u++){for(;l&&te(t.line.text.charAt(i.coverStart+l));)--l;for(;i.coverStart+s<i.coverEnd&&te(t.line.text.charAt(i.coverStart+s));)++s;if((r=b&&w<9&&0==l&&s==i.coverEnd-i.coverStart?o.parentNode.getBoundingClientRect():function(e,t){var n=Ln;if('left'==t)for(var r=0;r<e.length&&(n=e[r]).left==n.right;r++);else for(var i=e.length-1;0<=i&&(n=e[i]).left==n.right;i--);return n}(y(o,l,s).getClientRects(),n)).left||r.right||0==l)break;s=l,--l,a='right'}b&&w<11&&(r=function(n,e){if(!window.screen||null==screen.logicalXDPI||screen.logicalXDPI==screen.deviceXDPI||!function(){if(null!=wt)return wt;var e=k(n,M('span','x')),t=e.getBoundingClientRect(),e=y(e,0,1).getBoundingClientRect();return wt=1<Math.abs(t.left-e.left)}())return e;var t=screen.logicalXDPI/screen.deviceXDPI,r=screen.logicalYDPI/screen.deviceYDPI;return{left:e.left*t,right:e.right*t,top:e.top*r,bottom:e.bottom*r}}(e.display.measure,r))}else 0<l&&(a=n='right'),r=e.options.lineWrapping&&1<(g=o.getClientRects()).length?g['right'==n?g.length-1:0]:o.getBoundingClientRect();!(b&&w<9)||l||r&&(r.left||r.right)||(r=(m=o.parentNode.getClientRects()[0])?{left:m.left,right:m.left+Vn(e.display),top:m.top,bottom:m.bottom}:Ln);for(var c=r.top-t.rect.top,h=r.bottom-t.rect.top,d=(c+h)/2,f=t.view.measure.heights,p=0;p<f.length-1&&!(d<f[p]);p++);var g=p?f[p-1]:0,m=f[p],m={left:('right'==a?r.right:r.left)-t.rect.left,right:('left'==a?r.left:r.right)-t.rect.left,top:g,bottom:m};return r.left||r.right||(m.bogus=!0),e.options.singleCursorHeightPerLine||(m.rtop=c,m.rbottom=h),m}(u,e,t)).bogus||(e.cache[i]=r)),{left:r.left,right:r.right,top:n?r.rtop:r.top,bottom:n?r.rbottom:r.bottom}}var Sn,Ln={left:0,right:0,top:0,bottom:0};function kn(e,t,n){for(var r,i,o,l,s,a,u=0;u<e.length;u+=3)if(s=e[u],a=e[u+1],t<s?(i=0,o=1,l='left'):t<a?o=1+(i=t-s):(u==e.length-3||t==a&&e[u+3]>t)&&(i=(o=a-s)-1,a<=t&&(l='right')),null!=i){if(r=e[u+2],s==a&&n==(r.insertLeft?'left':'right')&&(l=n),'left'==n&&0==i)for(;u&&e[u-2]==e[u-3]&&e[u-1].insertLeft;)r=e[2+(u-=3)],l='left';if('right'==n&&i==a-s)for(;u<e.length-3&&e[u+3]==e[u+4]&&!e[u+5].insertLeft;)r=e[(u+=3)+2],l='right';break}return{node:r,start:i,end:o,collapse:l,coverStart:s,coverEnd:a}}function Tn(e){if(e.measure&&(e.measure.cache={},e.measure.heights=null,e.rest))for(var t=0;t<e.rest.length;t++)e.measure.caches[t]={}}function Mn(e){e.display.externalMeasure=null,L(e.display.lineMeasure);for(var t=0;t<e.display.view.length;t++)Tn(e.display.view[t])}function Nn(e){Mn(e),e.display.cachedCharWidth=e.display.cachedTextHeight=e.display.cachedPaddingH=null,e.options.lineWrapping||(e.display.maxLineChanged=!0),e.display.lineNumChars=null}function On(){return o&&u?-(document.body.getBoundingClientRect().left-parseInt(getComputedStyle(document.body).marginLeft)):window.pageXOffset||(document.documentElement||document.body).scrollLeft}function An(){return o&&u?-(document.body.getBoundingClientRect().top-parseInt(getComputedStyle(document.body).marginTop)):window.pageYOffset||(document.documentElement||document.body).scrollTop}function Wn(e){var t=0;if(e.widgets)for(var n=0;n<e.widgets.length;++n)e.widgets[n].above&&(t+=cn(e.widgets[n]));return t}function Dn(e,t,n,r,i){if(i||(i=Wn(t),n.top+=i,n.bottom+=i),'line'==r)return n;r=r||'local';t=Be(t);return'local'==r?t+=dn(e.display):t-=e.display.viewOffset,'page'!=r&&'window'!=r||(t+=(e=e.display.lineSpace.getBoundingClientRect()).top+('window'==r?0:An()),r=e.left+('window'==r?0:On()),n.left+=r,n.right+=r),n.top+=t,n.bottom+=t,n}function Hn(e,t,n){if('div'==n)return t;var r=t.left,t=t.top;'page'==n?(r-=On(),t-=An()):'local'!=n&&n||(r+=(n=e.display.sizer.getBoundingClientRect()).left,t+=n.top);e=e.display.lineSpace.getBoundingClientRect();return{left:r-e.left,top:t-e.top}}function Fn(e,t,n,r,i){return Dn(e,r=r||ie(e.doc,t.line),bn(e,r,t.ch,i),n)}function Pn(n,e,r,i,o,l){function s(e,t){e=Cn(n,o,e,t?'right':'left',l);return t?e.left=e.right:e.right=e.left,Dn(n,i,e,r)}i=i||ie(n.doc,e.line),o=o||xn(n,i);var a=Qe(i,n.doc.direction),t=e.ch,u=e.sticky;if(t>=i.text.length?(t=i.text.length,u='before'):t<=0&&(t=0,u='after'),!a)return s('before'==u?t-1:t,'before'==u);function c(e,t,n){return s(n?e-1:e,1==a[t].level!=n)}var h=Ke(a,t,u),e=Ve,h=c(t,h,'before'==u);return null!=e&&(h.other=c(t,e,'before'!=u)),h}function En(e,t){var n=0;t=be(e.doc,t),e.options.lineWrapping||(n=Vn(e.display)*t.ch);t=ie(e.doc,t.line),e=Be(t)+dn(e.display);return{left:n,right:n,top:e,bottom:e+t.height}}function zn(e,t,n,r,i){n=de(e,t,n);return n.xRel=i,r&&(n.outside=!0),n}function In(e,t,n){var r=e.doc;if((n+=e.display.viewOffset)<0)return zn(r.first,0,null,!0,-1);var i=ue(r,n),o=r.first+r.size-1;if(o<i)return zn(r.first+r.size-1,ie(r,o).text.length,null,!0,1);t<0&&(t=0);for(var l=ie(r,i);;){var s=function(n,e,t,r,i){i-=Be(e);var o=xn(n,e),l=Wn(e),s=0,a=e.text.length,u=!0,c=Qe(e,n.doc.direction);c&&(f=(n.options.lineWrapping?function(e,t,n,r,i,o,l){var l=Rn(e,t,r,l),s=l.begin,a=l.end;/\\s/.test(t.text.charAt(a-1))&&a--;for(var u=null,c=null,h=0;h<i.length;h++){var d,f=i[h];f.from>=a||f.to<=s||(d=(d=Cn(e,r,1!=f.level?Math.min(a,f.to)-1:Math.max(s,f.from)).right)<o?o-d+1e9:d-o,(!u||d<c)&&(u=f,c=d))}return(u=u||i[i.length-1]).from<s&&(u={from:s,to:u.to,level:u.level}),u.to>a&&(u={from:u.from,to:a,level:u.level}),u}:function(n,r,i,o,l,s,a){var e,t=re(function(e){var t=l[e],e=1!=t.level;return Gn(Pn(n,de(i,e?t.to:t.from,e?'before':'after'),'line',r,o),s,a,!0)},0,l.length-1),u=l[t];return 0<t&&(e=1!=u.level,Gn(e=Pn(n,de(i,e?u.from:u.to,e?'after':'before'),'line',r,o),s,a,!0)&&e.top>a&&(u=l[t-1])),u})(n,e,t,o,c,r,i),s=(u=1!=f.level)?f.from:f.to-1,a=u?f.to:f.from-1);var h=null,d=null,c=re(function(e){var t=Cn(n,o,e);return t.top+=l,t.bottom+=l,Gn(t,r,i,!1)&&(t.top<=i&&t.left<=r&&(h=e,d=t),1)},s,a),f=!1;{var p,g;d?(p=r-d.left<d.right-r,c=h+((g=p==u)?0:1),g=g?'after':'before',p=p?d.left:d.right):(u||c!=a&&c!=s||c++,g=0==c||c!=e.text.length&&Cn(n,o,c-(u?1:0)).bottom+l<=i==u?'after':'before',u=Pn(n,de(t,c,g),'line',e,o),p=u.left,f=i<u.top||i>=u.bottom)}return zn(t,c=ne(e.text,c,1),g,f,r-p)}(e,l,i,t,n),a=Fe(l),u=a&&a.find(0,!0);if(!a||!(s.ch>u.from.ch||s.ch==u.from.ch&&0<s.xRel))return s;i=ae(l=u.to.line)}}function Rn(t,e,n,r){r-=Wn(e);var i=e.text.length,e=re(function(e){return Cn(t,n,e-1).bottom<=r},i,0);return{begin:e,end:re(function(e){return Cn(t,n,e).top>r},e,i)}}function Bn(e,t,n,r){return Rn(e,t,n=n||xn(e,t),Dn(e,t,Cn(e,n,r),'line').top)}function Gn(e,t,n,r){return!(e.bottom<=n)&&(e.top>n||(r?e.left:e.right)>t)}function Un(e){if(null!=e.cachedTextHeight)return e.cachedTextHeight;if(null==Sn){Sn=M('pre');for(var t=0;t<49;++t)Sn.appendChild(document.createTextNode('x')),Sn.appendChild(M('br'));Sn.appendChild(document.createTextNode('x'))}k(e.measure,Sn);var n=Sn.offsetHeight/50;return 3<n&&(e.cachedTextHeight=n),L(e.measure),n||1}function Vn(e){if(null!=e.cachedCharWidth)return e.cachedCharWidth;var t=M('span','xxxxxxxxxx'),n=M('pre',[t]);k(e.measure,n);t=t.getBoundingClientRect(),t=(t.right-t.left)/10;return 2<t&&(e.cachedCharWidth=t),t||10}function Kn(e){for(var t=e.display,n={},r={},i=t.gutters.clientLeft,o=t.gutters.firstChild,l=0;o;o=o.nextSibling,++l)n[e.options.gutters[l]]=o.offsetLeft+o.clientLeft+i,r[e.options.gutters[l]]=o.clientWidth;return{fixedPos:jn(t),gutterTotalWidth:t.gutters.offsetWidth,gutterLeft:n,gutterWidth:r,wrapperWidth:t.wrapper.clientWidth}}function jn(e){return e.scroller.getBoundingClientRect().left-e.sizer.getBoundingClientRect().left}function Xn(r){var i=Un(r.display),o=r.options.lineWrapping,l=o&&Math.max(5,r.display.scroller.clientWidth/Vn(r.display)-3);return function(e){if(Re(r.doc,e))return 0;var t=0;if(e.widgets)for(var n=0;n<e.widgets.length;n++)e.widgets[n].height&&(t+=e.widgets[n].height);return o?t+(Math.ceil(e.text.length/l)||1)*i:t+i}}function Yn(e){var t=e.doc,n=Xn(e);t.iter(function(e){var t=n(e);t!=e.height&&se(e,t)})}function _n(e,t,n,r){var i=e.display;if(!n&&'true'==dt(t).getAttribute('cm-not-content'))return null;var o,l,s=i.lineSpace.getBoundingClientRect();try{o=t.clientX-s.left,l=t.clientY-s.top}catch(t){return null}var a,i=In(e,o,l);return r&&1==i.xRel&&(a=ie(e.doc,i.line).text).length==i.ch&&(a=P(a,a.length,e.options.tabSize)-a.length,i=de(i.line,Math.max(0,Math.round((o-pn(e.display).left)/Vn(e.display))-a))),i}function qn(e,t){if(t>=e.display.viewTo)return null;if((t-=e.display.viewFrom)<0)return null;for(var n=e.display.view,r=0;r<n.length;r++)if((t-=n[r].size)<0)return r}function $n(e){e.display.input.showSelection(e.display.input.prepareSelection())}function Zn(e,t){void 0===t&&(t=!0);for(var n,r,i=e.doc,o={},l=o.cursors=document.createDocumentFragment(),s=o.selection=document.createDocumentFragment(),a=0;a<i.sel.ranges.length;a++)!t&&a==i.sel.primIndex||(n=i.sel.ranges[a]).from().line>=e.display.viewTo||n.to().line<e.display.viewFrom||(((r=n.empty())||e.options.showCursorWhenSelecting)&&Qn(e,n.head,l),r||function(i,e,t){var n=i.display,o=i.doc,l=document.createDocumentFragment(),r=pn(i.display),S=r.left,L=Math.max(n.sizerWidth,mn(i)-n.sizer.offsetLeft)-r.right,k='ltr'==o.direction;function T(e,t,n,r){t<0&&(t=0),t=Math.round(t),r=Math.round(r),l.appendChild(M('div',null,'CodeMirror-selected','position: absolute; left: '+e+'px;\\n top: '+t+'px; width: '+(null==n?L-e:n)+'px;\\n height: '+(r-t)+'px'))}function s(n,g,m){var v,y,r=ie(o,n),b=r.text.length;function w(e,t){return Fn(i,de(n,e),'div',r,t)}function x(e,t,n){e=Bn(i,r,null,e),t='ltr'==t==('after'==n)?'left':'right';return w('after'==n?e.begin:e.end-(/\\s/.test(r.text.charAt(e.end-1))?2:1),t)[t]}var C=Qe(r,o.direction);return function(e,t,n,r){if(!e)return r(t,n,'ltr',0);for(var i=!1,o=0;o<e.length;++o){var l=e[o];(l.from<n&&l.to>t||t==n&&l.to==t)&&(r(Math.max(l.from,t),Math.min(l.to,n),1==l.level?'rtl':'ltr',o),i=!0)}i||r(t,n,'ltr')}(C,g||0,null==m?b:m,function(e,t,n,r){var i,o,l,s,a='ltr'==n,u=w(e,a?'left':'right'),c=w(t-1,a?'right':'left'),h=null==g&&0==e,d=null==m&&t==b,f=0==r,p=!C||r==C.length-1;c.top-u.top<=3?(i=(k?d:h)&&p,r=(k?h:d)&&f?S:(a?u:c).left,i=i?L:(a?c:u).right,T(r,u.top,i-r,u.bottom)):(n=a?(o=k&&h&&f?S:u.left,l=k?L:x(e,n,'before'),s=k?S:x(t,n,'after'),k&&d&&p?L:c.right):(o=k?x(e,n,'before'):S,l=!k&&h&&f?L:u.right,s=!k&&d&&p?S:c.left,k?x(t,n,'after'):L),T(o,u.top,l-o,u.bottom),u.bottom<c.top&&T(S,u.bottom,null,c.top),T(s,c.top,n-s,c.bottom)),(!v||Jn(u,v)<0)&&(v=u),Jn(c,v)<0&&(v=c),(!y||Jn(u,y)<0)&&(y=u),Jn(c,y)<0&&(y=c)}),{start:v,end:y}}var a=e.from(),n=e.to();a.line==n.line?s(a.line,a.ch,n.ch):(r=ie(o,a.line),e=ie(o,n.line),e=Ee(r)==Ee(e),r=s(a.line,a.ch,e?r.text.length+1:null).end,n=s(n.line,e?0:null,n.ch).start,e&&(r.top<n.top-2?(T(r.right,r.top,null,r.bottom),T(S,n.top,n.left,n.bottom)):T(r.right,r.top,n.left-r.right,r.bottom)),r.bottom<n.top&&T(S,r.bottom,null,n.top)),t.appendChild(l)}(e,n,s));return o}function Qn(e,t,n){var r=Pn(e,t,'div',null,null,!e.options.singleCursorHeightPerLine),t=n.appendChild(M('div',' ','CodeMirror-cursor'));t.style.left=r.left+'px',t.style.top=r.top+'px',t.style.height=Math.max(0,r.bottom-r.top)*e.options.cursorHeight+'px',r.other&&((n=n.appendChild(M('div',' ','CodeMirror-cursor CodeMirror-secondarycursor'))).style.display='',n.style.left=r.other.left+'px',n.style.top=r.other.top+'px',n.style.height=.85*(r.other.bottom-r.other.top)+'px')}function Jn(e,t){return e.top-t.top||e.left-t.left}function er(e){var t,n;e.state.focused&&(t=e.display,clearInterval(t.blinker),n=!0,t.cursorDiv.style.visibility='',0<e.options.cursorBlinkRate?t.blinker=setInterval(function(){return t.cursorDiv.style.visibility=(n=!n)?'':'hidden'},e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility='hidden'))}function tr(e){e.state.focused||(e.display.input.focus(),rr(e))}function nr(e){e.state.delayingBlurEvent=!0,setTimeout(function(){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1,ir(e))},100)}function rr(e,t){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1),'nocursor'!=e.options.readOnly&&(e.state.focused||(rt(e,'focus',e,t),e.state.focused=!0,A(e.display.wrapper,'CodeMirror-focused'),e.curOp||e.display.selForContextMenu==e.doc.sel||(e.display.input.reset(),x&&setTimeout(function(){return e.display.input.reset(!0)},20)),e.display.input.receivedFocus()),er(e))}function ir(e,t){e.state.delayingBlurEvent||(e.state.focused&&(rt(e,'blur',e,t),e.state.focused=!1,v(e.display.wrapper,'CodeMirror-focused')),clearInterval(e.display.blinker),setTimeout(function(){e.state.focused||(e.display.shift=!1)},150))}function or(e){for(var t=e.display,n=t.lineDiv.offsetTop,r=0;r<t.view.length;r++){var i,o=t.view[r],l=void 0;if(!o.hidden){b&&w<8?(l=(i=o.node.offsetTop+o.node.offsetHeight)-n,n=i):l=(s=o.node.getBoundingClientRect()).bottom-s.top;var s=o.line.height-l;if(l<2&&(l=Un(t)),(.005<s||s<-.005)&&(se(o.line,l),lr(o.line),o.rest))for(var a=0;a<o.rest.length;a++)lr(o.rest[a])}}}function lr(e){if(e.widgets)for(var t=0;t<e.widgets.length;++t){var n=e.widgets[t],r=n.node.parentNode;r&&(n.height=r.offsetHeight)}}function sr(e,t,n){var r=n&&null!=n.top?Math.max(0,n.top):e.scroller.scrollTop,r=Math.floor(r-dn(e)),i=n&&null!=n.bottom?n.bottom:r+e.wrapper.clientHeight,o=ue(t,r),r=ue(t,i);return n&&n.ensure&&(i=n.ensure.from.line,n=n.ensure.to.line,i<o?r=ue(t,Be(ie(t,o=i))+e.wrapper.clientHeight):Math.min(n,t.lastLine())>=r&&(o=ue(t,Be(ie(t,n))-e.wrapper.clientHeight),r=n)),{from:o,to:Math.max(r,o+1)}}function ar(e){var t=e.display,n=t.view;if(t.alignWidgets||t.gutters.firstChild&&e.options.fixedGutter){for(var r=jn(t)-t.scroller.scrollLeft+e.doc.scrollLeft,i=t.gutters.offsetWidth,o=r+'px',l=0;l<n.length;l++)if(!n[l].hidden){e.options.fixedGutter&&(n[l].gutter&&(n[l].gutter.style.left=o),n[l].gutterBackground&&(n[l].gutterBackground.style.left=o));var s=n[l].alignable;if(s)for(var a=0;a<s.length;a++)s[a].style.left=o}e.options.fixedGutter&&(t.gutters.style.left=r+i+'px')}}function ur(e){if(e.options.lineNumbers){var t=e.doc,n=he(e.options,t.first+t.size-1),r=e.display;if(n.length!=r.lineNumChars){var i=r.measure.appendChild(M('div',[M('div',n)],'CodeMirror-linenumber CodeMirror-gutter-elt')),t=i.firstChild.offsetWidth,i=i.offsetWidth-t;return r.lineGutter.style.width='',r.lineNumInnerWidth=Math.max(t,r.lineGutter.offsetWidth-i)+1,r.lineNumWidth=r.lineNumInnerWidth+i,r.lineNumChars=r.lineNumInnerWidth?n.length:-1,r.lineGutter.style.width=r.lineNumWidth+'px',Ur(e),1}}}function cr(e,t){var n=e.display,r=Un(e.display);t.top<0&&(t.top=0);var i=(e.curOp&&null!=e.curOp.scrollTop?e.curOp:n.scroller).scrollTop,o=vn(e),l={};t.bottom-t.top>o&&(t.bottom=t.top+o);var s=e.doc.height+fn(n),a=t.top<r,r=t.bottom>s-r;t.top<i?l.scrollTop=a?0:t.top:t.bottom>i+o&&((u=Math.min(t.top,(r?s:t.bottom)-o))!=i&&(l.scrollTop=u));var u=(e.curOp&&null!=e.curOp.scrollLeft?e.curOp:n.scroller).scrollLeft,e=mn(e)-(e.options.fixedGutter?n.gutters.offsetWidth:0),n=t.right-t.left>e;return n&&(t.right=t.left+e),t.left<10?l.scrollLeft=0:t.left<u?l.scrollLeft=Math.max(0,t.left-(n?0:10)):t.right>e+u-3&&(l.scrollLeft=t.right+(n?0:10)-e),l}function hr(e,t){null!=t&&(pr(e),e.curOp.scrollTop=(null==e.curOp.scrollTop?e.doc:e.curOp).scrollTop+t)}function dr(e){pr(e);var t=e.getCursor();e.curOp.scrollToPos={from:t,to:t,margin:e.options.cursorScrollMargin}}function fr(e,t,n){null==t&&null==n||pr(e),null!=t&&(e.curOp.scrollLeft=t),null!=n&&(e.curOp.scrollTop=n)}function pr(e){var t=e.curOp.scrollToPos;t&&(e.curOp.scrollToPos=null,gr(e,En(e,t.from),En(e,t.to),t.margin))}function gr(e,t,n,r){r=cr(e,{left:Math.min(t.left,n.left),top:Math.min(t.top,n.top)-r,right:Math.max(t.right,n.right),bottom:Math.max(t.bottom,n.bottom)+r});fr(e,r.scrollLeft,r.scrollTop)}function mr(e,t){Math.abs(e.doc.scrollTop-t)<2||(d||Gr(e,{top:t}),vr(e,t,!0),d&&Gr(e),Er(e,100))}function vr(e,t,n){t=Math.min(e.display.scroller.scrollHeight-e.display.scroller.clientHeight,t),e.display.scroller.scrollTop==t&&!n||(e.doc.scrollTop=t,e.display.scrollbars.setScrollTop(t),e.display.scroller.scrollTop!=t&&(e.display.scroller.scrollTop=t))}function yr(e,t,n,r){t=Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth),(n?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)<2)&&!r||(e.doc.scrollLeft=t,ar(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbars.setScrollLeft(t))}function br(e){var t=e.display,n=t.gutters.offsetWidth,r=Math.round(e.doc.height+fn(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?n:0,docHeight:r,scrollHeight:r+gn(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:n}}e=function(e,t,n){this.cm=n;var r=this.vert=M('div',[M('div',null,null,'min-width: 1px')],'CodeMirror-vscrollbar'),i=this.horiz=M('div',[M('div',null,null,'height: 100%; min-height: 1px')],'CodeMirror-hscrollbar');e(r),e(i),et(r,'scroll',function(){r.clientHeight&&t(r.scrollTop,'vertical')}),et(i,'scroll',function(){i.clientWidth&&t(i.scrollLeft,'horizontal')}),this.checkedZeroWidth=!1,b&&w<8&&(this.horiz.style.minHeight=this.vert.style.minWidth='18px')};e.prototype.update=function(e){var t,n=e.scrollWidth>e.clientWidth+1,r=e.scrollHeight>e.clientHeight+1,i=e.nativeBarWidth;return r?(this.vert.style.display='block',this.vert.style.bottom=n?i+'px':'0',t=e.viewHeight-(n?i:0),this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+t)+'px'):(this.vert.style.display='',this.vert.firstChild.style.height='0'),n?(this.horiz.style.display='block',this.horiz.style.right=r?i+'px':'0',this.horiz.style.left=e.barLeft+'px',t=e.viewWidth-e.barLeft-(r?i:0),this.horiz.firstChild.style.width=Math.max(0,e.scrollWidth-e.clientWidth+t)+'px'):(this.horiz.style.display='',this.horiz.firstChild.style.width='0'),!this.checkedZeroWidth&&0<e.clientHeight&&(0==i&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:r?i:0,bottom:n?i:0}},e.prototype.setScrollLeft=function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,'horiz')},e.prototype.setScrollTop=function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,'vert')},e.prototype.zeroWidthHack=function(){var e=C&&!l?'12px':'18px';this.horiz.style.height=this.vert.style.width=e,this.horiz.style.pointerEvents=this.vert.style.pointerEvents='none',this.disableHoriz=new E,this.disableVert=new E},e.prototype.enableZeroWidthBar=function(n,r,i){n.style.pointerEvents='auto',r.set(1e3,function e(){var t=n.getBoundingClientRect();('vert'==i?document.elementFromPoint(t.right-1,(t.top+t.bottom)/2):document.elementFromPoint((t.right+t.left)/2,t.bottom-1))!=n?n.style.pointerEvents='none':r.set(1e3,e)})},e.prototype.clear=function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)};r=function(){};function wr(e,t){t=t||br(e);var n=e.display.barWidth,r=e.display.barHeight;xr(e,t);for(var i=0;i<4&&n!=e.display.barWidth||r!=e.display.barHeight;i++)n!=e.display.barWidth&&e.options.lineWrapping&&or(e),xr(e,br(e)),n=e.display.barWidth,r=e.display.barHeight}function xr(e,t){var n=e.display,r=n.scrollbars.update(t);n.sizer.style.paddingRight=(n.barWidth=r.right)+'px',n.sizer.style.paddingBottom=(n.barHeight=r.bottom)+'px',n.heightForcer.style.borderBottom=r.bottom+'px solid transparent',r.right&&r.bottom?(n.scrollbarFiller.style.display='block',n.scrollbarFiller.style.height=r.bottom+'px',n.scrollbarFiller.style.width=r.right+'px'):n.scrollbarFiller.style.display='',r.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(n.gutterFiller.style.display='block',n.gutterFiller.style.height=r.bottom+'px',n.gutterFiller.style.width=t.gutterWidth+'px'):n.gutterFiller.style.display=''}r.prototype.update=function(){return{bottom:0,right:0}},r.prototype.setScrollLeft=function(){},r.prototype.setScrollTop=function(){},r.prototype.clear=function(){};var Cr={native:e,null:r};function Sr(n){n.display.scrollbars&&(n.display.scrollbars.clear(),n.display.scrollbars.addClass&&v(n.display.wrapper,n.display.scrollbars.addClass)),n.display.scrollbars=new Cr[n.options.scrollbarStyle](function(e){n.display.wrapper.insertBefore(e,n.display.scrollbarFiller),et(e,'mousedown',function(){n.state.focused&&setTimeout(function(){return n.display.input.focus()},0)}),e.setAttribute('cm-not-content','true')},function(e,t){('horizontal'==t?yr:mr)(n,e)},n),n.display.scrollbars.addClass&&A(n.display.wrapper,n.display.scrollbars.addClass)}var Lr=0;function kr(e){e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:null,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++Lr},e=e.curOp,Qt?Qt.ops.push(e):e.ownsGroup=Qt={ops:[e],delayedCallbacks:[]}}function Tr(t){!function(){var e=t.curOp.ownsGroup;if(e)try{!function(e){var t=e.delayedCallbacks,n=0;do{for(;n<t.length;n++)t[n].call(null);for(var r=0;r<e.ops.length;r++){var i=e.ops[r];if(i.cursorActivityHandlers)for(;i.cursorActivityCalled<i.cursorActivityHandlers.length;)i.cursorActivityHandlers[i.cursorActivityCalled++].call(null,i.cm)}}while(n<t.length)}(e)}finally{Qt=null,function(g){for(var e=0;e<g.ops.length;e++)g.ops[e].cm.curOp=null;!function(){for(var e,t,n,r,i,o=g.ops,l=0;l<o.length;l++)e=o[l],i=r=n=t=void 0,r=e.cm,i=r.display,!(n=(t=r).display).scrollbarsClipped&&n.scroller.offsetWidth&&(n.nativeBarWidth=n.scroller.offsetWidth-n.scroller.clientWidth,n.heightForcer.style.height=gn(t)+'px',n.sizer.style.marginBottom=-n.nativeBarWidth+'px',n.sizer.style.borderRightWidth=gn(t)+'px',n.scrollbarsClipped=!0),e.updateMaxLine&&Ue(r),e.mustUpdate=e.viewChanged||e.forceUpdate||null!=e.scrollTop||e.scrollToPos&&(e.scrollToPos.from.line<i.viewFrom||e.scrollToPos.to.line>=i.viewTo)||i.maxLineChanged&&r.options.lineWrapping,e.update=e.mustUpdate&&new Ir(r,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate);for(var s,a=0;a<o.length;a++)(s=o[a]).updatedDisplay=s.mustUpdate&&Rr(s.cm,s.update);for(var u,c,h,d=0;d<o.length;d++)u=o[d],h=c=void 0,c=u.cm,h=c.display,u.updatedDisplay&&or(c),u.barMeasure=br(c),h.maxLineChanged&&!c.options.lineWrapping&&(u.adjustWidthTo=bn(c,h.maxLine,h.maxLine.text.length).left+3,c.display.sizerWidth=u.adjustWidthTo,u.barMeasure.scrollWidth=Math.max(h.scroller.clientWidth,h.sizer.offsetLeft+u.adjustWidthTo+gn(c)+c.display.barWidth),u.maxScrollLeft=Math.max(0,h.sizer.offsetLeft+u.adjustWidthTo-mn(c))),(u.updatedDisplay||u.selectionChanged)&&(u.preparedSelection=h.input.prepareSelection());for(var f=0;f<o.length;f++)!function(e){var t=e.cm;null!=e.adjustWidthTo&&(t.display.sizer.style.minWidth=e.adjustWidthTo+'px',e.maxScrollLeft<t.doc.scrollLeft&&yr(t,Math.min(t.display.scroller.scrollLeft,e.maxScrollLeft),!0),t.display.maxLineChanged=!1);var n=e.focus&&e.focus==O();e.preparedSelection&&t.display.input.showSelection(e.preparedSelection,n),!e.updatedDisplay&&e.startHeight==t.doc.height||wr(t,e.barMeasure),e.updatedDisplay&&Vr(t,e.barMeasure),e.selectionChanged&&er(t),t.state.focused&&e.updateInput&&t.display.input.reset(e.typing),n&&tr(e.cm)}(o[f]);for(var p=0;p<o.length;p++)!function(e){var t=e.cm,n=t.display,r=t.doc;e.updatedDisplay&&Br(t,e.update),null==n.wheelStartX||null==e.scrollTop&&null==e.scrollLeft&&!e.scrollToPos||(n.wheelStartX=n.wheelStartY=null),null!=e.scrollTop&&vr(t,e.scrollTop,e.forceScroll),null!=e.scrollLeft&&yr(t,e.scrollLeft,!0,!0),e.scrollToPos&&function(e,t){var n,r,i;it(e,'scrollCursorIntoView')||(r=(n=e.display).sizer.getBoundingClientRect(),i=null,t.top+r.top<0?i=!0:t.bottom+r.top>(window.innerHeight||document.documentElement.clientHeight)&&(i=!1),null==i||m||(t=M('div','',null,'position: absolute;\\n top: '+(t.top-n.viewOffset-dn(e.display))+'px;\\n height: '+(t.bottom-t.top+gn(e)+n.barHeight)+'px;\\n left: '+t.left+'px; width: '+Math.max(2,t.right-t.left)+'px;'),e.display.lineSpace.appendChild(t),t.scrollIntoView(i),e.display.lineSpace.removeChild(t)))}(t,function(e,t,n,r){var i;null==r&&(r=0),e.options.lineWrapping||t!=n||(n='before'==(t=t.ch?de(t.line,'before'==t.sticky?t.ch-1:t.ch,'after'):t).sticky?de(t.line,t.ch+1,'before'):t);for(var o=0;o<5;o++){var l=!1,s=Pn(e,t),a=n&&n!=t?Pn(e,n):s,u=cr(e,i={left:Math.min(s.left,a.left),top:Math.min(s.top,a.top)-r,right:Math.max(s.left,a.left),bottom:Math.max(s.bottom,a.bottom)+r}),s=e.doc.scrollTop,a=e.doc.scrollLeft;if(null!=u.scrollTop&&(mr(e,u.scrollTop),1<Math.abs(e.doc.scrollTop-s)&&(l=!0)),null!=u.scrollLeft&&(yr(e,u.scrollLeft),1<Math.abs(e.doc.scrollLeft-a)&&(l=!0)),!l)break}return i}(t,be(r,e.scrollToPos.from),be(r,e.scrollToPos.to),e.scrollToPos.margin));var i=e.maybeHiddenMarkers,o=e.maybeUnhiddenMarkers;if(i)for(var l=0;l<i.length;++l)i[l].lines.length||rt(i[l],'hide');if(o)for(var s=0;s<o.length;++s)o[s].lines.length&&rt(o[s],'unhide');n.wrapper.offsetHeight&&(r.scrollTop=t.display.scroller.scrollTop),e.changeObjs&&rt(t,'changes',t,e.changeObjs),e.update&&e.update.finish()}(o[p])}()}(e)}}()}function Mr(e,t){if(e.curOp)return t();kr(e);try{return t()}finally{Tr(e)}}function Nr(e,t){return function(){if(e.curOp)return t.apply(e,arguments);kr(e);try{return t.apply(e,arguments)}finally{Tr(e)}}}function Or(e){return function(){if(this.curOp)return e.apply(this,arguments);kr(this);try{return e.apply(this,arguments)}finally{Tr(this)}}}function Ar(t){return function(){var e=this.cm;if(!e||e.curOp)return t.apply(this,arguments);kr(e);try{return t.apply(this,arguments)}finally{Tr(e)}}}function Wr(e,t,n,r){null==t&&(t=e.doc.first),null==n&&(n=e.doc.first+e.doc.size),r=r||0;var i,o,l=e.display;r&&n<l.viewTo&&(null==l.updateLineNumbers||l.updateLineNumbers>t)&&(l.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=l.viewTo?Ce&&ze(e.doc,t)<l.viewTo&&Hr(e):n<=l.viewFrom?Ce&&Ie(e.doc,n+r)>l.viewFrom?Hr(e):(l.viewFrom+=r,l.viewTo+=r):t<=l.viewFrom&&n>=l.viewTo?Hr(e):t<=l.viewFrom?(i=Fr(e,n,n+r,1))?(l.view=l.view.slice(i.index),l.viewFrom=i.lineN,l.viewTo+=r):Hr(e):n>=l.viewTo?(o=Fr(e,t,t,-1))?(l.view=l.view.slice(0,o.index),l.viewTo=o.lineN):Hr(e):(i=Fr(e,t,t,-1),o=Fr(e,n,n+r,1),i&&o?(l.view=l.view.slice(0,i.index).concat(Zt(e,i.lineN,o.lineN)).concat(l.view.slice(o.index)),l.viewTo+=r):Hr(e));e=l.externalMeasured;e&&(n<e.lineN?e.lineN+=r:t<e.lineN+e.size&&(l.externalMeasured=null))}function Dr(e,t,n){e.curOp.viewChanged=!0;var r,i=e.display,o=e.display.externalMeasured;o&&t>=o.lineN&&t<o.lineN+o.size&&(i.externalMeasured=null),t<i.viewFrom||t>=i.viewTo||null==(r=i.view[qn(e,t)]).node||-1==z(r=r.changes||(r.changes=[]),n)&&r.push(n)}function Hr(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function Fr(e,t,n,r){var i,o=qn(e,t),l=e.display.view;if(!Ce||n==e.doc.first+e.doc.size)return{index:o,lineN:n};for(var s=e.display.viewFrom,a=0;a<o;a++)s+=l[a].size;if(s!=t){if(0<r){if(o==l.length-1)return null;i=s+l[o].size-t,o++}else i=s-t;t+=i,n+=i}for(;ze(e.doc,n)!=n;){if(o==(r<0?0:l.length-1))return null;n+=r*l[o-(r<0?1:0)].size,o+=r}return{index:o,lineN:n}}function Pr(e){for(var t=e.display.view,n=0,r=0;r<t.length;r++){var i=t[r];i.hidden||i.node&&!i.changes||++n}return n}function Er(e,t){e.doc.highlightFrontier<e.display.viewTo&&e.state.highlight.set(t,H(zr,e))}function zr(l){var s,a,u,c=l.doc;c.highlightFrontier>=l.display.viewTo||(s=+new Date+l.options.workTime,a=Ft(l,c.highlightFrontier),u=[],c.iter(a.line,Math.min(c.first+c.size,l.display.viewTo+500),function(e){if(a.line>=l.display.viewFrom){var t=e.styles,n=e.text.length>l.options.maxHighlightLength?Tt(c.mode,a.state):null,r=Dt(l,e,a,!0);n&&(a.state=n),e.styles=r.styles;n=e.styleClasses,r=r.classes;r?e.styleClasses=r:n&&(e.styleClasses=null);for(var i=!t||t.length!=e.styles.length||n!=r&&(!n||!r||n.bgClass!=r.bgClass||n.textClass!=r.textClass),o=0;!i&&o<t.length;++o)i=t[o]!=e.styles[o];i&&u.push(a.line),e.stateAfter=a.save(),a.nextLine()}else e.text.length<=l.options.maxHighlightLength&&Pt(l,e.text,a),e.stateAfter=a.line%5==0?a.save():null,a.nextLine();if(+new Date>s)return Er(l,l.options.workDelay),!0}),c.highlightFrontier=a.line,c.modeFrontier=Math.max(c.modeFrontier,a.line),u.length&&Mr(l,function(){for(var e=0;e<u.length;e++)Dr(l,u[e],'text')}))}var Ir=function(e,t,n){var r=e.display;this.viewport=t,this.visible=sr(r,e.doc,t),this.editorIsHidden=!r.wrapper.offsetWidth,this.wrapperHeight=r.wrapper.clientHeight,this.wrapperWidth=r.wrapper.clientWidth,this.oldDisplayWidth=mn(e),this.force=n,this.dims=Kn(e),this.events=[]};function Rr(e,t){var n=e.display,r=e.doc;if(t.editorIsHidden)return Hr(e),!1;if(!t.force&&t.visible.from>=n.viewFrom&&t.visible.to<=n.viewTo&&(null==n.updateLineNumbers||n.updateLineNumbers>=n.viewTo)&&n.renderedView==n.view&&0==Pr(e))return!1;ur(e)&&(Hr(e),t.dims=Kn(e));var i=r.first+r.size,o=Math.max(t.visible.from-e.options.viewportMargin,r.first),l=Math.min(i,t.visible.to+e.options.viewportMargin);n.viewFrom<o&&o-n.viewFrom<20&&(o=Math.max(r.first,n.viewFrom)),n.viewTo>l&&n.viewTo-l<20&&(l=Math.min(i,n.viewTo)),Ce&&(o=ze(e.doc,o),l=Ie(e.doc,l));var s=o!=n.viewFrom||l!=n.viewTo||n.lastWrapHeight!=t.wrapperHeight||n.lastWrapWidth!=t.wrapperWidth,r=o,i=l;0==(l=(o=e).display).view.length||r>=l.viewTo||i<=l.viewFrom?(l.view=Zt(o,r,i),l.viewFrom=r):(l.viewFrom>r?l.view=Zt(o,r,l.viewFrom).concat(l.view):l.viewFrom<r&&(l.view=l.view.slice(qn(o,r))),l.viewFrom=r,l.viewTo<i?l.view=l.view.concat(Zt(o,l.viewTo,i)):l.viewTo>i&&(l.view=l.view.slice(0,qn(o,i)))),l.viewTo=i,n.viewOffset=Be(ie(e.doc,n.viewFrom)),e.display.mover.style.top=n.viewOffset+'px';o=Pr(e);if(!s&&0==o&&!t.force&&n.renderedView==n.view&&(null==n.updateLineNumbers||n.updateLineNumbers>=n.viewTo))return!1;l=function(e){if(e.hasFocus())return null;var t=O();if(!t||!N(e.display.lineDiv,t))return null;var n={activeElt:t};return!window.getSelection||(t=window.getSelection()).anchorNode&&t.extend&&N(e.display.lineDiv,t.anchorNode)&&(n.anchorNode=t.anchorNode,n.anchorOffset=t.anchorOffset,n.focusNode=t.focusNode,n.focusOffset=t.focusOffset),n}(e);return 4<o&&(n.lineDiv.style.display='none'),function(n,e,t){var r=n.display,i=n.options.lineNumbers,o=r.lineDiv,l=o.firstChild;function s(e){var t=e.nextSibling;return x&&C&&n.display.currentWheelTarget==e?e.style.display='none':e.parentNode.removeChild(e),t}for(var a,u,c,h=r.view,d=r.viewFrom,f=0;f<h.length;f++){var p=h[f];if(!p.hidden)if(p.node&&p.node.parentNode==o){for(;l!=p.node;)l=s(l);var g=i&&null!=e&&e<=d&&p.lineNumber;p.changes&&(-1<z(p.changes,'gutter')&&(g=!1),nn(n,p,d,t)),g&&(L(p.lineNumber),p.lineNumber.appendChild(document.createTextNode(he(n.options,d)))),l=p.node.nextSibling}else{var m=(u=d,c=t,g=on(a=n,m=p),m.text=m.node=g.pre,g.bgClass&&(m.bgClass=g.bgClass),g.textClass&&(m.textClass=g.textClass),ln(a,m),sn(a,m,u,c),an(a,m,c),m.node);o.insertBefore(m,l)}d+=p.size}for(;l;)l=s(l)}(e,n.updateLineNumbers,t.dims),4<o&&(n.lineDiv.style.display=''),n.renderedView=n.view,(i=l)&&i.activeElt&&i.activeElt!=O()&&(i.activeElt.focus(),i.anchorNode&&N(document.body,i.anchorNode)&&N(document.body,i.focusNode))&&(o=window.getSelection(),(l=document.createRange()).setEnd(i.anchorNode,i.anchorOffset),l.collapse(!1),o.removeAllRanges(),o.addRange(l),o.extend(i.focusNode,i.focusOffset)),L(n.cursorDiv),L(n.selectionDiv),n.gutters.style.height=n.sizer.style.minHeight=0,s&&(n.lastWrapHeight=t.wrapperHeight,n.lastWrapWidth=t.wrapperWidth,Er(e,400)),!(n.updateLineNumbers=null)}function Br(e,t){for(var n=t.viewport,r=!0;(r&&e.options.lineWrapping&&t.oldDisplayWidth!=mn(e)||(n&&null!=n.top&&(n={top:Math.min(e.doc.height+fn(e.display)-vn(e),n.top)}),t.visible=sr(e.display,e.doc,n),!(t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)))&&Rr(e,t);r=!1){or(e);var i=br(e);$n(e),wr(e,i),Vr(e,i),t.force=!1}t.signal(e,'update',e),e.display.viewFrom==e.display.reportedViewFrom&&e.display.viewTo==e.display.reportedViewTo||(t.signal(e,'viewportChange',e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function Gr(e,t){var n=new Ir(e,t);Rr(e,n)&&(or(e),Br(e,n),t=br(e),$n(e),wr(e,t),Vr(e,t),n.finish())}function Ur(e){var t=e.display.gutters.offsetWidth;e.display.sizer.style.marginLeft=t+'px'}function Vr(e,t){e.display.sizer.style.minHeight=t.docHeight+'px',e.display.heightForcer.style.top=t.docHeight+'px',e.display.gutters.style.height=t.docHeight+e.display.barHeight+gn(e)+'px'}function Kr(e){var t=e.display.gutters,n=e.options.gutters;L(t);for(var r=0;r<n.length;++r){var i=n[r],o=t.appendChild(M('div',null,'CodeMirror-gutter '+i));'CodeMirror-linenumbers'==i&&((e.display.lineGutter=o).style.width=(e.display.lineNumWidth||1)+'px')}t.style.display=r?'':'none',Ur(e)}function jr(e){var t=z(e.gutters,'CodeMirror-linenumbers');-1==t&&e.lineNumbers?e.gutters=e.gutters.concat(['CodeMirror-linenumbers']):-1<t&&!e.lineNumbers&&(e.gutters=e.gutters.slice(0),e.gutters.splice(t,1))}Ir.prototype.signal=function(e,t){lt(e,t)&&this.events.push(arguments)},Ir.prototype.finish=function(){for(var e=0;e<this.events.length;e++)rt.apply(null,this.events[e])};var Xr=0,Yr=null;function _r(e){var t=e.wheelDeltaX,n=e.wheelDeltaY;return null==t&&e.detail&&e.axis==e.HORIZONTAL_AXIS&&(t=e.detail),null==n&&e.detail&&e.axis==e.VERTICAL_AXIS?n=e.detail:null==n&&(n=e.wheelDelta),{x:t,y:n}}function qr(e,t){var n=_r(t),r=n.x,i=n.y,o=e.display,l=o.scroller,s=l.scrollWidth>l.clientWidth,a=l.scrollHeight>l.clientHeight;if(r&&s||i&&a){if(i&&C&&x)e:for(var u=t.target,c=o.view;u!=l;u=u.parentNode)for(var h=0;h<c.length;h++)if(c[h].node==u){e.display.currentWheelTarget=u;break e}if(r&&!d&&!f&&null!=Yr)return i&&a&&mr(e,Math.max(0,l.scrollTop+i*Yr)),yr(e,Math.max(0,l.scrollLeft+r*Yr)),(!i||i&&a)&&at(t),void(o.wheelStartX=null);i&&null!=Yr&&(n=i*Yr,a=(s=e.doc.scrollTop)+o.wrapper.clientHeight,n<0?s=Math.max(0,s+n-50):a=Math.min(e.doc.height,a+n+50),Gr(e,{top:s,bottom:a})),Xr<20&&(null==o.wheelStartX?(o.wheelStartX=l.scrollLeft,o.wheelStartY=l.scrollTop,o.wheelDX=r,o.wheelDY=i,setTimeout(function(){var e,t;null!=o.wheelStartX&&(t=l.scrollLeft-o.wheelStartX,t=(e=l.scrollTop-o.wheelStartY)&&o.wheelDY&&e/o.wheelDY||t&&o.wheelDX&&t/o.wheelDX,o.wheelStartX=o.wheelStartY=null,t&&(Yr=(Yr*Xr+t)/(Xr+1),++Xr))},200)):(o.wheelDX+=r,o.wheelDY+=i))}}b?Yr=-.53:d?Yr=15:o?Yr=-.7:a&&(Yr=-1/3);var $r=function(e,t){this.ranges=e,this.primIndex=t};$r.prototype.primary=function(){return this.ranges[this.primIndex]},$r.prototype.equals=function(e){if(e==this)return!0;if(e.primIndex!=this.primIndex||e.ranges.length!=this.ranges.length)return!1;for(var t=0;t<this.ranges.length;t++){var n=this.ranges[t],r=e.ranges[t];if(!pe(n.anchor,r.anchor)||!pe(n.head,r.head))return!1}return!0},$r.prototype.deepCopy=function(){for(var e=[],t=0;t<this.ranges.length;t++)e[t]=new Zr(ge(this.ranges[t].anchor),ge(this.ranges[t].head));return new $r(e,this.primIndex)},$r.prototype.somethingSelected=function(){for(var e=0;e<this.ranges.length;e++)if(!this.ranges[e].empty())return!0;return!1},$r.prototype.contains=function(e,t){t=t||e;for(var n=0;n<this.ranges.length;n++){var r=this.ranges[n];if(0<=fe(t,r.from())&&fe(e,r.to())<=0)return n}return-1};var Zr=function(e,t){this.anchor=e,this.head=t};function Qr(e,t){var n=e[t];e.sort(function(e,t){return fe(e.from(),t.from())}),t=z(e,n);for(var r=1;r<e.length;r++){var i,o,l=e[r],s=e[r-1];0<=fe(s.to(),l.from())&&(i=ve(s.from(),l.from()),o=me(s.to(),l.to()),s=s.empty()?l.from()==l.head:s.from()==s.head,r<=t&&--t,e.splice(--r,2,new Zr(s?o:i,s?i:o)))}return new $r(e,t)}function Jr(e,t){return new $r([new Zr(e,t||e)],0)}function ei(e){return e.text?de(e.from.line+e.text.length-1,X(e.text).length+(1==e.text.length?e.from.ch:0)):e.to}function ti(e,t){if(fe(e,t.from)<0)return e;if(fe(e,t.to)<=0)return ei(t);var n=e.line+t.text.length-(t.to.line-t.from.line)-1,r=e.ch;return e.line==t.to.line&&(r+=ei(t).ch-t.to.ch),de(n,r)}function ni(e,t){for(var n=[],r=0;r<e.sel.ranges.length;r++){var i=e.sel.ranges[r];n.push(new Zr(ti(i.anchor,t),ti(i.head,t)))}return Qr(n,e.sel.primIndex)}function ri(e,t,n){return e.line==t.line?de(n.line,e.ch-t.ch+n.ch):de(n.line+(e.line-t.line),e.ch)}function ii(e){e.doc.mode=Lt(e.options,e.doc.modeOption),oi(e)}function oi(e){e.doc.iter(function(e){e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null)}),e.doc.modeFrontier=e.doc.highlightFrontier=e.doc.first,Er(e,100),e.state.modeGen++,e.curOp&&Wr(e)}function li(e,t){return 0==t.from.ch&&0==t.to.ch&&''==X(t.text)&&(!e.cm||e.cm.options.wholeLineUpdateBefore)}function si(e,o,t,l){function i(e){return t?t[e]:null}function n(e,t,n){var r,i;r=n,i=l,(n=e).text=t,n.stateAfter&&(n.stateAfter=null),n.styles&&(n.styles=null),null!=n.order&&(n.order=null),Me(n),Ne(n,r),(i=i?i(n):1)!=n.height&&se(n,i),en(e,'change',e,o)}function r(e,t){for(var n=[],r=e;r<t;++r)n.push(new Ut(c[r],i(r),l));return n}var s,a=o.from,u=o.to,c=o.text,h=ie(e,a.line),d=ie(e,u.line),f=X(c),p=i(c.length-1),g=u.line-a.line;o.full?(e.insert(0,r(0,c.length)),e.remove(c.length,e.size-c.length)):li(e,o)?(s=r(0,c.length-1),n(d,d.text,p),g&&e.remove(a.line,g),s.length&&e.insert(a.line,s)):h==d?1==c.length?n(h,h.text.slice(0,a.ch)+f+h.text.slice(u.ch),p):((s=r(1,c.length-1)).push(new Ut(f+h.text.slice(u.ch),p,l)),n(h,h.text.slice(0,a.ch)+c[0],i(0)),e.insert(a.line+1,s)):1==c.length?(n(h,h.text.slice(0,a.ch)+c[0]+d.text.slice(u.ch),i(0)),e.remove(a.line+1,g)):(n(h,h.text.slice(0,a.ch)+c[0],i(0)),n(d,f+d.text.slice(u.ch),p),p=r(1,c.length-1),1<g&&e.remove(a.line+1,g-1),e.insert(a.line+1,p)),en(e,'change',e,o)}function ai(e,s,a){!function e(t,n,r){if(t.linked)for(var i=0;i<t.linked.length;++i){var o,l=t.linked[i];l.doc!=n&&(o=r&&l.sharedHist,a&&!o||(s(l.doc,o),e(l.doc,t,o)))}}(e,null,!0)}function ui(e,t){if(t.cm)throw new Error('This document is already in use.');Yn((e.doc=t).cm=e),ii(e),ci(e),e.options.lineWrapping||Ue(e),e.options.mode=t.modeOption,Wr(e)}function ci(e){('rtl'==e.doc.direction?A:v)(e.display.lineDiv,'CodeMirror-rtl')}function hi(e){this.done=[],this.undone=[],this.undoDepth=1/0,this.lastModTime=this.lastSelTime=0,this.lastOp=this.lastSelOp=null,this.lastOrigin=this.lastSelOrigin=null,this.generation=this.maxGeneration=e||1}function di(e,t){var n={from:ge(t.from),to:ei(t),text:oe(e,t.from,t.to)};return mi(e,n,t.from.line,t.to.line+1),ai(e,function(e){return mi(e,n,t.from.line,t.to.line+1),0},!0),n}function fi(e){for(;e.length&&X(e).ranges;)e.pop()}function pi(e,t,n,r){var i=e.history;i.undone.length=0;var o,l,s=+new Date;if((i.lastOp==r||i.lastOrigin==t.origin&&t.origin&&('+'==t.origin.charAt(0)&&i.lastModTime>s-(e.cm?e.cm.options.historyEventDelay:500)||'*'==t.origin.charAt(0)))&&(o=(a=i).lastOp==r?(fi(a.done),X(a.done)):a.done.length&&!X(a.done).ranges?X(a.done):1<a.done.length&&!a.done[a.done.length-2].ranges?(a.done.pop(),X(a.done)):void 0))l=X(o.changes),0==fe(t.from,t.to)&&0==fe(t.from,l.to)?l.to=ei(t):o.changes.push(di(e,t));else{var a=X(i.done);for(a&&a.ranges||gi(e.sel,i.done),o={changes:[di(e,t)],generation:i.generation},i.done.push(o);i.done.length>i.undoDepth;)i.done.shift(),i.done[0].ranges||i.done.shift()}i.done.push(n),i.generation=++i.maxGeneration,i.lastModTime=i.lastSelTime=s,i.lastOp=i.lastSelOp=r,i.lastOrigin=i.lastSelOrigin=t.origin,l||rt(e,'historyAdded')}function gi(e,t){var n=X(t);n&&n.ranges&&n.equals(e)||t.push(e)}function mi(t,n,e,r){var i=n['spans_'+t.id],o=0;t.iter(Math.max(t.first,e),Math.min(t.first+t.size,r),function(e){e.markedSpans&&((i=i||(n['spans_'+t.id]={}))[o]=e.markedSpans),++o})}function vi(i,e){var t=function(e){var t=e['spans_'+i.id];if(!t)return null;for(var n=[],r=0;r<e.text.length;++r)n.push(function(e){if(!e)return null;for(var t,n=0;n<e.length;++n)e[n].marker.explicitlyCleared?t=t||e.slice(0,n):t&&t.push(e[n]);return t?t.length?t:null:e}(t[r]));return n}(e),n=ke(i,e);if(!t)return n;if(!n)return t;for(var r=0;r<t.length;++r){var o=t[r],l=n[r];if(o&&l)e:for(var s=0;s<l.length;++s){for(var a=l[s],u=0;u<o.length;++u)if(o[u].marker==a.marker)continue e;o.push(a)}else l&&(t[r]=l)}return t}function yi(e,t,n){for(var r=[],i=0;i<e.length;++i){var o=e[i];if(o.ranges)r.push(n?$r.prototype.deepCopy.call(o):o);else{var l=o.changes,s=[];r.push({changes:s});for(var a=0;a<l.length;++a){var u,c=l[a];if(s.push({from:c.from,to:c.to,text:c.text}),t)for(var h in c)(u=h.match(/^spans_(\\d+)$/))&&-1<z(t,Number(u[1]))&&(X(s)[h]=c[h],delete c[h])}}}return r}function bi(e,t,n,r){if(r){r=e.anchor;return n&&((e=fe(t,r)<0)!=fe(n,r)<0?(r=t,t=n):e!=fe(t,n)<0&&(t=n)),new Zr(r,t)}return new Zr(n||t,t)}function wi(e,t,n,r,i){null==i&&(i=e.cm&&(e.cm.display.shift||e.extend)),ki(e,new $r([bi(e.sel.primary(),t,n,i)],0),r)}function xi(e,t,n){for(var r=[],i=e.cm&&(e.cm.display.shift||e.extend),o=0;o<e.sel.ranges.length;o++)r[o]=bi(e.sel.ranges[o],t[o],null,i);ki(e,Qr(r,e.sel.primIndex),n)}function Ci(e,t,n,r){var i=e.sel.ranges.slice(0);i[t]=n,ki(e,Qr(i,e.sel.primIndex),r)}function Si(e,t,n,r){ki(e,Jr(t,n),r)}function Li(e,t,n){var r=e.history.done,i=X(r);i&&i.ranges?Ti(e,r[r.length-1]=t,n):ki(e,t,n)}function ki(e,t,n){var r,i,o,l,s,a;Ti(e,t,n),i=(r=e).sel,o=e.cm?e.cm.curOp.id:NaN,l=n,s=r.history,a=l&&l.origin,o==s.lastSelOp||a&&s.lastSelOrigin==a&&(s.lastModTime==s.lastSelTime&&s.lastOrigin==a||(t=r,e=X(s.done),n=i,'*'==(r=a.charAt(0))||'+'==r&&e.ranges.length==n.ranges.length&&e.somethingSelected()==n.somethingSelected()&&new Date-t.history.lastSelTime<=(t.cm?t.cm.options.historyEventDelay:500)))?s.done[s.done.length-1]=i:gi(i,s.done),s.lastSelTime=+new Date,s.lastSelOrigin=a,s.lastSelOp=o,l&&!1!==l.clearRedo&&fi(s.undone)}function Ti(e,t,n){var r,i,o;(lt(e,'beforeSelectionChange')||e.cm&<(e.cm,'beforeSelectionChange'))&&(r=e,o={ranges:(i=t).ranges,update:function(e){this.ranges=[];for(var t=0;t<e.length;t++)this.ranges[t]=new Zr(be(r,e[t].anchor),be(r,e[t].head))},origin:n&&n.origin},rt(r,'beforeSelectionChange',r,o),r.cm&&rt(r.cm,'beforeSelectionChange',r.cm,o),t=o.ranges!=i.ranges?Qr(o.ranges,o.ranges.length-1):i),Mi(e,Oi(e,t,n&&n.bias||(fe(t.primary().head,e.sel.primary().head)<0?-1:1),!0)),n&&!1===n.scroll||!e.cm||dr(e.cm)}function Mi(e,t){t.equals(e.sel)||(e.sel=t,e.cm&&(e.cm.curOp.updateInput=e.cm.curOp.selectionChanged=!0,ot(e.cm)),en(e,'cursorActivity',e))}function Ni(e){Mi(e,Oi(e,e.sel,null,!1))}function Oi(e,t,n,r){for(var i,o=0;o<t.ranges.length;o++){var l=t.ranges[o],s=t.ranges.length==e.sel.ranges.length&&e.sel.ranges[o],a=Wi(e,l.anchor,s&&s.anchor,n,r),s=Wi(e,l.head,s&&s.head,n,r);!i&&a==l.anchor&&s==l.head||((i=i||t.ranges.slice(0,o))[o]=new Zr(a,s))}return i?Qr(i,t.primIndex):t}function Ai(e,t,n,r,i){var o=ie(e,t.line);if(o.markedSpans)for(var l=0;l<o.markedSpans.length;++l){var s=o.markedSpans[l],a=s.marker;if((null==s.from||(a.inclusiveLeft?s.from<=t.ch:s.from<t.ch))&&(null==s.to||(a.inclusiveRight?s.to>=t.ch:s.to>t.ch))){if(i&&(rt(a,'beforeCursorEnter'),a.explicitlyCleared)){if(o.markedSpans){--l;continue}break}if(a.atomic){if(n){var u=a.find(r<0?1:-1),s=void 0;if((r<0?a.inclusiveRight:a.inclusiveLeft)&&(u=Di(e,u,-r,u&&u.line==t.line?o:null)),u&&u.line==t.line&&(s=fe(u,n))&&(r<0?s<0:0<s))return Ai(e,u,t,r,i)}u=a.find(r<0?-1:1);return(r<0?a.inclusiveLeft:a.inclusiveRight)&&(u=Di(e,u,r,u.line==t.line?o:null)),u?Ai(e,u,t,r,i):null}}}return t}function Wi(e,t,n,r,i){r=r||1;return Ai(e,t,n,r,i)||!i&&Ai(e,t,n,r,!0)||Ai(e,t,n,-r,i)||!i&&Ai(e,t,n,-r,!0)||(e.cantEdit=!0,de(e.first,0))}function Di(e,t,n,r){return n<0&&0==t.ch?t.line>e.first?be(e,de(t.line-1)):null:0<n&&t.ch==(r||ie(e,t.line)).text.length?t.line<e.first+e.size-1?de(t.line+1,0):null:new de(t.line,t.ch+n)}function Hi(e){e.setSelection(de(e.firstLine(),0),de(e.lastLine()),B)}function Fi(i,e,t){var o={canceled:!1,from:e.from,to:e.to,text:e.text,origin:e.origin,cancel:function(){return o.canceled=!0}};return t&&(o.update=function(e,t,n,r){e&&(o.from=be(i,e)),t&&(o.to=be(i,t)),n&&(o.text=n),void 0!==r&&(o.origin=r)}),rt(i,'beforeChange',i,o),i.cm&&rt(i.cm,'beforeChange',i.cm,o),o.canceled?null:{from:o.from,to:o.to,text:o.text,origin:o.origin}}function Pi(d,e,t){if(d.cm){if(!d.cm.curOp)return Nr(d.cm,Pi)(d,e,t);if(d.cm.state.suppressEdits)return}if(!(lt(d,'beforeChange')||d.cm&<(d.cm,'beforeChange'))||(e=Fi(d,e,!0))){var n=xe&&!t&&function(e,t){var r=null;if(d.iter(e.line,t.line+1,function(e){if(e.markedSpans)for(var t=0;t<e.markedSpans.length;++t){var n=e.markedSpans[t].marker;!n.readOnly||r&&-1!=z(r,n)||(r=r||[]).push(n)}}),!r)return null;for(var n=[{from:e,to:t}],i=0;i<r.length;++i)for(var o=r[i],l=o.find(0),s=0;s<n.length;++s){var a,u,c,h=n[s];fe(h.to,l.from)<0||0<fe(h.from,l.to)||(a=[s,1],u=fe(h.from,l.from),c=fe(h.to,l.to),(u<0||!o.inclusiveLeft&&!u)&&a.push({from:h.from,to:l.from}),(0<c||!o.inclusiveRight&&!c)&&a.push({from:l.to,to:h.to}),n.splice.apply(n,a),s+=a.length-3)}return n}(e.from,e.to);if(n)for(var r=n.length-1;0<=r;--r)Ei(d,{from:n[r].from,to:n[r].to,text:r?['']:e.text,origin:e.origin});else Ei(d,e)}}function Ei(e,n){var t,r;1==n.text.length&&''==n.text[0]&&0==fe(n.from,n.to)||(t=ni(e,n),pi(e,n,t,e.cm?e.cm.curOp.id:NaN),Ri(e,n,t,ke(e,n)),r=[],ai(e,function(e,t){t||-1!=z(r,e.history)||(Vi(e.history,n),r.push(e.history)),Ri(e,n,null,ke(e,n))}))}function zi(i,o,e){var t=i.cm&&i.cm.state.suppressEdits;if(!t||e){for(var l,n=i.history,r=i.sel,s='undo'==o?n.done:n.undone,a='undo'==o?n.undone:n.done,u=0;u<s.length&&(l=s[u],e?!l.ranges||l.equals(i.sel):l.ranges);u++);if(u!=s.length){for(n.lastOrigin=n.lastSelOrigin=null;;){if(!(l=s.pop()).ranges){if(t)return s.push(l),0;break}if(gi(l,a),e&&!l.equals(i.sel))return ki(i,l,{clearRedo:!1}),0;r=l}var c=[];gi(r,a),a.push({changes:c,generation:n.generation}),n.generation=l.generation||++n.maxGeneration;for(var h=lt(i,'beforeChange')||i.cm&<(i.cm,'beforeChange'),d=l.changes.length-1;0<=d;--d){var f=function(e){var n=l.changes[e];if(n.origin=o,h&&!Fi(i,n,!1))return s.length=0,{};c.push(di(i,n));var t=e?ni(i,n):X(s);Ri(i,n,t,vi(i,n)),!e&&i.cm&&i.cm.scrollIntoView({from:n.from,to:ei(n)});var r=[];ai(i,function(e,t){t||-1!=z(r,e.history)||(Vi(e.history,n),r.push(e.history)),Ri(e,n,null,vi(e,n))})}(d);if(f)return f.v}}}}function Ii(e,t){if(0!=t&&(e.first+=t,e.sel=new $r(Y(e.sel.ranges,function(e){return new Zr(de(e.anchor.line+t,e.anchor.ch),de(e.head.line+t,e.head.ch))}),e.sel.primIndex),e.cm)){Wr(e.cm,e.first,e.first-t,t);for(var n=e.cm.display,r=n.viewFrom;r<n.viewTo;r++)Dr(e.cm,r,'gutter')}}function Ri(e,t,n,r){if(e.cm&&!e.cm.curOp)return Nr(e.cm,Ri)(e,t,n,r);var i,o,l,s,a,u,c,h,d;t.to.line<e.first?Ii(e,t.text.length-1-(t.to.line-t.from.line)):t.from.line>e.lastLine()||(t.from.line<e.first&&(Ii(e,c=t.text.length-1-(e.first-t.from.line)),t={from:de(e.first,0),to:de(t.to.line+c,t.to.ch),text:[X(t.text)],origin:t.origin}),d=e.lastLine(),t.to.line>d&&(t={from:t.from,to:de(d,ie(e,d).text.length),text:[t.text[0]],origin:t.origin}),t.removed=oe(e,t.from,t.to),n=n||ni(e,t),e.cm?(i=e.cm,o=t,l=r,s=i.doc,a=i.display,u=o.from,c=o.to,h=!1,d=u.line,i.options.lineWrapping||(d=ae(Ee(ie(s,u.line))),s.iter(d,c.line+1,function(e){if(e==a.maxLine)return h=!0})),-1<s.sel.contains(o.from,o.to)&&ot(i),si(s,o,l,Xn(i)),i.options.lineWrapping||(s.iter(d,u.line+o.text.length,function(e){var t=Ge(e);t>a.maxLineLength&&(a.maxLine=e,a.maxLineLength=t,a.maxLineChanged=!0,h=!1)}),h&&(i.curOp.updateMaxLine=!0)),function(e,t){if(e.modeFrontier=Math.min(e.modeFrontier,t),!(e.highlightFrontier<t-10)){for(var n=e.first,r=t-1;n<r;r--){var i=ie(e,r).stateAfter;if(i&&(!(i instanceof At)||r+i.lookAhead<t)){n=r+1;break}}e.highlightFrontier=Math.min(e.highlightFrontier,n)}}(s,u.line),Er(i,400),d=o.text.length-(c.line-u.line)-1,o.full?Wr(i):u.line!=c.line||1!=o.text.length||li(i.doc,o)?Wr(i,u.line,c.line+1,d):Dr(i,u.line,'text'),s=lt(i,'changes'),((d=lt(i,'change'))||s)&&(o={from:u,to:c,text:o.text,removed:o.removed,origin:o.origin},d&&en(i,'change',i,o),s&&(i.curOp.changeObjs||(i.curOp.changeObjs=[])).push(o)),i.display.selForContextMenu=null):si(e,t,r),Ti(e,n,B))}function Bi(e,t,n,r,i){var o;fe(r=r||n,n)<0&&(n=(o=[r,n])[0],r=o[1]),'string'==typeof t&&(t=e.splitLines(t)),Pi(e,{from:n,to:r,text:t,origin:i})}function Gi(e,t,n,r){n<e.line?e.line+=r:t<e.line&&(e.line=t,e.ch=0)}function Ui(e,t,n,r){for(var i=0;i<e.length;++i){var o=e[i],l=!0;if(o.ranges){o.copied||((o=e[i]=o.deepCopy()).copied=!0);for(var s=0;s<o.ranges.length;s++)Gi(o.ranges[s].anchor,t,n,r),Gi(o.ranges[s].head,t,n,r)}else{for(var a=0;a<o.changes.length;++a){var u=o.changes[a];if(n<u.from.line)u.from=de(u.from.line+r,u.from.ch),u.to=de(u.to.line+r,u.to.ch);else if(t<=u.to.line){l=!1;break}}l||(e.splice(0,i+1),i=0)}}}function Vi(e,t){var n=t.from.line,r=t.to.line,t=t.text.length-(r-n)-1;Ui(e.done,n,r,t),Ui(e.undone,n,r,t)}function Ki(e,t,n,r){var i=t,o=t;return'number'==typeof t?o=ie(e,ye(e,t)):i=ae(t),null==i?null:(r(o,i)&&e.cm&&Dr(e.cm,i,n),o)}function ji(e){this.lines=e,this.parent=null;for(var t=0,n=0;n<e.length;++n)e[n].parent=this,t+=e[n].height;this.height=t}function Xi(e){this.children=e;for(var t=0,n=0,r=0;r<e.length;++r){var i=e[r];t+=i.chunkSize(),n+=i.height,i.parent=this}this.size=t,this.height=n,this.parent=null}Zr.prototype.from=function(){return ve(this.anchor,this.head)},Zr.prototype.to=function(){return me(this.anchor,this.head)},Zr.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch},ji.prototype={chunkSize:function(){return this.lines.length},removeInner:function(e,t){for(var n=e,r=e+t;n<r;++n){var i=this.lines[n];this.height-=i.height,i.parent=null,Me(i),en(i,'delete')}this.lines.splice(e,t)},collapse:function(e){e.push.apply(e,this.lines)},insertInner:function(e,t,n){this.height+=n,this.lines=this.lines.slice(0,e).concat(t).concat(this.lines.slice(e));for(var r=0;r<t.length;++r)t[r].parent=this},iterN:function(e,t,n){for(var r=e+t;e<r;++e)if(n(this.lines[e]))return!0}},Xi.prototype={chunkSize:function(){return this.size},removeInner:function(e,t){this.size-=t;for(var n,r=0;r<this.children.length;++r){var i=this.children[r],o=i.chunkSize();if(e<o){var l=Math.min(t,o-e),s=i.height;if(i.removeInner(e,l),this.height-=s-i.height,o==l&&(this.children.splice(r--,1),i.parent=null),0==(t-=l))break;e=0}else e-=o}this.size-t<25&&(1<this.children.length||!(this.children[0]instanceof ji))&&(n=[],this.collapse(n),this.children=[new ji(n)],this.children[0].parent=this)},collapse:function(e){for(var t=0;t<this.children.length;++t)this.children[t].collapse(e)},insertInner:function(e,t,n){this.size+=t.length,this.height+=n;for(var r=0;r<this.children.length;++r){var i=this.children[r],o=i.chunkSize();if(e<=o){if(i.insertInner(e,t,n),i.lines&&50<i.lines.length){for(var l=i.lines.length%25+25,s=l;s<i.lines.length;){var a=new ji(i.lines.slice(s,s+=25));i.height-=a.height,this.children.splice(++r,0,a),a.parent=this}i.lines=i.lines.slice(0,l),this.maybeSpill()}break}e-=o}},maybeSpill:function(){if(!(this.children.length<=10)){var e=this;do{var t,n=new Xi(e.children.splice(e.children.length-5,5))}while(e.parent?(e.size-=n.size,e.height-=n.height,t=z(e.parent.children,e),e.parent.children.splice(t+1,0,n)):(((t=new Xi(e.children)).parent=e).children=[t,n],e=t),n.parent=e.parent,10<e.children.length);e.parent.maybeSpill()}},iterN:function(e,t,n){for(var r=0;r<this.children.length;++r){var i=this.children[r],o=i.chunkSize();if(e<o){var l=Math.min(t,o-e);if(i.iterN(e,l,n))return!0;if(0==(t-=l))break;e=0}else e-=o}}};function Yi(e,t,n){if(n)for(var r in n)n.hasOwnProperty(r)&&(this[r]=n[r]);this.doc=e,this.node=t}function _i(e,t,n){Be(t)<(e.curOp&&e.curOp.scrollTop||e.doc.scrollTop)&&hr(e,n)}Yi.prototype.clear=function(){var e=this.doc.cm,t=this.line.widgets,n=this.line,r=ae(n);if(null!=r&&t){for(var i=0;i<t.length;++i)t[i]==this&&t.splice(i--,1);t.length||(n.widgets=null);var o=cn(this);se(n,Math.max(0,n.height-o)),e&&(Mr(e,function(){_i(e,n,-o),Dr(e,r,'widget')}),en(e,'lineWidgetCleared',e,this,r))}},Yi.prototype.changed=function(){var e=this,t=this.height,n=this.doc.cm,r=this.line;this.height=null;var i=cn(this)-t;i&&(se(r,r.height+i),n&&Mr(n,function(){n.curOp.forceUpdate=!0,_i(n,r,i),en(n,'lineWidgetChanged',n,e,ae(r))}))},st(Yi);var qi=0,$i=function(e,t){this.lines=[],this.type=t,this.doc=e,this.id=++qi};function Zi(t,n,r,e,i){if(e&&e.shared)return function(e,n,r,i,o){(i=F(i)).shared=!1;var l=[Zi(e,n,r,i,o)],s=l[0],a=i.widgetNode;return ai(e,function(e){a&&(i.widgetNode=a.cloneNode(!0)),l.push(Zi(e,be(e,n),be(e,r),i,o));for(var t=0;t<e.linked.length;++t)if(e.linked[t].isParent)return;s=X(l)}),new Qi(l,s)}(t,n,r,e,i);if(t.cm&&!t.cm.curOp)return Nr(t.cm,Zi)(t,n,r,e,i);var o=new $i(t,i),i=fe(n,r);if(e&&F(e,o,!1),0<i||0==i&&!1!==o.clearWhenEmpty)return o;if(o.replacedWith&&(o.collapsed=!0,o.widgetNode=T('span',[o.replacedWith],'CodeMirror-widget'),e.handleMouseEvents||o.widgetNode.setAttribute('cm-ignore-events','true'),e.insertLeft&&(o.widgetNode.insertLeft=!0)),o.collapsed){if(Pe(t,n.line,n,r,o)||n.line!=r.line&&Pe(t,r.line,n,r,o))throw new Error('Inserting collapsed marker partially overlapping an existing one');Ce=!0}o.addToHistory&&pi(t,{from:n,to:r,origin:'markText'},t.sel,NaN);var l,s=n.line,a=t.cm;if(t.iter(s,r.line+1,function(e){var t;a&&o.collapsed&&!a.options.lineWrapping&&Ee(e)==a.display.maxLine&&(l=!0),o.collapsed&&s!=n.line&&se(e,0),t=e,e=new Se(o,s==n.line?n.ch:null,s==r.line?r.ch:null),t.markedSpans=t.markedSpans?t.markedSpans.concat([e]):[e],e.marker.attachLine(t),++s}),o.collapsed&&t.iter(n.line,r.line+1,function(e){Re(t,e)&&se(e,0)}),o.clearOnEnter&&et(o,'beforeCursorEnter',function(){return o.clear()}),o.readOnly&&(xe=!0,(t.history.done.length||t.history.undone.length)&&t.clearHistory()),o.collapsed&&(o.id=++qi,o.atomic=!0),a){if(l&&(a.curOp.updateMaxLine=!0),o.collapsed)Wr(a,n.line,r.line+1);else if(o.className||o.title||o.startStyle||o.endStyle||o.css)for(var u=n.line;u<=r.line;u++)Dr(a,u,'text');o.atomic&&Ni(a.doc),en(a,'markerAdded',a,o)}return o}$i.prototype.clear=function(){var e=this;if(!this.explicitlyCleared){var t,n=this.doc.cm,r=n&&!n.curOp;r&&kr(n),lt(this,'clear')&&(t=this.find())&&en(this,'clear',t.from,t.to);for(var i=null,o=null,l=0;l<this.lines.length;++l){var s=e.lines[l],a=Le(s.markedSpans,e);n&&!e.collapsed?Dr(n,ae(s),'text'):n&&(null!=a.to&&(o=ae(s)),null!=a.from&&(i=ae(s))),s.markedSpans=function(e,t){for(var n,r=0;r<e.length;++r)e[r]!=t&&(n=n||[]).push(e[r]);return n}(s.markedSpans,a),null==a.from&&e.collapsed&&!Re(e.doc,s)&&n&&se(s,Un(n.display))}if(n&&this.collapsed&&!n.options.lineWrapping)for(var u=0;u<this.lines.length;++u){var c=Ee(e.lines[u]),h=Ge(c);h>n.display.maxLineLength&&(n.display.maxLine=c,n.display.maxLineLength=h,n.display.maxLineChanged=!0)}null!=i&&n&&this.collapsed&&Wr(n,i,o+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,n&&Ni(n.doc)),n&&en(n,'markerCleared',n,this,i,o),r&&Tr(n),this.parent&&this.parent.clear()}},$i.prototype.find=function(e,t){var n,r;null==e&&'bookmark'==this.type&&(e=1);for(var i=0;i<this.lines.length;++i){var o=this.lines[i],l=Le(o.markedSpans,this);if(null!=l.from&&(n=de(t?o:ae(o),l.from),-1==e))return n;if(null!=l.to&&(r=de(t?o:ae(o),l.to),1==e))return r}return n&&{from:n,to:r}},$i.prototype.changed=function(){var n=this,r=this.find(-1,!0),i=this,o=this.doc.cm;r&&o&&Mr(o,function(){var e=r.line,t=ae(r.line),t=wn(o,t);t&&(Tn(t),o.curOp.selectionChanged=o.curOp.forceUpdate=!0),o.curOp.updateMaxLine=!0,Re(i.doc,e)||null==i.height||(t=i.height,i.height=null,(t=cn(i)-t)&&se(e,e.height+t)),en(o,'markerChanged',o,n)})},$i.prototype.attachLine=function(e){var t;!this.lines.length&&this.doc.cm&&((t=this.doc.cm.curOp).maybeHiddenMarkers&&-1!=z(t.maybeHiddenMarkers,this)||(t.maybeUnhiddenMarkers||(t.maybeUnhiddenMarkers=[])).push(this)),this.lines.push(e)},$i.prototype.detachLine=function(e){this.lines.splice(z(this.lines,e),1),!this.lines.length&&this.doc.cm&&((e=this.doc.cm.curOp).maybeHiddenMarkers||(e.maybeHiddenMarkers=[])).push(this)},st($i);var Qi=function(e,t){this.markers=e,this.primary=t;for(var n=0;n<e.length;++n)e[n].parent=this};function Ji(e){return e.findMarks(de(e.first,0),e.clipPos(de(e.lastLine())),function(e){return e.parent})}function eo(i){for(var o=0;o<i.length;o++)!function(){var e=i[o],t=[e.primary.doc];ai(e.primary.doc,function(e){return t.push(e)});for(var n=0;n<e.markers.length;n++){var r=e.markers[n];-1==z(t,r.doc)&&(r.parent=null,e.markers.splice(n--,1))}}()}Qi.prototype.clear=function(){if(!this.explicitlyCleared){this.explicitlyCleared=!0;for(var e=0;e<this.markers.length;++e)this.markers[e].clear();en(this,'clear')}},Qi.prototype.find=function(e,t){return this.primary.find(e,t)},st(Qi);var to=0,no=function(e,t,n,r,i){if(!(this instanceof no))return new no(e,t,n,r,i);null==n&&(n=0),Xi.call(this,[new ji([new Ut('',null)])]),this.first=n,this.scrollTop=this.scrollLeft=0,this.cantEdit=!1,this.cleanGeneration=1;n=de(this.modeFrontier=this.highlightFrontier=n,0);this.sel=Jr(n),this.history=new hi(null),this.id=++to,this.modeOption=t,this.lineSep=r,this.direction='rtl'==i?'rtl':'ltr',this.extend=!1,'string'==typeof e&&(e=this.splitLines(e)),si(this,{from:n,to:n,text:e}),ki(this,Jr(n),B)};no.prototype=q(Xi.prototype,{constructor:no,iter:function(e,t,n){n?this.iterN(e-this.first,t-e,n):this.iterN(this.first,this.first+this.size,e)},insert:function(e,t){for(var n=0,r=0;r<t.length;++r)n+=t[r].height;this.insertInner(e-this.first,t,n)},remove:function(e,t){this.removeInner(e-this.first,t)},getValue:function(e){var t=le(this,this.first,this.first+this.size);return!1===e?t:t.join(e||this.lineSeparator())},setValue:Ar(function(e){var t=de(this.first,0),n=this.first+this.size-1;Pi(this,{from:t,to:de(n,ie(this,n).text.length),text:this.splitLines(e),origin:'setValue',full:!0},!0),this.cm&&fr(this.cm,0,0),ki(this,Jr(t),B)}),replaceRange:function(e,t,n,r){Bi(this,e,t=be(this,t),n=n?be(this,n):t,r)},getRange:function(e,t,n){t=oe(this,be(this,e),be(this,t));return!1===n?t:t.join(n||this.lineSeparator())},getLine:function(e){e=this.getLineHandle(e);return e&&e.text},getLineHandle:function(e){if(ce(this,e))return ie(this,e)},getLineNumber:ae,getLineHandleVisualStart:function(e){return'number'==typeof e&&(e=ie(this,e)),Ee(e)},lineCount:function(){return this.size},firstLine:function(){return this.first},lastLine:function(){return this.first+this.size-1},clipPos:function(e){return be(this,e)},getCursor:function(e){var t=this.sel.primary();return null==e||'head'==e?t.head:'anchor'==e?t.anchor:'end'==e||'to'==e||!1===e?t.to():t.from()},listSelections:function(){return this.sel.ranges},somethingSelected:function(){return this.sel.somethingSelected()},setCursor:Ar(function(e,t,n){Si(this,be(this,'number'==typeof e?de(e,t||0):e),null,n)}),setSelection:Ar(function(e,t,n){Si(this,be(this,e),be(this,t||e),n)}),extendSelection:Ar(function(e,t,n){wi(this,be(this,e),t&&be(this,t),n)}),extendSelections:Ar(function(e,t){xi(this,we(this,e),t)}),extendSelectionsBy:Ar(function(e,t){xi(this,we(this,Y(this.sel.ranges,e)),t)}),setSelections:Ar(function(e,t,n){if(e.length){for(var r=[],i=0;i<e.length;i++)r[i]=new Zr(be(this,e[i].anchor),be(this,e[i].head));null==t&&(t=Math.min(e.length-1,this.sel.primIndex)),ki(this,Qr(r,t),n)}}),addSelection:Ar(function(e,t,n){var r=this.sel.ranges.slice(0);r.push(new Zr(be(this,e),be(this,t||e))),ki(this,Qr(r,r.length-1),n)}),getSelection:function(e){for(var t=this.sel.ranges,n=0;n<t.length;n++)var r=oe(this,t[n].from(),t[n].to()),i=i?i.concat(r):r;return!1===e?i:i.join(e||this.lineSeparator())},getSelections:function(e){for(var t=[],n=this.sel.ranges,r=0;r<n.length;r++){var i=oe(this,n[r].from(),n[r].to());!1!==e&&(i=i.join(e||this.lineSeparator())),t[r]=i}return t},replaceSelection:function(e,t,n){for(var r=[],i=0;i<this.sel.ranges.length;i++)r[i]=e;this.replaceSelections(r,t,n||'+input')},replaceSelections:Ar(function(e,t,n){for(var r=[],i=this.sel,o=0;o<i.ranges.length;o++){var l=i.ranges[o];r[o]={from:l.from(),to:l.to(),text:this.splitLines(e[o]),origin:n}}for(var t=t&&'end'!=t&&function(e,t,n){for(var r=[],i=u=de(e.first,0),o=0;o<t.length;o++){var l=t[o],s=ri(l.from,u,i),a=ri(ei(l),u,i),u=l.to,i=a;'around'==n?(l=fe((l=e.sel.ranges[o]).head,l.anchor)<0,r[o]=new Zr(l?a:s,l?s:a)):r[o]=new Zr(s,s)}return new $r(r,e.sel.primIndex)}(this,r,t),s=r.length-1;0<=s;s--)Pi(this,r[s]);t?Li(this,t):this.cm&&dr(this.cm)}),undo:Ar(function(){zi(this,'undo')}),redo:Ar(function(){zi(this,'redo')}),undoSelection:Ar(function(){zi(this,'undo',!0)}),redoSelection:Ar(function(){zi(this,'redo',!0)}),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){for(var e=this.history,t=0,n=0,r=0;r<e.done.length;r++)e.done[r].ranges||++t;for(var i=0;i<e.undone.length;i++)e.undone[i].ranges||++n;return{undo:t,redo:n}},clearHistory:function(){this.history=new hi(this.history.maxGeneration)},markClean:function(){this.cleanGeneration=this.changeGeneration(!0)},changeGeneration:function(e){return e&&(this.history.lastOp=this.history.lastSelOp=this.history.lastOrigin=null),this.history.generation},isClean:function(e){return this.history.generation==(e||this.cleanGeneration)},getHistory:function(){return{done:yi(this.history.done),undone:yi(this.history.undone)}},setHistory:function(e){var t=this.history=new hi(this.history.maxGeneration);t.done=yi(e.done.slice(0),null,!0),t.undone=yi(e.undone.slice(0),null,!0)},setGutterMarker:Ar(function(e,n,r){return Ki(this,e,'gutter',function(e){var t=e.gutterMarkers||(e.gutterMarkers={});return!(t[n]=r)&&J(t)&&(e.gutterMarkers=null),1})}),clearGutter:Ar(function(t){var n=this;this.iter(function(e){e.gutterMarkers&&e.gutterMarkers[t]&&Ki(n,e,'gutter',function(){return e.gutterMarkers[t]=null,J(e.gutterMarkers)&&(e.gutterMarkers=null),1})})}),lineInfo:function(e){var t;if('number'==typeof e){if(!ce(this,e))return null;if(!(e=ie(this,t=e)))return null}else if(null==(t=ae(e)))return null;return{line:t,handle:e,text:e.text,gutterMarkers:e.gutterMarkers,textClass:e.textClass,bgClass:e.bgClass,wrapClass:e.wrapClass,widgets:e.widgets}},addLineClass:Ar(function(e,n,r){return Ki(this,e,'gutter'==n?'gutter':'class',function(e){var t='text'==n?'textClass':'background'==n?'bgClass':'gutter'==n?'gutterClass':'wrapClass';if(e[t]){if(g(r).test(e[t]))return;e[t]+=' '+r}else e[t]=r;return 1})}),removeLineClass:Ar(function(e,o,l){return Ki(this,e,'gutter'==o?'gutter':'class',function(e){var t='text'==o?'textClass':'background'==o?'bgClass':'gutter'==o?'gutterClass':'wrapClass',n=e[t];if(n){if(null==l)e[t]=null;else{var r=n.match(g(l));if(!r)return;var i=r.index+r[0].length;e[t]=n.slice(0,r.index)+(r.index&&i!=n.length?' ':'')+n.slice(i)||null}return 1}})}),addLineWidget:Ar(function(e,t,n){return e=e,i=new Yi(r=this,t,n),(o=r.cm)&&i.noHScroll&&(o.display.alignWidgets=!0),Ki(r,e,'widget',function(e){var t=e.widgets||(e.widgets=[]);return null==i.insertAt?t.push(i):t.splice(Math.min(t.length-1,Math.max(0,i.insertAt)),0,i),i.line=e,o&&!Re(r,e)&&(t=Be(e)<r.scrollTop,se(e,e.height+cn(i)),t&&hr(o,i.height),o.curOp.forceUpdate=!0),1}),o&&en(o,'lineWidgetAdded',o,i,'number'==typeof e?e:ae(e)),i;var r,i,o}),removeLineWidget:function(e){e.clear()},markText:function(e,t,n){return Zi(this,be(this,e),be(this,t),n,n&&n.type||'range')},setBookmark:function(e,t){t={replacedWith:t&&(null==t.nodeType?t.widget:t),insertLeft:t&&t.insertLeft,clearWhenEmpty:!1,shared:t&&t.shared,handleMouseEvents:t&&t.handleMouseEvents};return Zi(this,e=be(this,e),e,t,'bookmark')},findMarksAt:function(e){var t=[],n=ie(this,(e=be(this,e)).line).markedSpans;if(n)for(var r=0;r<n.length;++r){var i=n[r];(null==i.from||i.from<=e.ch)&&(null==i.to||i.to>=e.ch)&&t.push(i.marker.parent||i.marker)}return t},findMarks:function(i,o,l){i=be(this,i),o=be(this,o);var s=[],a=i.line;return this.iter(i.line,o.line+1,function(e){var t=e.markedSpans;if(t)for(var n=0;n<t.length;n++){var r=t[n];null!=r.to&&a==i.line&&i.ch>=r.to||null==r.from&&a!=i.line||null!=r.from&&a==o.line&&r.from>=o.ch||l&&!l(r.marker)||s.push(r.marker.parent||r.marker)}++a}),s},getAllMarks:function(){var r=[];return this.iter(function(e){var t=e.markedSpans;if(t)for(var n=0;n<t.length;++n)null!=t[n].from&&r.push(t[n].marker)}),r},posFromIndex:function(t){var n,r=this.first,i=this.lineSeparator().length;return this.iter(function(e){e=e.text.length+i;if(t<e)return n=t,!0;t-=e,++r}),be(this,de(r,n))},indexFromPos:function(e){var t=(e=be(this,e)).ch;if(e.line<this.first||e.ch<0)return 0;var n=this.lineSeparator().length;return this.iter(this.first,e.line,function(e){t+=e.text.length+n}),t},copy:function(e){var t=new no(le(this,this.first,this.first+this.size),this.modeOption,this.first,this.lineSep,this.direction);return t.scrollTop=this.scrollTop,t.scrollLeft=this.scrollLeft,t.sel=this.sel,t.extend=!1,e&&(t.history.undoDepth=this.history.undoDepth,t.setHistory(this.getHistory())),t},linkedDoc:function(e){e=e||{};var t=this.first,n=this.first+this.size;null!=e.from&&e.from>t&&(t=e.from),null!=e.to&&e.to<n&&(n=e.to);t=new no(le(this,t,n),e.mode||this.modeOption,t,this.lineSep,this.direction);return e.sharedHist&&(t.history=this.history),(this.linked||(this.linked=[])).push({doc:t,sharedHist:e.sharedHist}),t.linked=[{doc:this,isParent:!0,sharedHist:e.sharedHist}],function(e,t){for(var n=0;n<t.length;n++){var r=t[n],i=r.find(),o=e.clipPos(i.from),i=e.clipPos(i.to);fe(o,i)&&(i=Zi(e,o,i,r.primary,r.primary.type),r.markers.push(i),i.parent=r)}}(t,Ji(this)),t},unlinkDoc:function(e){if(e instanceof Qo&&(e=e.doc),this.linked)for(var t=0;t<this.linked.length;++t)if(this.linked[t].doc==e){this.linked.splice(t,1),e.unlinkDoc(this),eo(Ji(this));break}var n;e.history==this.history&&(n=[e.id],ai(e,function(e){return n.push(e.id)},!0),e.history=new hi(null),e.history.done=yi(this.history.done,n),e.history.undone=yi(this.history.undone,n))},iterLinkedDocs:function(e){ai(this,e)},getMode:function(){return this.mode},getEditor:function(){return this.cm},splitLines:function(e){return this.lineSep?e.split(this.lineSep):vt(e)},lineSeparator:function(){return this.lineSep||'\\n'},setDirection:Ar(function(e){var t;'rtl'!=e&&(e='ltr'),e!=this.direction&&(this.direction=e,this.iter(function(e){return e.order=null}),this.cm&&Mr(t=this.cm,function(){ci(t),Wr(t)}))})}),no.prototype.eachLine=no.prototype.iter;var ro=0;function io(e){var r=this;if(oo(r),!it(r,e)&&!hn(r.display,e)){at(e),b&&(ro=+new Date);var i=_n(r,e,!0),t=e.dataTransfer.files;if(i&&!r.isReadOnly())if(t&&t.length&&window.FileReader&&window.File)for(var o=t.length,l=Array(o),s=0,n=0;n<o;++n)!function(e,t){var n;r.options.allowDropFileTypes&&-1==z(r.options.allowDropFileTypes,e.type)||((n=new FileReader).onload=Nr(r,function(){var e=n.result;/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(e)&&(e=''),l[t]=e,++s==o&&(e={from:i=be(r.doc,i),to:i,text:r.doc.splitLines(l.join(r.doc.lineSeparator())),origin:'paste'},Pi(r.doc,e),Li(r.doc,Jr(i,ei(e))))}),n.readAsText(e))}(t[n],n);else{if(r.state.draggingText&&-1<r.doc.sel.contains(i))return r.state.draggingText(e),void setTimeout(function(){return r.display.input.focus()},20);try{var a,u=e.dataTransfer.getData('Text');if(u){if(r.state.draggingText&&!r.state.draggingText.copy&&(a=r.listSelections()),Ti(r.doc,Jr(i,i)),a)for(var c=0;c<a.length;++c)Bi(r.doc,'',a[c].anchor,a[c].head,'drag');r.replaceSelection(u,'around','paste'),r.display.input.focus()}}catch(e){}}}}function oo(e){e.display.dragCursor&&(e.display.lineSpace.removeChild(e.display.dragCursor),e.display.dragCursor=null)}function lo(e){if(document.getElementsByClassName)for(var t=document.getElementsByClassName('CodeMirror'),n=0;n<t.length;n++){var r=t[n].CodeMirror;r&&e(r)}}var so=!1;function ao(e){var t=e.display;t.lastWrapHeight==t.wrapper.clientHeight&&t.lastWrapWidth==t.wrapper.clientWidth||(t.cachedCharWidth=t.cachedTextHeight=t.cachedPaddingH=null,t.scrollbarsClipped=!1,e.setSize())}for(var uo={3:'Pause',8:'Backspace',9:'Tab',13:'Enter',16:'Shift',17:'Ctrl',18:'Alt',19:'Pause',20:'CapsLock',27:'Esc',32:'Space',33:'PageUp',34:'PageDown',35:'End',36:'Home',37:'Left',38:'Up',39:'Right',40:'Down',44:'PrintScrn',45:'Insert',46:'Delete',59:';',61:'=',91:'Mod',92:'Mod',93:'Mod',106:'*',107:'=',109:'-',110:'.',111:'/',127:'Delete',145:'ScrollLock',173:'-',186:';',187:'=',188:',',189:'-',190:'.',191:'/',192:'`',219:'[',220:'\\\\',221:']',222:'\\'',63232:'Up',63233:'Down',63234:'Left',63235:'Right',63272:'Delete',63273:'Home',63275:'End',63276:'PageUp',63277:'PageDown',63302:'Insert'},co=0;co<10;co++)uo[co+48]=uo[co+96]=String(co);for(var ho=65;ho<=90;ho++)uo[ho]=String.fromCharCode(ho);for(var fo=1;fo<=12;fo++)uo[fo+111]=uo[fo+63235]='F'+fo;var po={};function go(e){var t,n,r,i,o=e.split(/-(?!$)/);e=o[o.length-1];for(var l=0;l<o.length-1;l++){var s=o[l];if(/^(cmd|meta|m)$/i.test(s))i=!0;else if(/^a(lt)?$/i.test(s))t=!0;else if(/^(c|ctrl|control)$/i.test(s))n=!0;else{if(!/^s(hift)?$/i.test(s))throw new Error('Unrecognized modifier name: '+s);r=!0}}return t&&(e='Alt-'+e),n&&(e='Ctrl-'+e),i&&(e='Cmd-'+e),r&&(e='Shift-'+e),e}function mo(e,t,n,r){var i=(t=wo(t)).call?t.call(e,r):t[e];if(!1===i)return'nothing';if('...'===i)return'multi';if(null!=i&&n(i))return'handled';if(t.fallthrough){if('[object Array]'!=Object.prototype.toString.call(t.fallthrough))return mo(e,t.fallthrough,n,r);for(var o=0;o<t.fallthrough.length;o++){var l=mo(e,t.fallthrough[o],n,r);if(l)return l}}}function vo(e){e='string'==typeof e?e:uo[e.keyCode];return'Ctrl'==e||'Alt'==e||'Shift'==e||'Mod'==e}function yo(e,t,n){var r=e;return t.altKey&&'Alt'!=r&&(e='Alt-'+e),(h?t.metaKey:t.ctrlKey)&&'Ctrl'!=r&&(e='Ctrl-'+e),(h?t.ctrlKey:t.metaKey)&&'Cmd'!=r&&(e='Cmd-'+e),!n&&t.shiftKey&&'Shift'!=r&&(e='Shift-'+e),e}function bo(e,t){if(f&&34==e.keyCode&&e.char)return!1;var n=uo[e.keyCode];return null!=n&&!e.altGraphKey&&(3==e.keyCode&&e.code&&(n=e.code),yo(n,e,t))}function wo(e){return'string'==typeof e?po[e]:e}function xo(t,e){for(var n=t.doc.sel.ranges,r=[],i=0;i<n.length;i++){for(var o=e(n[i]);r.length&&fe(o.from,X(r).to)<=0;){var l=r.pop();if(fe(l.from,o.from)<0){o.from=l.from;break}}r.push(o)}Mr(t,function(){for(var e=r.length-1;0<=e;e--)Bi(t.doc,'',r[e].from,r[e].to,'+delete');dr(t)})}function Co(e,t,n){n=ne(e.text,t+n,n);return n<0||n>e.text.length?null:n}function So(e,t,n){e=Co(e,t.ch,n);return null==e?null:new de(t.line,e,n<0?'after':'before')}function Lo(e,t,n,r,i){if(e){var o=Qe(n,t.doc.direction);if(o){var l,s,a,e=i<0?X(o):o[0],o=i<0==(1==e.level)?'after':'before';return 0<e.level||'rtl'==t.doc.direction?(l=xn(t,n),s=i<0?n.text.length-1:0,a=Cn(t,l,s).top,s=re(function(e){return Cn(t,l,e).top==a},i<0==(1==e.level)?e.from:e.to-1,s),'before'==o&&(s=Co(n,s,1))):s=i<0?e.to:e.from,new de(r,s,o)}}return new de(r,i<0?n.text.length:0,i<0?'before':'after')}po.basic={Left:'goCharLeft',Right:'goCharRight',Up:'goLineUp',Down:'goLineDown',End:'goLineEnd',Home:'goLineStartSmart',PageUp:'goPageUp',PageDown:'goPageDown',Delete:'delCharAfter',Backspace:'delCharBefore','Shift-Backspace':'delCharBefore',Tab:'defaultTab','Shift-Tab':'indentAuto',Enter:'newlineAndIndent',Insert:'toggleOverwrite',Esc:'singleSelection'},po.pcDefault={'Ctrl-A':'selectAll','Ctrl-D':'deleteLine','Ctrl-Z':'undo','Shift-Ctrl-Z':'redo','Ctrl-Y':'redo','Ctrl-Home':'goDocStart','Ctrl-End':'goDocEnd','Ctrl-Up':'goLineUp','Ctrl-Down':'goLineDown','Ctrl-Left':'goGroupLeft','Ctrl-Right':'goGroupRight','Alt-Left':'goLineStart','Alt-Right':'goLineEnd','Ctrl-Backspace':'delGroupBefore','Ctrl-Delete':'delGroupAfter','Ctrl-S':'save','Ctrl-F':'find','Ctrl-G':'findNext','Shift-Ctrl-G':'findPrev','Shift-Ctrl-F':'replace','Shift-Ctrl-R':'replaceAll','Ctrl-[':'indentLess','Ctrl-]':'indentMore','Ctrl-U':'undoSelection','Shift-Ctrl-U':'redoSelection','Alt-U':'redoSelection',fallthrough:'basic'},po.emacsy={'Ctrl-F':'goCharRight','Ctrl-B':'goCharLeft','Ctrl-P':'goLineUp','Ctrl-N':'goLineDown','Alt-F':'goWordRight','Alt-B':'goWordLeft','Ctrl-A':'goLineStart','Ctrl-E':'goLineEnd','Ctrl-V':'goPageDown','Shift-Ctrl-V':'goPageUp','Ctrl-D':'delCharAfter','Ctrl-H':'delCharBefore','Alt-D':'delWordAfter','Alt-Backspace':'delWordBefore','Ctrl-K':'killLine','Ctrl-T':'transposeChars','Ctrl-O':'openLine'},po.macDefault={'Cmd-A':'selectAll','Cmd-D':'deleteLine','Cmd-Z':'undo','Shift-Cmd-Z':'redo','Cmd-Y':'redo','Cmd-Home':'goDocStart','Cmd-Up':'goDocStart','Cmd-End':'goDocEnd','Cmd-Down':'goDocEnd','Alt-Left':'goGroupLeft','Alt-Right':'goGroupRight','Cmd-Left':'goLineLeft','Cmd-Right':'goLineRight','Alt-Backspace':'delGroupBefore','Ctrl-Alt-Backspace':'delGroupAfter','Alt-Delete':'delGroupAfter','Cmd-S':'save','Cmd-F':'find','Cmd-G':'findNext','Shift-Cmd-G':'findPrev','Cmd-Alt-F':'replace','Shift-Cmd-Alt-F':'replaceAll','Cmd-[':'indentLess','Cmd-]':'indentMore','Cmd-Backspace':'delWrappedLineLeft','Cmd-Delete':'delWrappedLineRight','Cmd-U':'undoSelection','Shift-Cmd-U':'redoSelection','Ctrl-Up':'goDocStart','Ctrl-Down':'goDocEnd',fallthrough:['basic','emacsy']},po.default=C?po.macDefault:po.pcDefault;var ko={selectAll:Hi,singleSelection:function(e){return e.setSelection(e.getCursor('anchor'),e.getCursor('head'),B)},killLine:function(n){return xo(n,function(e){if(e.empty()){var t=ie(n.doc,e.head.line).text.length;return e.head.ch==t&&e.head.line<n.lastLine()?{from:e.head,to:de(e.head.line+1,0)}:{from:e.head,to:de(e.head.line,t)}}return{from:e.from(),to:e.to()}})},deleteLine:function(t){return xo(t,function(e){return{from:de(e.from().line,0),to:be(t.doc,de(e.to().line+1,0))}})},delLineLeft:function(e){return xo(e,function(e){return{from:de(e.from().line,0),to:e.from()}})},delWrappedLineLeft:function(n){return xo(n,function(e){var t=n.charCoords(e.head,'div').top+5;return{from:n.coordsChar({left:0,top:t},'div'),to:e.from()}})},delWrappedLineRight:function(n){return xo(n,function(e){var t=n.charCoords(e.head,'div').top+5,t=n.coordsChar({left:n.display.lineDiv.offsetWidth+100,top:t},'div');return{from:e.from(),to:t}})},undo:function(e){return e.undo()},redo:function(e){return e.redo()},undoSelection:function(e){return e.undoSelection()},redoSelection:function(e){return e.redoSelection()},goDocStart:function(e){return e.extendSelection(de(e.firstLine(),0))},goDocEnd:function(e){return e.extendSelection(de(e.lastLine()))},goLineStart:function(t){return t.extendSelectionsBy(function(e){return To(t,e.head.line)},{origin:'+move',bias:1})},goLineStartSmart:function(t){return t.extendSelectionsBy(function(e){return Mo(t,e.head)},{origin:'+move',bias:1})},goLineEnd:function(i){return i.extendSelectionsBy(function(e){return t=i,n=e.head.line,r=ie(t.doc,n),(e=function(e){for(var t;t=Fe(e);)e=t.find(1,!0).line;return e}(r))!=r&&(n=ae(e)),Lo(!0,t,r,n,-1);var t,n,r},{origin:'+move',bias:-1})},goLineRight:function(t){return t.extendSelectionsBy(function(e){e=t.cursorCoords(e.head,'div').top+5;return t.coordsChar({left:t.display.lineDiv.offsetWidth+100,top:e},'div')},U)},goLineLeft:function(t){return t.extendSelectionsBy(function(e){e=t.cursorCoords(e.head,'div').top+5;return t.coordsChar({left:0,top:e},'div')},U)},goLineLeftSmart:function(n){return n.extendSelectionsBy(function(e){var t=n.cursorCoords(e.head,'div').top+5,t=n.coordsChar({left:0,top:t},'div');return t.ch<n.getLine(t.line).search(/\\S/)?Mo(n,e.head):t},U)},goLineUp:function(e){return e.moveV(-1,'line')},goLineDown:function(e){return e.moveV(1,'line')},goPageUp:function(e){return e.moveV(-1,'page')},goPageDown:function(e){return e.moveV(1,'page')},goCharLeft:function(e){return e.moveH(-1,'char')},goCharRight:function(e){return e.moveH(1,'char')},goColumnLeft:function(e){return e.moveH(-1,'column')},goColumnRight:function(e){return e.moveH(1,'column')},goWordLeft:function(e){return e.moveH(-1,'word')},goGroupRight:function(e){return e.moveH(1,'group')},goGroupLeft:function(e){return e.moveH(-1,'group')},goWordRight:function(e){return e.moveH(1,'word')},delCharBefore:function(e){return e.deleteH(-1,'char')},delCharAfter:function(e){return e.deleteH(1,'char')},delWordBefore:function(e){return e.deleteH(-1,'word')},delWordAfter:function(e){return e.deleteH(1,'word')},delGroupBefore:function(e){return e.deleteH(-1,'group')},delGroupAfter:function(e){return e.deleteH(1,'group')},indentAuto:function(e){return e.indentSelection('smart')},indentMore:function(e){return e.indentSelection('add')},indentLess:function(e){return e.indentSelection('subtract')},insertTab:function(e){return e.replaceSelection('\\t')},insertSoftTab:function(e){for(var t=[],n=e.listSelections(),r=e.options.tabSize,i=0;i<n.length;i++){var o=n[i].from(),o=P(e.getLine(o.line),o.ch,r);t.push(j(r-o%r))}e.replaceSelections(t)},defaultTab:function(e){e.somethingSelected()?e.indentSelection('add'):e.execCommand('insertTab')},transposeChars:function(l){return Mr(l,function(){for(var e,t,n,r=l.listSelections(),i=[],o=0;o<r.length;o++)r[o].empty()&&(e=r[o].head,(t=ie(l.doc,e.line).text)&&(e.ch==t.length&&(e=new de(e.line,e.ch-1)),0<e.ch?(e=new de(e.line,e.ch+1),l.replaceRange(t.charAt(e.ch-1)+t.charAt(e.ch-2),de(e.line,e.ch-2),e,'+transpose')):e.line>l.doc.first&&((n=ie(l.doc,e.line-1).text)&&(e=new de(e.line,1),l.replaceRange(t.charAt(0)+l.doc.lineSeparator()+n.charAt(n.length-1),de(e.line-1,n.length-1),e,'+transpose')))),i.push(new Zr(e,e)));l.setSelections(i)})},newlineAndIndent:function(r){return Mr(r,function(){for(var e=r.listSelections(),t=e.length-1;0<=t;t--)r.replaceRange(r.doc.lineSeparator(),e[t].anchor,e[t].head,'+input');e=r.listSelections();for(var n=0;n<e.length;n++)r.indentLine(e[n].from().line,null,!0);dr(r)})},openLine:function(e){return e.replaceSelection('\\n','start')},toggleOverwrite:function(e){return e.toggleOverwrite()}};function To(e,t){var n=ie(e.doc,t),r=Ee(n);return r!=n&&(t=ae(r)),Lo(!0,e,r,t,1)}function Mo(e,t){var n=To(e,t.line),r=ie(e.doc,n.line),e=Qe(r,e.doc.direction);if(e&&0!=e[0].level)return n;r=Math.max(0,r.text.search(/\\S/)),t=t.line==n.line&&t.ch<=r&&t.ch;return de(n.line,t?0:r,n.sticky)}function No(e,t,n){if('string'==typeof t&&!(t=ko[t]))return!1;e.display.input.ensurePolled();var r=e.display.shift,i=!1;try{e.isReadOnly()&&(e.state.suppressEdits=!0),n&&(e.display.shift=!1),i=t(e)!=R}finally{e.display.shift=r,e.state.suppressEdits=!1}return i}var Oo=new E;function Ao(e,t,n,r){var i=e.state.keySeq;if(i){if(vo(t))return'handled';if(/\\'$/.test(t)?e.state.keySeq=null:Oo.set(50,function(){e.state.keySeq==i&&(e.state.keySeq=null,e.display.input.reset())}),Wo(e,i+' '+t,n,r))return!0}return Wo(e,t,n,r)}function Wo(e,t,n,r){r=function(e,t,n){for(var r=0;r<e.state.keyMaps.length;r++){var i=mo(t,e.state.keyMaps[r],n,e);if(i)return i}return e.options.extraKeys&&mo(t,e.options.extraKeys,n,e)||mo(t,e.options.keyMap,n,e)}(e,t,r);return'multi'==r&&(e.state.keySeq=t),'handled'==r&&en(e,'keyHandled',e,t,n),'handled'!=r&&'multi'!=r||(at(n),er(e)),!!r}function Do(t,e){var n=bo(e,!0);return!!n&&(e.shiftKey&&!t.state.keySeq?Ao(t,'Shift-'+n,e,function(e){return No(t,e,!0)})||Ao(t,n,e,function(e){if('string'==typeof e?/^go[A-Z]/.test(e):e.motion)return No(t,e)}):Ao(t,n,e,function(e){return No(t,e)}))}var Ho=null;function Fo(e){var t,n,r,i=this;function o(e){18!=e.keyCode&&e.altKey||(v(r,'CodeMirror-crosshair'),nt(document,'keyup',o),nt(document,'mouseover',o))}i.curOp.focus=O(),it(i,e)||(b&&w<11&&27==e.keyCode&&(e.returnValue=!1),t=e.keyCode,i.display.shift=16==t||e.shiftKey,n=Do(i,e),f&&(Ho=n?t:null,!n&&88==t&&!bt&&(C?e.metaKey:e.ctrlKey)&&i.replaceSelection('',null,'cut')),18!=t||/\\bCodeMirror-crosshair\\b/.test(i.display.lineDiv.className)||(A(r=i.display.lineDiv,'CodeMirror-crosshair'),et(document,'keyup',o),et(document,'mouseover',o)))}function Po(e){16==e.keyCode&&(this.doc.sel.shift=!1),it(this,e)}function Eo(e){var t=this;if(!(hn(t.display,e)||it(t,e)||e.ctrlKey&&!e.altKey||C&&e.metaKey)){var n,r=e.keyCode,i=e.charCode;if(f&&r==Ho)return Ho=null,void at(e);f&&(!e.which||e.which<10)&&Do(t,e)||'\\b'!=(i=String.fromCharCode(null==i?r:i))&&(Ao(n=t,'\\''+i+'\\'',e,function(e){return No(n,e,!0)})||t.display.input.onKeyPress(e))}}var zo,Io,Ro=function(e,t,n){this.time=e,this.pos=t,this.button=n};function Bo(e){var t,n,r,i,o,l,s,a=this,u=a.display;it(a,e)||u.activeTouch&&u.input.supportsTouch()||(u.input.ensurePolled(),u.shift=e.shiftKey,hn(u,e)?x||(u.scroller.draggable=!1,setTimeout(function(){return u.scroller.draggable=!0},100)):Vo(a,e)||(n=_n(a,e),r=ft(e),i=n?(i=n,s=r,t=+new Date,Io&&Io.compare(t,i,s)?(zo=Io=null,'triple'):zo&&zo.compare(t,i,s)?(Io=new Ro(t,i,s),zo=null,'double'):(zo=new Ro(t,i,s),Io=null,'single')):'single',window.focus(),1==r&&a.state.selectingText&&a.state.selectingText(e),n&&(l=n,s='Click','double'==i?s='Double'+s:'triple'==i&&(s='Triple'+s),Ao(o=a,yo(s=(1==r?'Left':2==r?'Middle':'Right')+s,e),e,function(e){if('string'==typeof e&&(e=ko[e]),!e)return!1;var t=!1;try{o.isReadOnly()&&(o.state.suppressEdits=!0),t=e(o,l)!=R}finally{o.state.suppressEdits=!1}return t}))||(1==r?n?function(e,t,n,r){b?setTimeout(H(tr,e),0):e.curOp.focus=O();var i,o,l,s,a,u,c,h,d,f,p,g,m,v=(l=n,v=r,s=(o=e).getOption('configureMouse'),null==(y=s?s(o,l,v):{}).unit&&(s=S?v.shiftKey&&v.metaKey:v.altKey,y.unit=s?'rectangle':'single'==l?'char':'double'==l?'word':'line'),null!=y.extend&&!o.doc.extend||(y.extend=o.doc.extend||v.shiftKey),null==y.addNew&&(y.addNew=C?v.metaKey:v.ctrlKey),null==y.moveOnDrag&&(y.moveOnDrag=!(C?v.altKey:v.ctrlKey)),y),y=e.doc.sel;e.options.dragDrop&&mt&&!e.isReadOnly()&&'single'==n&&-1<(i=y.contains(t))&&(fe((i=y.ranges[i]).from(),t)<0||0<t.xRel)&&(0<fe(i.to(),t)||t.xRel<0)?(u=r,c=t,h=v,d=(a=e).display,f=!1,p=Nr(a,function(e){x&&(d.scroller.draggable=!1),a.state.draggingText=!1,nt(d.wrapper.ownerDocument,'mouseup',p),nt(d.wrapper.ownerDocument,'mousemove',g),nt(d.scroller,'dragstart',m),nt(d.scroller,'drop',p),f||(at(e),h.addNew||wi(a.doc,c,null,null,h.extend),x||b&&9==w?setTimeout(function(){d.wrapper.ownerDocument.body.focus(),d.input.focus()},20):d.input.focus())}),g=function(e){f=f||10<=Math.abs(u.clientX-e.clientX)+Math.abs(u.clientY-e.clientY)},m=function(){return f=!0},x&&(d.scroller.draggable=!0),(a.state.draggingText=p).copy=!h.moveOnDrag,d.scroller.dragDrop&&d.scroller.dragDrop(),et(d.wrapper.ownerDocument,'mouseup',p),et(d.wrapper.ownerDocument,'mousemove',g),et(d.scroller,'dragstart',m),et(d.scroller,'drop',p),nr(a),setTimeout(function(){return d.input.focus()},20)):function(d,e,f,p){var l=d.display,g=d.doc;at(e);var m,v,y=g.sel,t=y.ranges;p.addNew&&!p.extend?(m=g.sel.contains(f),v=-1<m?t[m]:new Zr(f,f)):(v=g.sel.primary(),m=g.sel.primIndex),'rectangle'==p.unit?(p.addNew||(v=new Zr(f,f)),f=_n(d,e,!0,!0),m=-1):(e=Go(d,f,p.unit),v=p.extend?bi(v,e.anchor,e.head,p.extend):e),p.addNew?-1==m?(m=t.length,ki(g,Qr(t.concat([v]),m),{scroll:!1,origin:'*mouse'})):1<t.length&&t[m].empty()&&'char'==p.unit&&!p.extend?(ki(g,Qr(t.slice(0,m).concat(t.slice(m+1)),0),{scroll:!1,origin:'*mouse'}),y=g.sel):Ci(g,m,v,G):(ki(g,new $r([v],m=0),G),y=g.sel);var b=f,s=l.wrapper.getBoundingClientRect(),a=0;function n(e){d.state.selectingText=!1,a=1/0,at(e),l.input.focus(),nt(l.wrapper.ownerDocument,'mousemove',r),nt(l.wrapper.ownerDocument,'mouseup',i),g.history.lastSelOrigin=null}var r=Nr(d,function(e){(ft(e)?function e(t){var n,r,i=++a,o=_n(d,t,!0,'rectangle'==p.unit);o&&(0!=fe(o,b)?(d.curOp.focus=O(),function(e){if(0!=fe(b,e))if(b=e,'rectangle'==p.unit){for(var t=[],n=d.options.tabSize,r=P(ie(g,f.line).text,f.ch,n),i=P(ie(g,e.line).text,e.ch,n),o=Math.min(r,i),l=Math.max(r,i),s=Math.min(f.line,e.line),a=Math.min(d.lastLine(),Math.max(f.line,e.line));s<=a;s++){var u=ie(g,s).text,c=V(u,o,n);o==l?t.push(new Zr(de(s,c),de(s,c))):u.length>c&&t.push(new Zr(de(s,c),de(s,V(u,l,n))))}t.length||t.push(new Zr(f,f)),ki(g,Qr(y.ranges.slice(0,m).concat(t),m),{origin:'*mouse',scroll:!1}),d.scrollIntoView(e)}else{var h,r=v,i=Go(d,e,p.unit),e=r.anchor,e=0<fe(i.anchor,e)?(h=i.head,ve(r.from(),i.anchor)):(h=i.anchor,me(r.to(),i.head)),i=y.ranges.slice(0);i[m]=function(e,t){var n=t.anchor,r=t.head,i=ie(e.doc,n.line);if(0==fe(n,r)&&n.sticky==r.sticky)return t;var o=Qe(i);if(!o)return t;var l=Ke(o,n.ch,n.sticky),s=o[l];if(s.from!=n.ch&&s.to!=n.ch)return t;var i=l+(s.from==n.ch==(1!=s.level)?0:1);if(0==i||i==o.length)return t;var a=o[i+((i=r.line!=n.line?0<(r.line-n.line)*('ltr'==e.doc.direction?1:-1):(a=(o=Ke(o,r.ch,r.sticky))-l||(r.ch-n.ch)*(1==s.level?-1:1),o==i-1||o==i?a<0:0<a))?-1:0)],i=i==(1==a.level),a=i?a.from:a.to,i=i?'after':'before';return n.ch==a&&n.sticky==i?t:new Zr(new de(n.line,a,i),r)}(d,new Zr(be(g,e),h)),ki(g,Qr(i,m),G)}}(o),n=sr(l,g),(o.line>=n.to||o.line<n.from)&&setTimeout(Nr(d,function(){a==i&&e(t)}),150)):(r=t.clientY<s.top?-20:t.clientY>s.bottom?20:0)&&setTimeout(Nr(d,function(){a==i&&(l.scroller.scrollTop+=r,e(t))}),50))}:n)(e)}),i=Nr(d,n);d.state.selectingText=i,et(l.wrapper.ownerDocument,'mousemove',r),et(l.wrapper.ownerDocument,'mouseup',i)}(e,r,t,v)}(a,n,i,e):dt(e)==u.scroller&&at(e):2==r?(n&&wi(a.doc,n),setTimeout(function(){return u.input.focus()},20)):3==r&&(p?Ko(a,e):nr(a)))))}function Go(e,t,n){if('char'==n)return new Zr(t,t);if('word'==n)return e.findWordAt(t);if('line'==n)return new Zr(de(t.line,0),be(e.doc,de(t.line+1,0)));t=n(e,t);return new Zr(t.from,t.to)}function Uo(e,t,n,r){var i,o;if(t.touches)i=t.touches[0].clientX,o=t.touches[0].clientY;else try{i=t.clientX,o=t.clientY}catch(t){return!1}if(i>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;r&&at(t);var l=e.display,r=l.lineDiv.getBoundingClientRect();if(o>r.bottom||!lt(e,n))return ct(t);o-=r.top-l.viewOffset;for(var s=0;s<e.options.gutters.length;++s){var a=l.gutters.childNodes[s];if(a&&a.getBoundingClientRect().right>=i)return rt(e,n,e,ue(e.doc,o),e.options.gutters[s],t),ct(t)}}function Vo(e,t){return Uo(e,t,'gutterClick',!0)}function Ko(e,t){hn(e.display,t)||lt(e,'gutterContextMenu')&&Uo(e,t,'gutterContextMenu',!1)||it(e,t,'contextmenu')||e.display.input.onContextMenu(t)}function jo(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\\s*cm-s-\\S+/g,'')+e.options.theme.replace(/(^|\\s)\\s*/g,' cm-s-'),Nn(e)}Ro.prototype.compare=function(e,t,n){return this.time+400>e&&0==fe(t,this.pos)&&n==this.button};var Xo={toString:function(){return'CodeMirror.Init'}},Yo={},_o={};function qo(e){Kr(e),Wr(e),ar(e)}function $o(e,t,n){!t!=!(n&&n!=Xo)&&(n=e.display.dragFunctions,(t=t?et:nt)(e.display.scroller,'dragstart',n.start),t(e.display.scroller,'dragenter',n.enter),t(e.display.scroller,'dragover',n.over),t(e.display.scroller,'dragleave',n.leave),t(e.display.scroller,'drop',n.drop))}function Zo(e){e.options.lineWrapping?(A(e.display.wrapper,'CodeMirror-wrap'),e.display.sizer.style.minWidth='',e.display.sizerWidth=null):(v(e.display.wrapper,'CodeMirror-wrap'),Ue(e)),Yn(e),Wr(e),Nn(e),setTimeout(function(){return wr(e)},100)}function Qo(e,t){var n=this;if(!(this instanceof Qo))return new Qo(e,t);this.options=t=t?F(t):{},F(Yo,t,!1),jr(t);var r=t.value;'string'==typeof r&&(r=new no(r,t.mode,null,t.lineSeparator,t.direction)),this.doc=r;var i,o,l=new Qo.inputStyles[t.inputStyle](this),l=this.display=new function(e,t,n){var r=this;this.input=n,r.scrollbarFiller=M('div',null,'CodeMirror-scrollbar-filler'),r.scrollbarFiller.setAttribute('cm-not-content','true'),r.gutterFiller=M('div',null,'CodeMirror-gutter-filler'),r.gutterFiller.setAttribute('cm-not-content','true'),r.lineDiv=T('div',null,'CodeMirror-code'),r.selectionDiv=M('div',null,null,'position: relative; z-index: 1'),r.cursorDiv=M('div',null,'CodeMirror-cursors'),r.measure=M('div',null,'CodeMirror-measure'),r.lineMeasure=M('div',null,'CodeMirror-measure'),r.lineSpace=T('div',[r.measure,r.lineMeasure,r.selectionDiv,r.cursorDiv,r.lineDiv],null,'position: relative; outline: none');var i=T('div',[r.lineSpace],'CodeMirror-lines');r.mover=M('div',[i],null,'position: relative'),r.sizer=M('div',[r.mover],'CodeMirror-sizer'),r.sizerWidth=null,r.heightForcer=M('div',null,null,'position: absolute; height: '+I+'px; width: 1px;'),r.gutters=M('div',null,'CodeMirror-gutters'),r.lineGutter=null,r.scroller=M('div',[r.sizer,r.heightForcer,r.gutters],'CodeMirror-scroll'),r.scroller.setAttribute('tabIndex','-1'),r.wrapper=M('div',[r.scrollbarFiller,r.gutterFiller,r.scroller],'CodeMirror'),b&&w<8&&(r.gutters.style.zIndex=-1,r.scroller.style.paddingRight=0),x||d&&c||(r.scroller.draggable=!0),e&&(e.appendChild?e.appendChild(r.wrapper):e(r.wrapper)),r.viewFrom=r.viewTo=t.first,r.reportedViewFrom=r.reportedViewTo=t.first,r.view=[],r.renderedView=null,r.externalMeasured=null,r.viewOffset=0,r.lastWrapHeight=r.lastWrapWidth=0,r.updateLineNumbers=null,r.nativeBarWidth=r.barHeight=r.barWidth=0,r.scrollbarsClipped=!1,r.lineNumWidth=r.lineNumInnerWidth=r.lineNumChars=null,r.alignWidgets=!1,r.cachedCharWidth=r.cachedTextHeight=r.cachedPaddingH=null,r.maxLine=null,r.maxLineLength=0,r.maxLineChanged=!1,r.wheelDX=r.wheelDY=r.wheelStartX=r.wheelStartY=null,r.shift=!1,r.selForContextMenu=null,r.activeTouch=null,n.init(r)}(e,r,l);for(i in Kr(l.wrapper.CodeMirror=this),jo(this),t.lineWrapping&&(this.display.wrapper.className+=' CodeMirror-wrap'),Sr(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:!1,cutIncoming:!1,selectingText:!1,draggingText:!1,highlight:new E,keySeq:null,specialChars:null},t.autofocus&&!c&&l.input.focus(),b&&w<11&&setTimeout(function(){return n.display.input.reset(!0)},20),function(r){var i=r.display;et(i.scroller,'mousedown',Nr(r,Bo)),et(i.scroller,'dblclick',b&&w<11?Nr(r,function(e){var t;it(r,e)||(!(t=_n(r,e))||Vo(r,e)||hn(r.display,e)||(at(e),t=r.findWordAt(t),wi(r.doc,t.anchor,t.head)))}):function(e){return it(r,e)||at(e)}),p||et(i.scroller,'contextmenu',function(e){return Ko(r,e)});var n,o={end:0};function l(){i.activeTouch&&(n=setTimeout(function(){return i.activeTouch=null},1e3),(o=i.activeTouch).end=+new Date)}function s(e,t){if(null==t.left)return 1;var n=t.left-e.left,e=t.top-e.top;return 400<n*n+e*e}et(i.scroller,'touchstart',function(e){var t;it(r,e)||function(e){if(1==e.touches.length){e=e.touches[0];return e.radiusX<=1&&e.radiusY<=1}}(e)||Vo(r,e)||(i.input.ensurePolled(),clearTimeout(n),t=+new Date,i.activeTouch={start:t,moved:!1,prev:t-o.end<=300?o:null},1==e.touches.length&&(i.activeTouch.left=e.touches[0].pageX,i.activeTouch.top=e.touches[0].pageY))}),et(i.scroller,'touchmove',function(){i.activeTouch&&(i.activeTouch.moved=!0)}),et(i.scroller,'touchend',function(e){var t,n=i.activeTouch;n&&!hn(i,e)&&null!=n.left&&!n.moved&&new Date-n.start<300&&(t=r.coordsChar(i.activeTouch,'page'),t=!n.prev||s(n,n.prev)?new Zr(t,t):!n.prev.prev||s(n,n.prev.prev)?r.findWordAt(t):new Zr(de(t.line,0),be(r.doc,de(t.line+1,0))),r.setSelection(t.anchor,t.head),r.focus(),at(e)),l()}),et(i.scroller,'touchcancel',l),et(i.scroller,'scroll',function(){i.scroller.clientHeight&&(mr(r,i.scroller.scrollTop),yr(r,i.scroller.scrollLeft,!0),rt(r,'scroll',r))}),et(i.scroller,'mousewheel',function(e){return qr(r,e)}),et(i.scroller,'DOMMouseScroll',function(e){return qr(r,e)}),et(i.wrapper,'scroll',function(){return i.wrapper.scrollTop=i.wrapper.scrollLeft=0}),i.dragFunctions={enter:function(e){it(r,e)||ht(e)},over:function(e){var t,n;it(r,e)||((n=_n(t=r,e))&&(Qn(t,n,n=document.createDocumentFragment()),t.display.dragCursor||(t.display.dragCursor=M('div',null,'CodeMirror-cursors CodeMirror-dragcursors'),t.display.lineSpace.insertBefore(t.display.dragCursor,t.display.cursorDiv)),k(t.display.dragCursor,n)),ht(e))},start:function(e){return t=r,n=e,void(b&&(!t.state.draggingText||+new Date-ro<100)?ht(n):it(t,n)||hn(t.display,n)||(n.dataTransfer.setData('Text',t.getSelection()),n.dataTransfer.effectAllowed='copyMove',!n.dataTransfer.setDragImage||a)||((e=M('img',null,null,'position: fixed; left: 0; top: 0;')).src='data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==',f&&(e.width=e.height=1,t.display.wrapper.appendChild(e),e._top=e.offsetTop),n.dataTransfer.setDragImage(e,0,0),f&&e.parentNode.removeChild(e)));var t,n},drop:Nr(r,io),leave:function(e){it(r,e)||oo(r)}};var e=i.input.getField();et(e,'keyup',function(e){return Po.call(r,e)}),et(e,'keydown',Nr(r,Fo)),et(e,'keypress',Nr(r,Eo)),et(e,'focus',function(e){return rr(r,e)}),et(e,'blur',function(e){return ir(r,e)})}(this),so||(et(window,'resize',function(){null==o&&(o=setTimeout(function(){o=null,lo(ao)},100))}),et(window,'blur',function(){return lo(ir)}),so=!0),kr(this),this.curOp.forceUpdate=!0,ui(this,r),t.autofocus&&!c||this.hasFocus()?setTimeout(H(rr,this),20):ir(this),_o)_o.hasOwnProperty(i)&&_o[i](n,t[i],Xo);ur(this),t.finishInit&&t.finishInit(this);for(var s=0;s<Jo.length;++s)Jo[s](n);Tr(this),x&&t.lineWrapping&&'optimizelegibility'==getComputedStyle(l.lineDiv).textRendering&&(l.lineDiv.style.textRendering='auto')}Qo.defaults=Yo,Qo.optionHandlers=_o;var Jo=[];function el(e,t,n,r){var i,o=e.doc;null==n&&(n='add'),'smart'==n&&(o.mode.indent?i=Ft(e,t).state:n='prev');var l=e.options.tabSize,s=ie(o,t),a=P(s.text,null,l);s.stateAfter&&(s.stateAfter=null);var u,c=s.text.match(/^\\s*/)[0];if(r||/\\S/.test(s.text)){if('smart'==n&&((u=o.mode.indent(i,s.text.slice(c.length),s.text))==R||150<u)){if(!r)return;n='prev'}}else u=0,n='not';'prev'==n?u=t>o.first?P(ie(o,t-1).text,null,l):0:'add'==n?u=a+e.options.indentUnit:'subtract'==n?u=a-e.options.indentUnit:'number'==typeof n&&(u=a+n),u=Math.max(0,u);var h='',d=0;if(e.options.indentWithTabs)for(var f=Math.floor(u/l);f;--f)d+=l,h+='\\t';if(d<u&&(h+=j(u-d)),h!=c)return Bi(o,h,de(t,0),de(t,c.length),'+input'),!(s.stateAfter=null);for(var p=0;p<o.sel.ranges.length;p++){var g=o.sel.ranges[p];if(g.head.line==t&&g.head.ch<c.length){g=de(t,c.length);Ci(o,p,new Zr(g,g));break}}}Qo.defineInitHook=function(e){return Jo.push(e)};var tl=null;function nl(e){tl=e}function rl(e,t,n,r,i){var o=e.doc;e.display.shift=!1,r=r||o.sel;var l,s=e.state.pasteIncoming||'paste'==i,a=vt(t),u=null;if(s&&1<r.ranges.length)if(tl&&tl.text.join('\\n')==t){if(r.ranges.length%tl.text.length==0){u=[];for(var c=0;c<tl.text.length;c++)u.push(o.splitLines(tl.text[c]))}}else a.length==r.ranges.length&&e.options.pasteLinesPerSelection&&(u=Y(a,function(e){return[e]}));for(var h=r.ranges.length-1;0<=h;h--){var d=r.ranges[h],f=d.from(),p=d.to();d.empty()&&(n&&0<n?f=de(f.line,f.ch-n):e.state.overwrite&&!s?p=de(p.line,Math.min(ie(o,p.line).text.length,p.ch+X(a).length)):tl&&tl.lineWise&&tl.text.join('\\n')==t&&(f=p=de(f.line,0))),l=e.curOp.updateInput;p={from:f,to:p,text:u?u[h%u.length]:a,origin:i||(s?'paste':e.state.cutIncoming?'cut':'+input')};Pi(e.doc,p),en(e,'inputRead',e,p)}t&&!s&&ol(e,t),dr(e),e.curOp.updateInput=l,e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=!1}function il(e,t){var n=e.clipboardData&&e.clipboardData.getData('Text');return n&&(e.preventDefault(),t.isReadOnly()||t.options.disableInput||Mr(t,function(){return rl(t,n,0,null,'paste')}),1)}function ol(e,t){if(e.options.electricChars&&e.options.smartIndent)for(var n=e.doc.sel,r=n.ranges.length-1;0<=r;r--){var i=n.ranges[r];if(!(100<i.head.ch||r&&n.ranges[r-1].head.line==i.head.line)){var o=e.getModeAt(i.head),l=!1;if(o.electricChars){for(var s=0;s<o.electricChars.length;s++)if(-1<t.indexOf(o.electricChars.charAt(s))){l=el(e,i.head.line,'smart');break}}else o.electricInput&&o.electricInput.test(ie(e.doc,i.head.line).text.slice(0,i.head.ch))&&(l=el(e,i.head.line,'smart'));l&&en(e,'electricInput',e,i.head.line)}}}function ll(e){for(var t=[],n=[],r=0;r<e.doc.sel.ranges.length;r++){var i=e.doc.sel.ranges[r].head.line,i={anchor:de(i,0),head:de(i+1,0)};n.push(i),t.push(e.getRange(i.anchor,i.head))}return{text:t,ranges:n}}function sl(e,t){e.setAttribute('autocorrect','off'),e.setAttribute('autocapitalize','off'),e.setAttribute('spellcheck',!!t)}function al(){var e=M('textarea',null,null,'position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none'),t=M('div',[e],null,'overflow: hidden; position: relative; width: 3px; height: 0px;');return x?e.style.width='1000px':e.setAttribute('wrap','off'),s&&(e.style.border='1px solid black'),sl(e),t}function ul(r,i,o,e,l){var t=i,n=o,s=ie(r,i.line);function a(e){var t,n;if(null==(t=l?function(t,n,s,e){var a=Qe(n,t.doc.direction);if(!a)return So(n,s,e);s.ch>=n.text.length?(s.ch=n.text.length,s.sticky='before'):s.ch<=0&&(s.ch=0,s.sticky='after');var r=Ke(a,s.ch,s.sticky),i=a[r];if('ltr'==t.doc.direction&&i.level%2==0&&(0<e?i.to>s.ch:i.from<s.ch))return So(n,s,e);function u(e,t){return Co(n,e instanceof de?e.ch:e,t)}function o(e){return t.options.lineWrapping?(l=l||xn(t,n),Bn(t,n,l,e)):{begin:0,end:n.text.length}}var l,c=o('before'==s.sticky?u(s,-1):s.ch);if('rtl'==t.doc.direction||1==i.level){var h=1==i.level==e<0,d=u(s,h?1:-1);if(null!=d&&(h?d<=i.to&&d<=c.end:d>=i.from&&d>=c.begin)){var f=h?'before':'after';return new de(s.line,d,f)}}f=function(e,t,n){for(var r=function(e,t){return t?new de(s.line,u(e,1),'before'):new de(s.line,e,'after')};0<=e&&e<a.length;e+=t){var i=a[e],o=0<t==(1!=i.level),l=o?n.begin:u(n.end,-1);if(i.from<=l&&l<i.to)return r(l,o);if(l=o?i.from:u(i.to,-1),n.begin<=l&&l<n.end)return r(l,o)}},r=f(r+e,e,c);if(r)return r;c=0<e?c.end:u(c.begin,-1);return null==c||0<e&&c==n.text.length||!(r=f(0<e?0:a.length-1,e,o(c)))?null:r}(r.cm,s,i,o):So(s,i,o))){if(e||(n=i.line+o)<r.first||n>=r.first+r.size||(i=new de(n,i.ch,i.sticky),!(s=ie(r,n))))return;i=Lo(l,r.cm,s,i.line,o)}else i=t;return 1}if('char'==e)a();else if('column'==e)a(!0);else if('word'==e||'group'==e)for(var u=null,c='group'==e,h=r.cm&&r.cm.getHelper(i,'wordChars'),d=!0;!(o<0)||a(!d);d=!1){var f=s.text.charAt(i.ch)||'\\n',f=Q(f,h)?'w':c&&'\\n'==f?'n':!c||/\\s/.test(f)?null:'p';if(!c||d||f||(f='s'),u&&u!=f){o<0&&(o=1,a(),i.sticky='after');break}if(f&&(u=f),0<o&&!a(!d))break}n=Wi(r,i,t,n,!0);return pe(t,n)&&(n.hitSide=!0),n}function cl(e,t,n,r){var i,o,l,s=e.doc,a=t.left;for('page'==r?(o=Math.min(e.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight),o=Math.max(o-.5*Un(e.display),3),l=(0<n?t.bottom:t.top)+n*o):'line'==r&&(l=0<n?t.bottom+3:t.top-3);(i=In(e,a,l)).outside;){if(n<0?l<=0:l>=s.height){i.hitSide=!0;break}l+=5*n}return i}e=function(e){this.cm=e,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new E,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};function hl(e,t){var n=wn(e,t.line);if(!n||n.hidden)return null;var r=ie(e.doc,t.line),n=yn(n,r,t.line),r=Qe(r,e.doc.direction),e='left';r&&(e=Ke(r,t.ch)%2?'right':'left');e=kn(n.map,t.ch,e);return e.offset='right'==e.collapse?e.end:e.start,e}function dl(e,t){return t&&(e.bad=!0),e}function fl(e,t,n){var r;if(t==e.display.lineDiv){if(!(r=e.display.lineDiv.childNodes[n]))return dl(e.clipPos(de(e.display.viewTo-1)),!0);t=null,n=0}else for(r=t;;r=r.parentNode){if(!r||r==e.display.lineDiv)return null;if(r.parentNode&&r.parentNode==e.display.lineDiv)break}for(var i=0;i<e.display.view.length;i++){var o=e.display.view[i];if(o.node==r)return function(u,e,t){var n=u.text.firstChild,r=!1;if(!e||!N(n,e))return dl(de(ae(u.line),0),!0);if(e==n&&(r=!0,e=n.childNodes[t],t=0,!e)){var i=u.rest?X(u.rest):u.line;return dl(de(ae(i),i.text.length),r)}var i=3==e.nodeType?e:null,o=e;for(i||1!=e.childNodes.length||3!=e.firstChild.nodeType||(i=e.firstChild,t=t&&i.nodeValue.length);o.parentNode!=n;)o=o.parentNode;var c=u.measure,h=c.maps;function l(e,t,n){for(var r=-1;r<(h?h.length:0);r++)for(var i=r<0?c.map:h[r],o=0;o<i.length;o+=3){var l=i[o+2];if(l==e||l==t){var s=ae(r<0?u.line:u.rest[r]),a=i[o]+n;return(n<0||l!=e)&&(a=i[o+(n?1:0)]),de(s,a)}}}var s=l(i,o,t);if(s)return dl(s,r);for(var a=o.nextSibling,d=i?i.nodeValue.length-t:0;a;a=a.nextSibling){if(s=l(a,a.firstChild,0))return dl(de(s.line,s.ch-d),r);d+=a.textContent.length}for(var f=o.previousSibling,p=t;f;f=f.previousSibling){if(s=l(f,f.firstChild,-1))return dl(de(s.line,s.ch+p),r);p+=f.textContent.length}}(o,t,n)}}e.prototype.init=function(e){var t=this,o=this,l=o.cm,s=o.div=e.lineDiv;function n(e){if(!it(l,e)){if(l.somethingSelected())nl({lineWise:!1,text:l.getSelections()}),'cut'==e.type&&l.replaceSelection('',null,'cut');else{if(!l.options.lineWiseCopyCut)return;var t=ll(l);nl({lineWise:!0,text:t.text}),'cut'==e.type&&l.operation(function(){l.setSelections(t.ranges,0,B),l.replaceSelection('',null,'cut')})}if(e.clipboardData){e.clipboardData.clearData();var n=tl.text.join('\\n');if(e.clipboardData.setData('Text',n),e.clipboardData.getData('Text')==n)return void e.preventDefault()}var r=al(),e=r.firstChild;l.display.lineSpace.insertBefore(r,l.display.lineSpace.firstChild),e.value=tl.text.join('\\n');var i=document.activeElement;D(e),setTimeout(function(){l.display.lineSpace.removeChild(r),i.focus(),i==s&&o.showPrimarySelection()},50)}}sl(s,l.options.spellcheck),et(s,'paste',function(e){it(l,e)||il(e,l)||w<=11&&setTimeout(Nr(l,function(){return t.updateFromDOM()}),20)}),et(s,'compositionstart',function(e){t.composing={data:e.data,done:!1}}),et(s,'compositionupdate',function(e){t.composing||(t.composing={data:e.data,done:!1})}),et(s,'compositionend',function(e){t.composing&&(e.data!=t.composing.data&&t.readFromDOMSoon(),t.composing.done=!0)}),et(s,'touchstart',function(){return o.forceCompositionEnd()}),et(s,'input',function(){t.composing||t.readFromDOMSoon()}),et(s,'copy',n),et(s,'cut',n)},e.prototype.prepareSelection=function(){var e=Zn(this.cm,!1);return e.focus=this.cm.state.focused,e},e.prototype.showSelection=function(e,t){e&&this.cm.display.view.length&&((e.focus||t)&&this.showPrimarySelection(),this.showMultipleSelections(e))},e.prototype.showPrimarySelection=function(){var e=window.getSelection(),t=this.cm,n=t.doc.sel.primary(),r=n.from(),i=n.to();if(t.display.viewTo==t.display.viewFrom||r.line>=t.display.viewTo||i.line<t.display.viewFrom)e.removeAllRanges();else{var o=fl(t,e.anchorNode,e.anchorOffset),n=fl(t,e.focusNode,e.focusOffset);if(!o||o.bad||!n||n.bad||0!=fe(ve(o,n),r)||0!=fe(me(o,n),i)){var n=t.display.view,l=r.line>=t.display.viewFrom&&hl(t,r)||{node:n[0].measure.map[2],offset:0},s=i.line<t.display.viewTo&&hl(t,i);if(s||(s={node:(u=(u=n[n.length-1].measure).maps?u.maps[u.maps.length-1]:u.map)[u.length-1],offset:u[u.length-2]-u[u.length-3]}),l&&s){var a,u=e.rangeCount&&e.getRangeAt(0);try{a=y(l.node,l.offset,s.offset,s.node)}catch(e){}a&&(!d&&t.state.focused?(e.collapse(l.node,l.offset),a.collapsed||(e.removeAllRanges(),e.addRange(a))):(e.removeAllRanges(),e.addRange(a)),u&&null==e.anchorNode?e.addRange(u):d&&this.startGracePeriod()),this.rememberSelection()}else e.removeAllRanges()}}},e.prototype.startGracePeriod=function(){var e=this;clearTimeout(this.gracePeriod),this.gracePeriod=setTimeout(function(){e.gracePeriod=!1,e.selectionChanged()&&e.cm.operation(function(){return e.cm.curOp.selectionChanged=!0})},20)},e.prototype.showMultipleSelections=function(e){k(this.cm.display.cursorDiv,e.cursors),k(this.cm.display.selectionDiv,e.selection)},e.prototype.rememberSelection=function(){var e=window.getSelection();this.lastAnchorNode=e.anchorNode,this.lastAnchorOffset=e.anchorOffset,this.lastFocusNode=e.focusNode,this.lastFocusOffset=e.focusOffset},e.prototype.selectionInEditor=function(){var e=window.getSelection();if(!e.rangeCount)return!1;e=e.getRangeAt(0).commonAncestorContainer;return N(this.div,e)},e.prototype.focus=function(){'nocursor'!=this.cm.options.readOnly&&(this.selectionInEditor()||this.showSelection(this.prepareSelection(),!0),this.div.focus())},e.prototype.blur=function(){this.div.blur()},e.prototype.getField=function(){return this.div},e.prototype.supportsTouch=function(){return!0},e.prototype.receivedFocus=function(){var t=this;this.selectionInEditor()?this.pollSelection():Mr(this.cm,function(){return t.cm.curOp.selectionChanged=!0}),this.polling.set(this.cm.options.pollInterval,function e(){t.cm.state.focused&&(t.pollSelection(),t.polling.set(t.cm.options.pollInterval,e))})},e.prototype.selectionChanged=function(){var e=window.getSelection();return e.anchorNode!=this.lastAnchorNode||e.anchorOffset!=this.lastAnchorOffset||e.focusNode!=this.lastFocusNode||e.focusOffset!=this.lastFocusOffset},e.prototype.pollSelection=function(){if(null==this.readDOMTimeout&&!this.gracePeriod&&this.selectionChanged()){var e,t,n=window.getSelection(),r=this.cm;if(u&&o&&this.cm.options.gutters.length&&function(){for(var e=n.anchorNode;e;e=e.parentNode)if(/CodeMirror-gutter-wrapper/.test(e.className))return 1}())return this.cm.triggerOnKeyDown({type:'keydown',keyCode:8,preventDefault:Math.abs}),this.blur(),void this.focus();this.composing||(this.rememberSelection(),e=fl(r,n.anchorNode,n.anchorOffset),t=fl(r,n.focusNode,n.focusOffset),e&&t&&Mr(r,function(){ki(r.doc,Jr(e,t),B),(e.bad||t.bad)&&(r.curOp.selectionChanged=!0)}))}},e.prototype.pollContent=function(){null!=this.readDOMTimeout&&(clearTimeout(this.readDOMTimeout),this.readDOMTimeout=null);var e,t=this.cm,n=t.display,r=t.doc.sel.primary(),i=r.from(),r=r.to();if(0==i.ch&&i.line>t.firstLine()&&(i=de(i.line-1,ie(t.doc,i.line-1).length)),r.ch==ie(t.doc,r.line).text.length&&r.line<t.lastLine()&&(r=de(r.line+1,0)),i.line<n.viewFrom||r.line>n.viewTo-1)return!1;m=i.line==n.viewFrom||0==(m=qn(t,i.line))?(e=ae(n.view[0].line),n.view[0].node):(e=ae(n.view[m].line),n.view[m-1].node.nextSibling);var o,r=qn(t,r.line),r=r==n.view.length-1?(o=n.viewTo-1,n.lineDiv.lastChild):(o=ae(n.view[r+1].line)-1,n.view[r+1].node.previousSibling);if(!m)return!1;for(var l=t.doc.splitLines(function(l,e,t,s,a){var n='',u=!1,c=l.doc.lineSeparator();function h(){u&&(n+=c,u=!1)}function d(e){e&&(h(),n+=e)}for(;function e(t){if(1==t.nodeType){var n=t.getAttribute('cm-text');if(null!=n)return d(n||t.textContent.replace(/\\u200b/g,'')),0;if(n=t.getAttribute('cm-marker'))return(n=l.findMarks(de(s,0),de(a+1,0),(o=+n,function(e){return e.id==o}))).length&&(r=n[0].find(0))&&d(oe(l.doc,r.from,r.to).join(c)),0;if('false'!=t.getAttribute('contenteditable')){var r=/^(pre|div|p)$/i.test(t.nodeName);r&&h();for(var i=0;i<t.childNodes.length;i++)e(t.childNodes[i]);r&&(u=!0)}}else 3==t.nodeType&&d(t.nodeValue);var o}(e),e!=t;)e=e.nextSibling;return n}(t,m,r,e,o)),s=oe(t.doc,de(e,0),de(o,ie(t.doc,o).text.length));1<l.length&&1<s.length;)if(X(l)==X(s))l.pop(),s.pop(),o--;else{if(l[0]!=s[0])break;l.shift(),s.shift(),e++}for(var a=0,u=0,c=l[0],h=s[0],d=Math.min(c.length,h.length);a<d&&c.charCodeAt(a)==h.charCodeAt(a);)++a;for(var f=X(l),p=X(s),g=Math.min(f.length-(1==l.length?a:0),p.length-(1==s.length?a:0));u<g&&f.charCodeAt(f.length-u-1)==p.charCodeAt(p.length-u-1);)++u;if(1==l.length&&1==s.length&&e==i.line)for(;a&&a>i.ch&&f.charCodeAt(f.length-u-1)==p.charCodeAt(p.length-u-1);)a--,u++;l[l.length-1]=f.slice(0,f.length-u).replace(/^\\u200b+/,''),l[0]=l[0].slice(a).replace(/\\u200b+$/,'');var m=de(e,a),r=de(o,s.length?X(s).length-u:0);return 1<l.length||l[0]||fe(m,r)?(Bi(t.doc,l,m,r,'+input'),!0):void 0},e.prototype.ensurePolled=function(){this.forceCompositionEnd()},e.prototype.reset=function(){this.forceCompositionEnd()},e.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},e.prototype.readFromDOMSoon=function(){var e=this;null==this.readDOMTimeout&&(this.readDOMTimeout=setTimeout(function(){if(e.readDOMTimeout=null,e.composing){if(!e.composing.done)return;e.composing=null}e.updateFromDOM()},80))},e.prototype.updateFromDOM=function(){var e=this;!this.cm.isReadOnly()&&this.pollContent()||Mr(this.cm,function(){return Wr(e.cm)})},e.prototype.setUneditable=function(e){e.contentEditable='false'},e.prototype.onKeyPress=function(e){0==e.charCode||this.composing||(e.preventDefault(),this.cm.isReadOnly()||Nr(this.cm,rl)(this.cm,String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),0))},e.prototype.readOnlyChanged=function(e){this.div.contentEditable=String('nocursor'!=e)},e.prototype.onContextMenu=function(){},e.prototype.resetPosition=function(){},e.prototype.needsContentAttribute=!0;var pl,gl,ml,vl,yl,r=function(e){this.cm=e,this.prevInput='',this.pollingFast=!1,this.polling=new E,this.hasSelection=!1,this.composing=null};function bl(e,t,r,n){vl.defaults[e]=t,r&&(yl[e]=n?function(e,t,n){n!=Xo&&r(e,t,n)}:r)}r.prototype.init=function(t){var e=this,n=this,r=this.cm;this.createField(t);var i=this.textarea;function o(e){if(!it(r,e)){if(r.somethingSelected())nl({lineWise:!1,text:r.getSelections()});else{if(!r.options.lineWiseCopyCut)return;var t=ll(r);nl({lineWise:!0,text:t.text}),'cut'==e.type?r.setSelections(t.ranges,null,B):(n.prevInput='',i.value=t.text.join('\\n'),D(i))}'cut'==e.type&&(r.state.cutIncoming=!0)}}t.wrapper.insertBefore(this.wrapper,t.wrapper.firstChild),s&&(i.style.width='0px'),et(i,'input',function(){b&&9<=w&&e.hasSelection&&(e.hasSelection=null),n.poll()}),et(i,'paste',function(e){it(r,e)||il(e,r)||(r.state.pasteIncoming=!0,n.fastPoll())}),et(i,'cut',o),et(i,'copy',o),et(t.scroller,'paste',function(e){hn(t,e)||it(r,e)||(r.state.pasteIncoming=!0,n.focus())}),et(t.lineSpace,'selectstart',function(e){hn(t,e)||at(e)}),et(i,'compositionstart',function(){var e=r.getCursor('from');n.composing&&n.composing.range.clear(),n.composing={start:e,range:r.markText(e,r.getCursor('to'),{className:'CodeMirror-composing'})}}),et(i,'compositionend',function(){n.composing&&(n.poll(),n.composing.range.clear(),n.composing=null)})},r.prototype.createField=function(e){this.wrapper=al(),this.textarea=this.wrapper.firstChild},r.prototype.prepareSelection=function(){var e,t=this.cm,n=t.display,r=t.doc,i=Zn(t);return t.options.moveInputWithCursor&&(e=Pn(t,r.sel.primary().head,'div'),t=n.wrapper.getBoundingClientRect(),r=n.lineDiv.getBoundingClientRect(),i.teTop=Math.max(0,Math.min(n.wrapper.clientHeight-10,e.top+r.top-t.top)),i.teLeft=Math.max(0,Math.min(n.wrapper.clientWidth-10,e.left+r.left-t.left))),i},r.prototype.showSelection=function(e){var t=this.cm.display;k(t.cursorDiv,e.cursors),k(t.selectionDiv,e.selection),null!=e.teTop&&(this.wrapper.style.top=e.teTop+'px',this.wrapper.style.left=e.teLeft+'px')},r.prototype.reset=function(e){var t,n;this.contextMenuPending||this.composing||((t=this.cm).somethingSelected()?(this.prevInput='',n=t.getSelection(),this.textarea.value=n,t.state.focused&&D(this.textarea),b&&9<=w&&(this.hasSelection=n)):e||(this.prevInput=this.textarea.value='',b&&9<=w&&(this.hasSelection=null)))},r.prototype.getField=function(){return this.textarea},r.prototype.supportsTouch=function(){return!1},r.prototype.focus=function(){if('nocursor'!=this.cm.options.readOnly&&(!c||O()!=this.textarea))try{this.textarea.focus()}catch(e){}},r.prototype.blur=function(){this.textarea.blur()},r.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},r.prototype.receivedFocus=function(){this.slowPoll()},r.prototype.slowPoll=function(){var e=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){e.poll(),e.cm.state.focused&&e.slowPoll()})},r.prototype.fastPoll=function(){var t=!1,n=this;n.pollingFast=!0,n.polling.set(20,function e(){n.poll()||t?(n.pollingFast=!1,n.slowPoll()):(t=!0,n.polling.set(60,e))})},r.prototype.poll=function(){var e=this,t=this.cm,n=this.textarea,r=this.prevInput;if(this.contextMenuPending||!t.state.focused||yt(n)&&!r&&!this.composing||t.isReadOnly()||t.options.disableInput||t.state.keySeq)return!1;var i=n.value;if(i==r&&!t.somethingSelected())return!1;if(b&&9<=w&&this.hasSelection===i||C&&/[\\uf700-\\uf7ff]/.test(i))return t.display.input.reset(),!1;if(t.doc.sel==t.display.selForContextMenu){var o=i.charCodeAt(0);if(8203!=o||r||(r=''),8666==o)return this.reset(),this.cm.execCommand('undo')}for(var l=0,s=Math.min(r.length,i.length);l<s&&r.charCodeAt(l)==i.charCodeAt(l);)++l;return Mr(t,function(){rl(t,i.slice(l),r.length-l,null,e.composing?'*compose':null),1e3<i.length||-1<i.indexOf('\\n')?n.value=e.prevInput='':e.prevInput=i,e.composing&&(e.composing.range.clear(),e.composing.range=t.markText(e.composing.start,t.getCursor('to'),{className:'CodeMirror-composing'}))}),!0},r.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},r.prototype.onKeyPress=function(){b&&9<=w&&(this.hasSelection=null),this.fastPoll()},r.prototype.onContextMenu=function(e){var n,r,t,i,o=this,l=o.cm,s=l.display,a=o.textarea,u=_n(l,e),c=s.scroller.scrollTop;function h(){var e,t;null!=a.selectionStart&&(t=''+((e=l.somethingSelected())?a.value:''),a.value='⇚',a.value=t,o.prevInput=e?'':'',a.selectionStart=1,a.selectionEnd=t.length,s.selForContextMenu=l.doc.sel)}function d(){var e,t;o.contextMenuPending=!1,o.wrapper.style.cssText=r,a.style.cssText=n,b&&w<9&&s.scrollbars.setScrollTop(s.scroller.scrollTop=c),null!=a.selectionStart&&((!b||b&&w<9)&&h(),e=0,t=function(){s.selForContextMenu==l.doc.sel&&0==a.selectionStart&&0<a.selectionEnd&&''==o.prevInput?Nr(l,Hi)(l):e++<10?s.detectingSelectAll=setTimeout(t,500):(s.selForContextMenu=null,s.input.reset())},s.detectingSelectAll=setTimeout(t,200))}u&&!f&&(l.options.resetSelectionOnContextMenu&&-1==l.doc.sel.contains(u)&&Nr(l,ki)(l.doc,Jr(u),B),n=a.style.cssText,r=o.wrapper.style.cssText,o.wrapper.style.cssText='position: absolute',u=o.wrapper.getBoundingClientRect(),a.style.cssText='position: absolute; width: 30px; height: 30px;\\n top: '+(e.clientY-u.top-5)+'px; left: '+(e.clientX-u.left-5)+'px;\\n z-index: 1000; background: '+(b?'rgba(255, 255, 255, .05)':'transparent')+';\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);',x&&(t=window.scrollY),s.input.focus(),x&&window.scrollTo(null,t),s.input.reset(),l.somethingSelected()||(a.value=o.prevInput=' '),o.contextMenuPending=!0,s.selForContextMenu=l.doc.sel,clearTimeout(s.detectingSelectAll),b&&9<=w&&h(),p?(ht(e),i=function(){nt(window,'mouseup',i),setTimeout(d,20)},et(window,'mouseup',i)):setTimeout(d,50))},r.prototype.readOnlyChanged=function(e){e||this.reset(),this.textarea.disabled='nocursor'==e},r.prototype.setUneditable=function(){},r.prototype.needsContentAttribute=!1,yl=(vl=Qo).optionHandlers,vl.defineOption=bl,vl.Init=Xo,bl('value','',function(e,t){return e.setValue(t)},!0),bl('mode',null,function(e,t){e.doc.modeOption=t,ii(e)},!0),bl('indentUnit',2,ii,!0),bl('indentWithTabs',!1),bl('smartIndent',!0),bl('tabSize',4,function(e){oi(e),Nn(e),Wr(e)},!0),bl('lineSeparator',null,function(e,r){if(e.doc.lineSep=r){var i=[],o=e.doc.first;e.doc.iter(function(e){for(var t=0;;){var n=e.text.indexOf(r,t);if(-1==n)break;t=n+r.length,i.push(de(o,n))}o++});for(var t=i.length-1;0<=t;t--)Bi(e.doc,r,i[t],de(i[t].line,i[t].ch+r.length))}}),bl('specialChars',/[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b-\\u200f\\u2028\\u2029\\ufeff]/g,function(e,t,n){e.state.specialChars=new RegExp(t.source+(t.test('\\t')?'':'|\\t'),'g'),n!=Xo&&e.refresh()}),bl('specialCharPlaceholder',Yt,function(e){return e.refresh()},!0),bl('electricChars',!0),bl('inputStyle',c?'contenteditable':'textarea',function(){throw new Error('inputStyle can not (yet) be changed in a running editor')},!0),bl('spellcheck',!1,function(e,t){return e.getInputField().spellcheck=t},!0),bl('rtlMoveVisually',!t),bl('wholeLineUpdateBefore',!0),bl('theme','default',function(e){jo(e),qo(e)},!0),bl('keyMap','default',function(e,t,n){t=wo(t),n=n!=Xo&&wo(n);n&&n.detach&&n.detach(e,t),t.attach&&t.attach(e,n||null)}),bl('extraKeys',null),bl('configureMouse',null),bl('lineWrapping',!1,Zo,!0),bl('gutters',[],function(e){jr(e.options),qo(e)},!0),bl('fixedGutter',!0,function(e,t){e.display.gutters.style.left=t?jn(e.display)+'px':'0',e.refresh()},!0),bl('coverGutterNextToScrollbar',!1,function(e){return wr(e)},!0),bl('scrollbarStyle','native',function(e){Sr(e),wr(e),e.display.scrollbars.setScrollTop(e.doc.scrollTop),e.display.scrollbars.setScrollLeft(e.doc.scrollLeft)},!0),bl('lineNumbers',!1,function(e){jr(e.options),qo(e)},!0),bl('firstLineNumber',1,qo,!0),bl('lineNumberFormatter',function(e){return e},qo,!0),bl('showCursorWhenSelecting',!1,$n,!0),bl('resetSelectionOnContextMenu',!0),bl('lineWiseCopyCut',!0),bl('pasteLinesPerSelection',!0),bl('readOnly',!1,function(e,t){'nocursor'==t&&(ir(e),e.display.input.blur()),e.display.input.readOnlyChanged(t)}),bl('disableInput',!1,function(e,t){t||e.display.input.reset()},!0),bl('dragDrop',!0,$o),bl('allowDropFileTypes',null),bl('cursorBlinkRate',530),bl('cursorScrollMargin',0),bl('cursorHeight',1,$n,!0),bl('singleCursorHeightPerLine',!0,$n,!0),bl('workTime',100),bl('workDelay',100),bl('flattenSpans',!0,oi,!0),bl('addModeClass',!1,oi,!0),bl('pollInterval',100),bl('undoDepth',200,function(e,t){return e.doc.history.undoDepth=t}),bl('historyEventDelay',1250),bl('viewportMargin',10,function(e){return e.refresh()},!0),bl('maxHighlightLength',1e4,oi,!0),bl('moveInputWithCursor',!0,function(e,t){t||e.display.input.resetPosition()}),bl('tabindex',null,function(e,t){return e.display.input.getField().tabIndex=t||''}),bl('autofocus',null),bl('direction','ltr',function(e,t){return e.doc.setDirection(t)},!0),gl=(pl=Qo).optionHandlers,ml=pl.helpers={},pl.prototype={constructor:pl,focus:function(){window.focus(),this.display.input.focus()},setOption:function(e,t){var n=this.options,r=n[e];n[e]==t&&'mode'!=e||(n[e]=t,gl.hasOwnProperty(e)&&Nr(this,gl[e])(this,t,r),rt(this,'optionChange',this,e))},getOption:function(e){return this.options[e]},getDoc:function(){return this.doc},addKeyMap:function(e,t){this.state.keyMaps[t?'push':'unshift'](wo(e))},removeKeyMap:function(e){for(var t=this.state.keyMaps,n=0;n<t.length;++n)if(t[n]==e||t[n].name==e)return t.splice(n,1),!0},addOverlay:Or(function(e,t){var n=e.token?e:pl.getMode(this.options,e);if(n.startState)throw new Error('Overlays may not be stateful.');!function(e,t,n){for(var r=0,i=n(t);r<e.length&&n(e[r])<=i;)r++;e.splice(r,0,t)}(this.state.overlays,{mode:n,modeSpec:e,opaque:t&&t.opaque,priority:t&&t.priority||0},function(e){return e.priority}),this.state.modeGen++,Wr(this)}),removeOverlay:Or(function(e){for(var t=this.state.overlays,n=0;n<t.length;++n){var r=t[n].modeSpec;if(r==e||'string'==typeof e&&r.name==e)return t.splice(n,1),this.state.modeGen++,void Wr(this)}}),indentLine:Or(function(e,t,n){'string'!=typeof t&&'number'!=typeof t&&(t=null==t?this.options.smartIndent?'smart':'prev':t?'add':'subtract'),ce(this.doc,e)&&el(this,e,t,n)}),indentSelection:Or(function(e){for(var t=this,n=this.doc.sel.ranges,r=-1,i=0;i<n.length;i++){var o=n[i];if(o.empty())o.head.line>r&&(el(t,o.head.line,e,!0),r=o.head.line,i==t.doc.sel.primIndex&&dr(t));else{for(var l=o.from(),s=o.to(),o=Math.max(r,l.line),r=Math.min(t.lastLine(),s.line-(s.ch?0:1))+1,a=o;a<r;++a)el(t,a,e);o=t.doc.sel.ranges;0==l.ch&&n.length==o.length&&0<o[i].from().ch&&Ci(t.doc,i,new Zr(l,o[i].to()),B)}}}),getTokenAt:function(e,t){return Rt(this,e,t)},getLineTokens:function(e,t){return Rt(this,de(e),t,!0)},getTokenTypeAt:function(e){e=be(this.doc,e);var t,n=Ht(this,ie(this.doc,e.line)),r=0,i=(n.length-1)/2,o=e.ch;if(0==o)t=n[2];else for(;;){var l=r+i>>1;if((l?n[2*l-1]:0)>=o)i=l;else{if(!(n[2*l+1]<o)){t=n[2*l+2];break}r=1+l}}e=t?t.indexOf('overlay '):-1;return e<0?t:0==e?null:t.slice(0,e-1)},getModeAt:function(e){var t=this.doc.mode;return t.innerMode?pl.innerMode(t,this.getTokenAt(e).state).mode:t},getHelper:function(e,t){return this.getHelpers(e,t)[0]},getHelpers:function(e,t){var n=[];if(!ml.hasOwnProperty(t))return n;var r=ml[t],i=this.getModeAt(e);if('string'==typeof i[t])r[i[t]]&&n.push(r[i[t]]);else if(i[t])for(var o=0;o<i[t].length;o++){var l=r[i[t][o]];l&&n.push(l)}else i.helperType&&r[i.helperType]?n.push(r[i.helperType]):r[i.name]&&n.push(r[i.name]);for(var s=0;s<r._global.length;s++){var a=r._global[s];a.pred(i,this)&&-1==z(n,a.val)&&n.push(a.val)}return n},getStateAfter:function(e,t){var n=this.doc;return Ft(this,(e=ye(n,null==e?n.first+n.size-1:e))+1,t).state},cursorCoords:function(e,t){var n=this.doc.sel.primary();return Pn(this,null==e?n.head:'object'==typeof e?be(this.doc,e):e?n.from():n.to(),t||'page')},charCoords:function(e,t){return Fn(this,be(this.doc,e),t||'page')},coordsChar:function(e,t){return In(this,(e=Hn(this,e,t||'page')).left,e.top)},lineAtHeight:function(e,t){return e=Hn(this,{top:e,left:0},t||'page').top,ue(this.doc,e+this.display.viewOffset)},heightAtLine:function(e,t,n){var r,i=!1,e='number'==typeof e?(r=this.doc.first+this.doc.size-1,e<this.doc.first?e=this.doc.first:r<e&&(e=r,i=!0),ie(this.doc,e)):e;return Dn(this,e,{top:0,left:0},t||'page',n||i).top+(i?this.doc.height-Be(e):0)},defaultTextHeight:function(){return Un(this.display)},defaultCharWidth:function(){return Vn(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(e,t,n,r,i){var o,l,s=this.display,a=(e=Pn(this,be(this.doc,e))).bottom,u=e.left;t.style.position='absolute',t.setAttribute('cm-ignore-events','true'),this.display.input.setUneditable(t),s.sizer.appendChild(t),'over'==r?a=e.top:'above'!=r&&'near'!=r||(o=Math.max(s.wrapper.clientHeight,this.doc.height),l=Math.max(s.sizer.clientWidth,s.lineSpace.clientWidth),('above'==r||e.bottom+t.offsetHeight>o)&&e.top>t.offsetHeight?a=e.top-t.offsetHeight:e.bottom+t.offsetHeight<=o&&(a=e.bottom),u+t.offsetWidth>l&&(u=l-t.offsetWidth)),t.style.top=a+'px',t.style.left=t.style.right='','right'==i?(u=s.sizer.clientWidth-t.offsetWidth,t.style.right='0px'):('left'==i?u=0:'middle'==i&&(u=(s.sizer.clientWidth-t.offsetWidth)/2),t.style.left=u+'px'),n&&(null!=(t=cr(this,{left:u,top:a,right:u+t.offsetWidth,bottom:a+t.offsetHeight})).scrollTop&&mr(this,t.scrollTop),null!=t.scrollLeft&&yr(this,t.scrollLeft))},triggerOnKeyDown:Or(Fo),triggerOnKeyPress:Or(Eo),triggerOnKeyUp:Po,triggerOnMouseDown:Or(Bo),execCommand:function(e){if(ko.hasOwnProperty(e))return ko[e].call(null,this)},triggerElectric:Or(function(e){ol(this,e)}),findPosH:function(e,t,n,r){var i=1;t<0&&(i=-1,t=-t);for(var o=be(this.doc,e),l=0;l<t&&!(o=ul(this.doc,o,i,n,r)).hitSide;++l);return o},moveH:Or(function(t,n){var r=this;this.extendSelectionsBy(function(e){return r.display.shift||r.doc.extend||e.empty()?ul(r.doc,e.head,t,n,r.options.rtlMoveVisually):t<0?e.from():e.to()},U)}),deleteH:Or(function(n,r){var e=this.doc.sel,i=this.doc;e.somethingSelected()?i.replaceSelection('',null,'+delete'):xo(this,function(e){var t=ul(i,e.head,n,r,!1);return n<0?{from:t,to:e.head}:{from:e.head,to:t}})}),findPosV:function(e,t,n,r){var i=1,o=r;t<0&&(i=-1,t=-t);for(var l=be(this.doc,e),s=0;s<t;++s){var a=Pn(this,l,'div');if(null==o?o=a.left:a.left=o,(l=cl(this,a,i,n)).hitSide)break}return l},moveV:Or(function(r,i){var o=this,l=this.doc,s=[],a=!this.display.shift&&!l.extend&&l.sel.somethingSelected();if(l.extendSelectionsBy(function(e){if(a)return r<0?e.from():e.to();var t=Pn(o,e.head,'div');null!=e.goalColumn&&(t.left=e.goalColumn),s.push(t.left);var n=cl(o,t,r,i);return'page'==i&&e==l.sel.primary()&&hr(o,Fn(o,n,'div').top-t.top),n},U),s.length)for(var e=0;e<l.sel.ranges.length;e++)l.sel.ranges[e].goalColumn=s[e]}),findWordAt:function(e){var t=ie(this.doc,e.line).text,n=e.ch,r=e.ch;if(t){var i=this.getHelper(e,'wordChars');'before'!=e.sticky&&r!=t.length||!n?++r:--n;for(var o=t.charAt(n),l=Q(o,i)?function(e){return Q(e,i)}:/\\s/.test(o)?function(e){return/\\s/.test(e)}:function(e){return!/\\s/.test(e)&&!Q(e)};0<n&&l(t.charAt(n-1));)--n;for(;r<t.length&&l(t.charAt(r));)++r}return new Zr(de(e.line,n),de(e.line,r))},toggleOverwrite:function(e){null!=e&&e==this.state.overwrite||(((this.state.overwrite=!this.state.overwrite)?A:v)(this.display.cursorDiv,'CodeMirror-overwrite'),rt(this,'overwriteToggle',this,this.state.overwrite))},hasFocus:function(){return this.display.input.getField()==O()},isReadOnly:function(){return!(!this.options.readOnly&&!this.doc.cantEdit)},scrollTo:Or(function(e,t){fr(this,e,t)}),getScrollInfo:function(){var e=this.display.scroller;return{left:e.scrollLeft,top:e.scrollTop,height:e.scrollHeight-gn(this)-this.display.barHeight,width:e.scrollWidth-gn(this)-this.display.barWidth,clientHeight:vn(this),clientWidth:mn(this)}},scrollIntoView:Or(function(e,t){null==e?(e={from:this.doc.sel.primary().head,to:null},null==t&&(t=this.options.cursorScrollMargin)):'number'==typeof e?e={from:de(e,0),to:null}:null==e.from&&(e={from:e,to:null}),e.to||(e.to=e.from),e.margin=t||0,null!=e.from.line?(t=e,pr(this),this.curOp.scrollToPos=t):gr(this,e.from,e.to,e.margin)}),setSize:Or(function(e,t){function n(e){return'number'==typeof e||/^\\d+$/.test(String(e))?e+'px':e}var r=this;null!=e&&(this.display.wrapper.style.width=n(e)),null!=t&&(this.display.wrapper.style.height=n(t)),this.options.lineWrapping&&Mn(this);var i=this.display.viewFrom;this.doc.iter(i,this.display.viewTo,function(e){if(e.widgets)for(var t=0;t<e.widgets.length;t++)if(e.widgets[t].noHScroll){Dr(r,i,'widget');break}++i}),this.curOp.forceUpdate=!0,rt(this,'refresh',this)}),operation:function(e){return Mr(this,e)},startOperation:function(){return kr(this)},endOperation:function(){return Tr(this)},refresh:Or(function(){var e=this.display.cachedTextHeight;Wr(this),this.curOp.forceUpdate=!0,Nn(this),fr(this,this.doc.scrollLeft,this.doc.scrollTop),Ur(this),(null==e||.5<Math.abs(e-Un(this.display)))&&Yn(this),rt(this,'refresh',this)}),swapDoc:Or(function(e){var t=this.doc;return t.cm=null,ui(this,e),Nn(this),this.display.input.reset(),fr(this,e.scrollLeft,e.scrollTop),this.curOp.forceScroll=!0,en(this,'swapDoc',this,t),t}),getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},st(pl),pl.registerHelper=function(e,t,n){ml.hasOwnProperty(e)||(ml[e]=pl[e]={_global:[]}),ml[e][t]=n},pl.registerGlobalHelper=function(e,t,n,r){pl.registerHelper(e,t,r),ml[e]._global.push({pred:n,val:r})};var wl,xl='iter insert remove copy getEditor constructor'.split(' ');for(wl in no.prototype)no.prototype.hasOwnProperty(wl)&&z(xl,wl)<0&&(Qo.prototype[wl]=function(e){return function(){return e.apply(this.doc,arguments)}}(no.prototype[wl]));return st(no),Qo.inputStyles={textarea:r,contenteditable:e},Qo.defineMode=function(e){Qo.defaults.mode||'null'==e||(Qo.defaults.mode=e),function(e,t){2<arguments.length&&(t.dependencies=Array.prototype.slice.call(arguments,2)),xt[e]=t}.apply(this,arguments)},Qo.defineMIME=function(e,t){Ct[e]=t},Qo.defineMode('null',function(){return{token:function(e){return e.skipToEnd()}}}),Qo.defineMIME('text/plain','null'),Qo.defineExtension=function(e,t){Qo.prototype[e]=t},Qo.defineDocExtension=function(e,t){no.prototype[e]=t},Qo.fromTextArea=function(t,e){var n;function r(){t.value=s.getValue()}if((e=e?F(e):{}).value=t.value,!e.tabindex&&t.tabIndex&&(e.tabindex=t.tabIndex),!e.placeholder&&t.placeholder&&(e.placeholder=t.placeholder),null==e.autofocus&&(n=O(),e.autofocus=n==t||null!=t.getAttribute('autofocus')&&n==document.body),t.form&&(et(t.form,'submit',r),!e.leaveSubmitMethodAlone)){var i=t.form,o=i.submit;try{var l=i.submit=function(){r(),i.submit=o,i.submit(),i.submit=l}}catch(t){}}e.finishInit=function(e){e.save=r,e.getTextArea=function(){return t},e.toTextArea=function(){e.toTextArea=isNaN,r(),t.parentNode.removeChild(e.getWrapperElement()),t.style.display='',t.form&&(nt(t.form,'submit',r),'function'==typeof t.form.submit&&(t.form.submit=o))}},t.style.display='none';var s=Qo(function(e){return t.parentNode.insertBefore(e,t.nextSibling)},e);return s},(e=Qo).off=nt,e.on=et,e.wheelEventPixels=function(e){return(e=_r(e)).x*=Yr,e.y*=Yr,e},e.Doc=no,e.splitLines=vt,e.countColumn=P,e.findColumn=V,e.isWordChar=Z,e.Pass=R,e.signal=rt,e.Line=Ut,e.changeEnd=ei,e.scrollbarModel=Cr,e.Pos=de,e.cmpPos=fe,e.modes=xt,e.mimeModes=Ct,e.resolveMode=St,e.getMode=Lt,e.modeExtensions=kt,e.extendMode=function(e,t){F(t,kt.hasOwnProperty(e)?kt[e]:kt[e]={})},e.copyState=Tt,e.startState=Nt,e.innerMode=Mt,e.commands=ko,e.keyMap=po,e.keyName=bo,e.isModifierKey=vo,e.lookupKey=mo,e.normalizeKeyMap=function(e){var t,n,r={};for(t in e)if(e.hasOwnProperty(t)){var i=e[t];if(/^(name|fallthrough|(de|at)tach)$/.test(t))continue;if('...'==i){delete e[t];continue}for(var o=Y(t.split(' '),go),l=0;l<o.length;l++){var s=void 0,a=void 0,s=l==o.length-1?(a=o.join(' '),i):(a=o.slice(0,l+1).join(' '),'...'),u=r[a];if(u){if(u!=s)throw new Error('Inconsistent bindings for '+a)}else r[a]=s}delete e[t]}for(n in r)e[n]=r[n];return e},e.StringStream=Ot,e.SharedTextMarker=Qi,e.TextMarker=$i,e.LineWidget=Yi,e.e_preventDefault=at,e.e_stopPropagation=ut,e.e_stop=ht,e.addClass=A,e.contains=N,e.rmClass=v,e.keyNames=uo,Qo.version='5.37.1',Qo},'object'==typeof exports&&'undefined'!=typeof module?module.exports=t():'function'==typeof define&&define.amd?define(t):e.CodeMirror=t();","type":"application/javascript","module-type":"library"},"$:/plugins/tiddlywiki/codemirror/lib/codemirror.css":{"text":".CodeMirror{font-family:monospace;height:300px;color:black;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre{padding:0 4px}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:white}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:black}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid black;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor-mark{background-color:rgba(20,255,20,.5);-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite}.cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite;background-color:#7e7}@-moz-keyframes blink{0%{}50%{background-color:transparent}}@-webkit-keyframes blink{0%{}50%{background-color:transparent}}@keyframes blink{0%{}50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:-20px;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:blue}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3,.cm-s-default .cm-type{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta{color:#555}.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error{color:red}.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:white}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-30px;margin-right:-30px;padding-bottom:30px;height:100%;outline:none;position:relative}.CodeMirror-sizer{position:relative;border-right:30px solid transparent}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{position:absolute;z-index:6;display:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-30px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-scroll,.CodeMirror-sizer,.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:''}span.CodeMirror-selectedtext{background:none}\n","type":"text/vnd.tiddlywiki","tags":"[[$:/tags/Stylesheet]]"},"$:/plugins/tiddlywiki/codemirror/addon/dialog/dialog.css":{"text":".CodeMirror-dialog {\n position: absolute;\n left: 0; right: 0;\n background: inherit;\n z-index: 15;\n padding: .1em .8em;\n overflow: hidden;\n color: inherit;\n}\n\n.CodeMirror-dialog-top {\n border-bottom: 1px solid #eee;\n top: 0;\n}\n\n.CodeMirror-dialog-bottom {\n border-top: 1px solid #eee;\n bottom: 0;\n}\n\n.CodeMirror-dialog input {\n border: none;\n outline: none;\n background: transparent;\n width: 20em;\n color: inherit;\n font-family: monospace;\n}\n\n.CodeMirror-dialog button {\n font-size: 70%;\n}\n","type":"text/css","tags":"[[$:/tags/Stylesheet]]"},"$:/plugins/tiddlywiki/codemirror/addon/dialog/dialog.js":{"text":"var e;e=function(s){function d(e,o,n){return(e=e.getWrapperElement().appendChild(document.createElement('div'))).className=n?'CodeMirror-dialog CodeMirror-dialog-bottom':'CodeMirror-dialog CodeMirror-dialog-top','string'==typeof o?e.innerHTML=o:e.appendChild(o),e}function p(e,o){e.state.currentNotificationClose&&e.state.currentNotificationClose(),e.state.currentNotificationClose=o}s.defineExtension('openDialog',function(e,o,n){n=n||{},p(this,null);var t=d(this,e,n.bottom),i=!1,r=this;function u(e){'string'==typeof e?l.value=e:i||(i=!0,t.parentNode.removeChild(t),r.focus(),n.onClose&&n.onClose(t))}var l=t.getElementsByTagName('input')[0];return l?(l.focus(),n.value&&(l.value=n.value,!1!==n.selectValueOnOpen&&l.select()),n.onInput&&s.on(l,'input',function(e){n.onInput(e,l.value,u)}),n.onKeyUp&&s.on(l,'keyup',function(e){n.onKeyUp(e,l.value,u)}),s.on(l,'keydown',function(e){n&&n.onKeyDown&&n.onKeyDown(e,l.value,u)||((27==e.keyCode||!1!==n.closeOnEnter&&13==e.keyCode)&&(l.blur(),s.e_stop(e),u()),13==e.keyCode&&o(l.value,e))}),!1!==n.closeOnBlur&&s.on(l,'blur',u)):(e=t.getElementsByTagName('button')[0])&&(s.on(e,'click',function(){u(),r.focus()}),!1!==n.closeOnBlur&&s.on(e,'blur',u),e.focus()),u}),s.defineExtension('openConfirm',function(e,o,n){p(this,null);var t=d(this,e,n&&n.bottom),i=t.getElementsByTagName('button'),r=!1,u=this,l=1;function c(){r||(r=!0,t.parentNode.removeChild(t),u.focus())}i[0].focus();for(var a=0;a<i.length;++a){var f=i[a];!function(o){s.on(f,'click',function(e){s.e_preventDefault(e),c(),o&&o(u)})}(o[a]),s.on(f,'blur',function(){--l,setTimeout(function(){l<=0&&c()},200)}),s.on(f,'focus',function(){++l})}}),s.defineExtension('openNotification',function(e,o){p(this,r);var n,t=d(this,e,o&&o.bottom),i=!1,o=o&&void 0!==o.duration?o.duration:5e3;function r(){i||(i=!0,clearTimeout(n),t.parentNode.removeChild(t))}return s.on(t,'click',function(e){s.e_preventDefault(e),r()}),o&&(n=setTimeout(r,o)),r})},'object'==typeof exports&&'object'==typeof module?e(require('../../lib/codemirror')):'function'==typeof define&&define.amd?define(['../../lib/codemirror'],e):e(CodeMirror);","type":"application/javascript","module-type":"codemirror"},"$:/plugins/tiddlywiki/codemirror/addon/selection/activeline.js":{"text":"var e;e=function(i){'use strict';var a='CodeMirror-activeline',s='CodeMirror-activeline-background',c='CodeMirror-activeline-gutter';function l(e){for(var t=0;t<e.state.activeLines.length;t++)e.removeLineClass(e.state.activeLines[t],'wrap',a),e.removeLineClass(e.state.activeLines[t],'background',s),e.removeLineClass(e.state.activeLines[t],'gutter',c)}function r(t,e){for(var n=[],i=0;i<e.length;i++){var r=e[i],o=t.getOption('styleActiveLine');('object'==typeof o&&o.nonEmpty?r.anchor.line==r.head.line:r.empty())&&(r=t.getLineHandleVisualStart(r.head.line),n[n.length-1]!=r&&n.push(r))}!function(e,t){if(e.length==t.length){for(var n=0;n<e.length;n++)if(e[n]!=t[n])return;return 1}}(t.state.activeLines,n)&&t.operation(function(){l(t);for(var e=0;e<n.length;e++)t.addLineClass(n[e],'wrap',a),t.addLineClass(n[e],'background',s),t.addLineClass(n[e],'gutter',c);t.state.activeLines=n})}function o(e,t){r(e,t.ranges)}i.defineOption('styleActiveLine',!1,function(e,t,n){n=n!=i.Init&&n;t!=n&&(n&&(e.off('beforeSelectionChange',o),l(e),delete e.state.activeLines),t&&(e.state.activeLines=[],r(e,e.listSelections()),e.on('beforeSelectionChange',o)))})},'object'==typeof exports&&'object'==typeof module?e(require('../../lib/codemirror')):'function'==typeof define&&define.amd?define(['../../lib/codemirror'],e):e(CodeMirror);","type":"application/javascript","module-type":"codemirror"},"$:/plugins/tiddlywiki/codemirror/mode/tw-meta.js":{"text":"var e;e=function(a){'use strict';a.modeInfo=[{name:'CMake',mime:'text/x-cmake',mode:'cmake',ext:['cmake','cmake.in'],file:/^CMakeLists.txt$/},{name:'Cython',mime:'text/x-cython',mode:'python',ext:['pyx','pxd','pxi']},{name:'CSS',mime:'text/css',mode:'css',ext:['css']},{name:'diff',mime:'text/x-diff',mode:'diff',ext:['diff','patch']},{name:'Embedded Javascript',mime:'application/x-ejs',mode:'htmlembedded',ext:['ejs']},{name:'Embedded Ruby',mime:'application/x-erb',mode:'htmlembedded',ext:['erb']},{name:'Erlang',mime:'text/x-erlang',mode:'erlang',ext:['erl']},{name:'GitHub Flavored Markdown',mime:'text/x-gfm',mode:'gfm',file:/^(readme|contributing|history).md$/i},{name:'Go',mime:'text/x-go',mode:'go',ext:['go']},{name:'ASP.NET',mime:'application/x-aspx',mode:'htmlembedded',ext:['aspx'],alias:['asp','aspx']},{name:'HTML',mime:'text/html',mode:'htmlmixed',ext:['html','htm','handlebars','hbs'],alias:['xhtml']},{name:'HTTP',mime:'message/http',mode:'http'},{name:'JavaScript',mimes:['text/javascript','text/ecmascript','application/javascript','application/x-javascript','application/ecmascript'],mode:'javascript',ext:['js'],alias:['ecmascript','js','node']},{name:'JSON',mimes:['application/json','application/x-json'],mode:'javascript',ext:['json','map'],alias:['json5']},{name:'JSON-LD',mime:'application/ld+json',mode:'javascript',ext:['jsonld'],alias:['jsonld']},{name:'Lua',mime:'text/x-lua',mode:'lua',ext:['lua']},{name:'Markdown',mime:'text/x-markdown',mode:'markdown',ext:['markdown','md','mkd']},{name:'MySQL',mime:'text/x-mysql',mode:'sql'},{name:'Plain Text',mime:'text/plain',mode:'null',ext:['txt','text','conf','def','list','log']},{name:'Python',mime:'text/x-python',mode:'python',ext:['BUILD','bzl','py','pyw'],file:/^(BUCK|BUILD)$/},{name:'SCSS',mime:'text/x-scss',mode:'css',ext:['scss']},{name:'LaTeX',mime:'text/x-latex',mode:'stex',ext:['text','ltx','tex'],alias:['tex']},{name:'TiddlyWiki ',mime:'text/x-tiddlywiki',mode:'tiddlywiki'}];for(var e=0;e<a.modeInfo.length;e++){var t=a.modeInfo[e];t.mimes&&(t.mime=t.mimes[0])}a.findModeByMIME=function(e){e=e.toLowerCase();for(var t=0;t<a.modeInfo.length;t++){var m=a.modeInfo[t];if(m.mime==e)return m;if(m.mimes)for(var i=0;i<m.mimes.length;i++)if(m.mimes[i]==e)return m}return/\\+xml$/.test(e)?a.findModeByMIME('application/xml'):/\\+json$/.test(e)?a.findModeByMIME('application/json'):void 0},a.findModeByExtension=function(e){for(var t=0;t<a.modeInfo.length;t++){var m=a.modeInfo[t];if(m.ext)for(var i=0;i<m.ext.length;i++)if(m.ext[i]==e)return m}},a.findModeByFileName=function(e){for(var t=0;t<a.modeInfo.length;t++){var m=a.modeInfo[t];if(m.file&&m.file.test(e))return m}var i=e.lastIndexOf('.'),i=-1<i&&e.substring(i+1,e.length);if(i)return a.findModeByExtension(i)},a.findModeByName=function(e){e=e.toLowerCase();for(var t=0;t<a.modeInfo.length;t++){var m=a.modeInfo[t];if(m.name.toLowerCase()==e)return m;if(m.alias)for(var i=0;i<m.alias.length;i++)if(m.alias[i].toLowerCase()==e)return m}}},'object'==typeof exports&&'object'==typeof module?e(require('../lib/codemirror')):'function'==typeof define&&define.amd?define(['../lib/codemirror'],e):e(CodeMirror);","type":"application/javascript","module-type":"codemirror"},"$:/plugins/tiddlywiki/codemirror/keyboard":{"text":"\n!!Default keyboard shortcuts\n\n!!!Basic shortcuts\n\n|Shortcut |Function |h\n|Left |goCharLeft |\n|Right |goCharRight |\n|Up |goLineUp |\n|Down |goLineDown |\n|End |goLineEnd |\n|Home |goLineStartSmart |\n|~PageUp |goPageUp |\n|~PageDown |goPageDown |\n|Delete |delCharAfter |\n|Backspace |delCharBefore |\n|Shift-Backspace |delCharBefore |\n|Tab |defaultTab |\n|Shift-Tab |indentAuto |\n|Enter |newlineAndIndent |\n|Insert |toggleOverwrite |\n|Ctrl-Esc |singleSelection |\n\n\n!!!Shortcuts on Windows and Linux\n\n|Shortcut |Function |h\n|Ctrl-A |selectAll |\n|Ctrl-D |deleteLine |\n|Ctrl-Z |undo |\n|Shift-Ctrl-Z |redo |\n|Ctrl-Y |redo |\n|Ctrl-Home |goDocStart |\n|Ctrl-End |goDocEnd |\n|Ctrl-Up |goLineUp |\n|Ctrl-Down |goLineDown |\n|Ctrl-Left |goGroupLeft |\n|Ctrl-Right |goGroupRight |\n|Alt-Left |goLineStart |\n|Alt-Right |goLineEnd |\n|Ctrl-Backspace |delGroupBefore |\n|Ctrl-Delete |delGroupAfter |\n|Ctrl-F |find |\n|Ctrl-G |findNext |\n|Shift-Ctrl-G |findPrev |\n|Shift-Ctrl-F |replace |\n|Shift-Ctrl-R |replaceAll |\n|Ctrl-[ |indentLess |\n|Ctrl-] |indentMore |\n|Alt-U |undoSelection |\n|Shift-Ctrl-U |redoSelection |\n|Shift-Alt-U |redoSelection |\n\n\n!!!Shortcuts on ~MacOs\n\n|Shortcut |Function |h\n|Cmd-A |selectAll |\n|Cmd-D |deleteLine |\n|Cmd-Z |undo |\n|Shift-Cmd-Z |redo |\n|Cmd-Y |redo |\n|Cmd-Home |goDocStart |\n|Cmd-Up |goDocStart |\n|Cmd-End |goDocEnd |\n|Cmd-Down |goDocEnd |\n|Alt-Left |goGroupLeft |\n|Alt-Right |goGroupRight |\n|Cmd-Left |goLineLeft |\n|Cmd-Right |goLineRight |\n|Alt-Backspace |delGroupBefore |\n|Ctrl-Alt-Backspace |delGroupAfter |\n|Alt-Delete |delGroupAfter |\n|Cmd-F |find |\n|Cmd-G |findNext |\n|Shift-Cmd-G |findPrev |\n|Cmd-Alt-F |replace |\n|Shift-Cmd-Alt-F |replaceAll |\n|Cmd-[ |indentLess |\n|Cmd-] |indentMore |\n|Cmd-Backspace |delWrappedLineLeft |\n|Cmd-Delete |delWrappedLineRight |\n|Alt-U |undoSelection |\n|Shift-Alt-U |redoSelection |\n|Ctrl-Up |goDocStart |\n|Ctrl-Down |goDocEnd |\n|Ctrl-F |goCharRight |\n|Ctrl-B |goCharLeft |\n|Ctrl-P |goLineUp |\n|Ctrl-N |goLineDown |\n|Alt-F |goWordRight |\n|Alt-B |goWordLeft |\n|Ctrl-A |goLineStart |\n|Ctrl-E |goLineEnd |\n|Ctrl-V |goPageDown |\n|Shift-Ctrl-V |goPageUp |\n|Ctrl-D |delCharAfter |\n|Ctrl-H |delCharBefore |\n|Alt-D |delWordAfter |\n|Alt-Backspace |delWordBefore |\n|Ctrl-K |killLine |\n|Alt-T |transposeChars |\n|Ctrl-O |openLine |\n\n\n"},"$:/plugins/tiddlywiki/codemirror/license":{"text":"\"\"\"\n~CodeMirror, copyright (c) by Marijn Haverbeke and others\nDistributed under an MIT license: http://codemirror.net/LICENSE\n\nCopyright (c) 2004-2007, Jeremy Ruston\nCopyright (c) 2007-2018, UnaMesa Association\nDistributed under an BSD license: https://tiddlywiki.com/#License\n\"\"\"\n"},"$:/plugins/tiddlywiki/codemirror/readme":{"text":"This plugin provides an enhanced text editor component based on [[CodeMirror|http://codemirror.net]]. The basic configuration is designed to be as lightweight as possible and is just around 235kb of size. Additional features can be installed with ~CodeMirror ~AddOns from the plugin library.\n\n[[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/codemirror]]\n\nBased on ~CodeMirror version 5.37.0\n"},"$:/core/ui/ControlPanel/Settings/codemirror/editorFont":{"tags":"$:/tags/ControlPanel/Settings/CodeMirror","caption":"{{$:/language/codemirror/editorFont/hint}}","text":"\\define lingo-base() $:/language/ThemeTweaks/\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\"><<lingo Settings/EditorFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\" default=\"\" tag=\"input\"/> | |\n"},"$:/core/ui/ControlPanel/Settings/codemirror/keyMap":{"tags":"$:/tags/ControlPanel/Settings/CodeMirror","caption":"{{$:/language/codemirror/keyMap/hint}}","text":"\\define lingo-base() $:/language/codemirror/keyMap\n\n<$link to=\"$:/config/codemirror/keyMap\"><<lingo hint>></$link>\n\n<$select tiddler=\"$:/config/codemirror/keyMap\" default=\"default\">\n<option value=\"default\">default</option>\n<$list filter=\"[all[shadows+tiddlers]module-type[codemirror-keymap]!has[draft.of]get[text]]\">\n<option value=<<currentTiddler>>><$transclude><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n\n"},"$:/core/ui/ControlPanel/Settings/codemirror/lineNumbers":{"tags":"$:/tags/ControlPanel/Settings/CodeMirror","caption":"{{$:/language/codemirror/lineNumbers/hint}}","text":"\\define lingo-base() $:/language/codemirror/lineNumbers/\n<<lingo hint>>\n\n<$checkbox tiddler=\"$:/config/codemirror/lineNumbers\" field=\"text\" checked=\"true\" unchecked=\"false\" default=\"false\"> <$link to=\"$:/config/codemirror/lineNumbers\"><<lingo info>></$link> </$checkbox>\n\n"},"$:/core/ui/ControlPanel/Settings/codemirror/lineWrapping":{"tags":"$:/tags/ControlPanel/Settings/CodeMirror","caption":"{{$:/language/codemirror/lineWrapping/hint}}","text":"\\define lingo-base() $:/language/codemirror/lineWrapping/\n<<lingo hint>>\n\n<$checkbox tiddler=\"$:/config/codemirror/lineWrapping\" field=\"text\" checked=\"true\" unchecked=\"false\" default=\"true\"> <$link to=\"$:/config/codemirror/lineWrapping\"><<lingo info>></$link> </$checkbox>\n\n"},"$:/core/ui/ControlPanel/Settings/codemirror/showCursorWhenSelecting":{"tags":"$:/tags/ControlPanel/Settings/CodeMirror","caption":"{{$:/language/codemirror/showCursorWhenSelecting/hint}}","text":"\\define lingo-base() $:/language/codemirror/showCursorWhenSelecting/\n<<lingo hint>>\n\n<$checkbox tiddler=\"$:/config/codemirror/showCursorWhenSelecting\" field=\"text\" checked=\"true\" unchecked=\"false\" default=\"true\"> <$link to=\"$:/config/codemirror/showCursorWhenSelecting\"><<lingo info>></$link> </$checkbox>\n\n"},"$:/core/ui/ControlPanel/Settings/codemirror/styleActiveLine":{"tags":"$:/tags/ControlPanel/Settings/CodeMirror","caption":"{{$:/language/codemirror/styleActiveLine/hint}}","text":"\\define lingo-base() $:/language/codemirror/styleActiveLine/\n<<lingo hint>>\n\n<$checkbox tiddler=\"$:/config/codemirror/styleActiveLine\" field=\"text\" checked=\"true\" unchecked=\"false\" default=\"false\"> <$link to=\"$:/config/codemirror/styleActiveLine\"><<lingo info>></$link> </$checkbox>\n\n"},"$:/core/ui/ControlPanel/Settings/codemirror/theme":{"tags":"$:/tags/ControlPanel/Settings/CodeMirror","caption":"{{$:/language/codemirror/theme/hint}}","text":"\\define lingo-base() $:/language/codemirror/\n\n<$link to=\"$:/config/codemirror/theme\"><<lingo hint>></$link>\n\n<$select tiddler=\"$:/config/codemirror/theme\" default=\"default\">\n<option value=\"default\">default</option>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]module-type[codemirror-theme]!has[draft.of]get[name]]\">\n<option value=<<currentTiddler>>><$transclude field=\"name\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n\n//see the [[CodeMirror Usage|$:/plugins/tiddlywiki/codemirror/usage]] how to add themes//\n"},"$:/plugins/tiddlywiki/codemirror/styles":{"tags":"[[$:/tags/Stylesheet]]","text":"/* Make the editor resize to fit its content */\n\n.CodeMirror {\n\theight: auto;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tline-height: 1.5;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};\n}\n\n.CodeMirror-scroll {\n\toverflow-x: auto;\n\toverflow-y: hidden;\t\n}\n"},"$:/core/ui/ControlPanel/Settings/CodeMirror":{"tags":"$:/tags/ControlPanel/SettingsTab","caption":"CodeMirror","list-after":"$:/core/ui/ControlPanel/Settings/TiddlyWiki","text":"\\define lingo-base() $:/language/codemirror/controlPanel/\n\n<<lingo hint>>\n\n<$link to=\"$:/plugins/tiddlywiki/codemirror/usage\"><<lingo usage>></$link>\n\n<$link to=\"$:/plugins/tiddlywiki/codemirror/keyboard\"><<lingo keyboard>></$link>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Settings/CodeMirror]]\">\n\n<div style=\"border-top:1px solid #eee;\">\n\n!! <$link><$transclude field=\"caption\"/></$link>\n\n<$transclude/>\n\n</div>\n\n</$list>\n"},"$:/core/ui/ControlPanel/Settings":{"tags":"$:/tags/ControlPanel","caption":"{{$:/language/ControlPanel/Settings/Caption}}","text":"<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/SettingsTab]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Settings/TiddlyWiki\">>\n</div>\n"},"$:/core/ui/ControlPanel/Settings/TiddlyWiki":{"tags":"$:/tags/ControlPanel/SettingsTab","caption":"TiddlyWiki","text":"\\define lingo-base() $:/language/ControlPanel/Settings/\n\n<<lingo Hint>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Settings]]\">\n\n<div style=\"border-top:1px solid #eee;\">\n\n!! <$link><$transclude field=\"caption\"/></$link>\n\n<$transclude/>\n\n</div>\n\n</$list>\n"},"$:/plugins/tiddlywiki/codemirror/usage":{"text":"! Configuration\n\nConfiguration for the ~CodeMirror text-editor can be done from within the CodeMirror Settings Tab in the [[ControlPanel|$:/ControlPanel]] (Settings - ~CodeMirror)\n\n\n!!Setting a different Theme\n\n~CodeMirror themes are available in the [ext[official GitHub repository|https://github.com/codemirror/CodeMirror/tree/master/theme]]\n\nMore themes can be found at https://github.com/FarhadG/code-mirror-themes/tree/master/themes and previewed [ext[here|http://farhadg.github.io/code-mirror-themes/]]\n\n\nTo add a theme to your wiki, follow these four steps:\n\n* choose one of the CSS files and copy its content to a new tiddler\n* remove all comments from the top and tag the tiddler with <<tag-pill \"$:/tags/Stylesheet\">>\n* add a field \"module-type\" with the value \"codemirror-theme\". add a field \"name\" with the exact ''name'' of the theme as value\n* save the tiddler and go to the Settings tab in $:/ControlPanel - look for the \"theme\" dropdown to select your newly added theme\n\n\n!!Line Numbers\n\nTo show or hide the Line Numbers at the left, go to ~ControlPanel - Settings - ~CodeMirror and look for the \"Line Numbers\" checkbox\n\n\n!!Line Wrapping\n\nControls if long lines get visually wrapped to a new line if they're too long to fit the editor width or if the editor should scroll horizontally\n\nTo change the line-wrapping behaviour, go to ~ControlPanel - Settings - ~CodeMirror and look for the \"Line Wrapping\" checkbox\n\n\n!!Show Cursor when selecting\n\nDefines whether the Mouse cursor should be visually shown or hidden when making a text-selection\n\nTo change the show-cursor-when-selecting behaviour, go to ~ControlPanel - Settings - ~CodeMirror and look for the \"Show cursor when selecting\" checkbox\n\n\n!!~CodeMirror Font Family\n\nThe Font-Family used within the ~CodeMirror text-editor defaults to \"monospace\" which will choose your configured monospace system-font\n\nThat setting can be overridden entering one or more Font-Families in the \"Font Family\" input field at ~ControlPanel - Settings - ~CodeMirror\n\n* The entries must be separated by semicolons ','\n* Font-Family Names that contain spaces must be quoted like \"My Font\"\n* If a list of Font-Families is specified, the last Font-Family found on the user-system gets used, non-existing fonts get ignored\n* If none of the specified Font-Families is available, ~CodeMirror uses the default \"monospace\"\n\n\n!!\"Hidden\" Settings:\n\n!!!Cursor Blink Rate\n\nThe cursor blink-rate defines how fast (in milliseconds) the cursor blinks inside the textarea\n\nYou can change it by editing $:/config/codemirror/cursorBlinkRate\n\"0\" disables blinking\n\n!!!Tabsize\n\nThe Tabsize defines the width of a tab character. Default is 4.\n\nYou can change it by editing $:/config/codemirror/tabSize\n\n!!!Indent Unit\n\nNot enabled for vnd.tiddlywiki and x-tiddlywiki\n\nDefines how many spaces a text-block should be indented. Defaults to 2.\n\nYou can change it by editing $:/config/codemirror/indentUnit\n\n"}}}
{"tiddlers":{"$:/config/codemirror/autoCloseBrackets":{"type":"bool","text":"true"},"$:/config/codemirror/matchBrackets":{"type":"bool","text":"true\n"},"$:/plugins/tiddlywiki/codemirror/addon/edit/closebrackets.js":{"text":"var e;e=function(C){var n={pairs:'()[]{}\\'\\'\"\"',triples:'',explode:'[]{}'},x=C.Pos;function P(e,t){return'pairs'==t&&'string'==typeof e?e:('object'==typeof e&&null!=e[t]?e:n)[t]}C.defineOption('autoCloseBrackets',!1,function(e,t,n){n&&n!=C.Init&&(e.removeKeyMap(i),e.state.closeBrackets=null),t&&(r(P(t,'pairs')),e.state.closeBrackets=t,e.addKeyMap(i))});var i={Backspace:function(e){var t=k(e);if(!t||e.getOption('disableInput'))return C.Pass;for(var n=P(t,'pairs'),r=e.listSelections(),i=0;i<r.length;i++){if(!r[i].empty())return C.Pass;var a=s(e,r[i].head);if(!a||n.indexOf(a)%2!=0)return C.Pass}for(i=r.length-1;0<=i;i--){var o=r[i].head;e.replaceRange('',x(o.line,o.ch-1),x(o.line,o.ch+1),'+delete')}},Enter:function(r){var e=k(r),t=e&&P(e,'explode');if(!t||r.getOption('disableInput'))return C.Pass;for(var i=r.listSelections(),n=0;n<i.length;n++){if(!i[n].empty())return C.Pass;var a=s(r,i[n].head);if(!a||t.indexOf(a)%2!=0)return C.Pass}r.operation(function(){var e=r.lineSeparator()||'\\n';r.replaceSelection(e+e,null),r.execCommand('goCharLeft'),i=r.listSelections();for(var t=0;t<i.length;t++){var n=i[t].head.line;r.indentLine(n,null,!0),r.indentLine(n+1,null,!0)}})}};function r(e){for(var t=0;t<e.length;t++){var n=e.charAt(t),r='\\''+n+'\\'';i[r]||(i[r]=function(t){return function(e){return function(i,e){var t=k(i);if(!t||i.getOption('disableInput'))return C.Pass;var n=P(t,'pairs'),r=n.indexOf(e);if(-1==r)return C.Pass;for(var a,o,s=P(t,'triples'),l=n.charAt(r+1)==e,c=i.listSelections(),f=r%2==0,h=0;h<c.length;h++){var u,d=c[h],g=d.head,p=i.getRange(g,x(g.line,g.ch+1));if(f&&!d.empty())u='surround';else if(!l&&f||p!=e)if(l&&1<g.ch&&0<=s.indexOf(e)&&i.getRange(x(g.line,g.ch-2),g)==e+e){if(2<g.ch&&/\\bstring/.test(i.getTokenTypeAt(x(g.line,g.ch-2))))return C.Pass;u='addFour'}else if(l){var v=0==g.ch?' ':i.getRange(x(g.line,g.ch-1),g);if(C.isWordChar(p)||v==e||C.isWordChar(v))return C.Pass;u='both'}else{if(!f||!(i.getLine(g.line).length==g.ch||-1<(o=n.lastIndexOf(p))&&o%2==1||/\\s/.test(p)))return C.Pass;u='both'}else u=!l||(v=g,p=(o=i).getTokenAt(x(v.line,v.ch+1)),!/\\bstring/.test(p.type)||p.start!=v.ch||0!=v.ch&&/\\bstring/.test(o.getTokenTypeAt(v)))?0<=s.indexOf(e)&&i.getRange(g,x(g.line,g.ch+3))==e+e+e?'skipThree':'skip':'both';if(a){if(a!=u)return C.Pass}else a=u}var m=r%2?n.charAt(r-1):e,b=r%2?e:n.charAt(r+1);i.operation(function(){if('skip'==a)i.execCommand('goCharRight');else if('skipThree'==a)for(var e=0;e<3;e++)i.execCommand('goCharRight');else if('surround'==a){for(var t=i.getSelections(),e=0;e<t.length;e++)t[e]=m+t[e]+b;i.replaceSelections(t,'around'),t=i.listSelections().slice();for(e=0;e<t.length;e++)t[e]=(n=t[e],r=0<C.cmpPos(n.anchor,n.head),{anchor:new x(n.anchor.line,n.anchor.ch+(r?-1:1)),head:new x(n.head.line,n.head.ch+(r?1:-1))});i.setSelections(t)}else'both'==a?(i.replaceSelection(m+b,null),i.triggerElectric(m+b),i.execCommand('goCharLeft')):'addFour'==a&&(i.replaceSelection(m+m+m+m,'before'),i.execCommand('goCharRight'));var n,r})}(e,t)}}(n))}}function k(e){var t=e.state.closeBrackets;return t&&!t.override&&e.getModeAt(e.getCursor()).closeBrackets||t}function s(e,t){t=e.getRange(x(t.line,t.ch-1),x(t.line,t.ch+1));return 2==t.length?t:null}r(n.pairs+'`')},'object'==typeof exports&&'object'==typeof module?e(require('../../lib/codemirror')):'function'==typeof define&&define.amd?define(['../../lib/codemirror'],e):e(CodeMirror);","type":"application/javascript","module-type":"codemirror"},"$:/plugins/tiddlywiki/codemirror/addon/edit/matchbrackets.js":{"text":"var t;t=function(r){var s=/MSIE \\d/.test(navigator.userAgent)&&(null==document.documentMode||document.documentMode<8),d=r.Pos,k={'(':')>',')':'(<','[':']>',']':'[<','{':'}>','}':'{<'};function u(t,e,n){var r=t.getLineHandle(e.line),i=e.ch-1,a=n&&n.afterCursor;null==a&&(a=/(^| )cm-fat-cursor($| )/.test(t.getWrapperElement().className));var c=!a&&0<=i&&k[r.text.charAt(i)]||k[r.text.charAt(++i)];if(!c)return null;a='>'==c.charAt(1)?1:-1;if(n&&n.strict&&0<a!=(i==e.ch))return null;r=t.getTokenTypeAt(d(e.line,i+1)),n=o(t,d(e.line,i+(0<a?1:0)),a,r||null,n);return null==n?null:{from:d(e.line,i),to:n&&n.pos,match:n&&n.ch==c.charAt(0),forward:0<a}}function o(t,e,n,r,i){for(var a=i&&i.maxScanLineLength||1e4,c=i&&i.maxScanLines||1e3,o=[],l=i&&i.bracketRegex?i.bracketRegex:/[(){}[\\]]/,h=0<n?Math.min(e.line+c,t.lastLine()+1):Math.max(t.firstLine()-1,e.line-c),s=e.line;s!=h;s+=n){var u=t.getLine(s);if(u){var f=0<n?0:u.length-1,m=0<n?u.length:-1;if(!(u.length>a))for(s==e.line&&(f=e.ch-(n<0?1:0));f!=m;f+=n){var g=u.charAt(f);if(l.test(g)&&(void 0===r||t.getTokenTypeAt(d(s,f+1))==r))if('>'==k[g].charAt(1)==0<n)o.push(g);else{if(!o.length)return{pos:d(s,f),ch:g};o.pop()}}}}return s-n!=(0<n?t.lastLine():t.firstLine())&&null}function e(t,e,n){for(var r=t.state.matchBrackets.maxHighlightLineLength||1e3,i=[],a=t.listSelections(),c=0;c<a.length;c++){var o,l=a[c].empty()&&u(t,a[c].head,n);l&&t.getLine(l.from.line).length<=r&&(o=l.match?'CodeMirror-matchingbracket':'CodeMirror-nonmatchingbracket',i.push(t.markText(l.from,d(l.from.line,l.from.ch+1),{className:o})),l.to&&t.getLine(l.to.line).length<=r&&i.push(t.markText(l.to,d(l.to.line,l.to.ch+1),{className:o})))}if(i.length){s&&t.state.focused&&t.focus();function h(){t.operation(function(){for(var t=0;t<i.length;t++)i[t].clear()})}if(!e)return h;setTimeout(h,800)}}function i(t){t.operation(function(){t.state.matchBrackets.currentlyHighlighted&&(t.state.matchBrackets.currentlyHighlighted(),t.state.matchBrackets.currentlyHighlighted=null),t.state.matchBrackets.currentlyHighlighted=e(t,!1,t.state.matchBrackets)})}r.defineOption('matchBrackets',!1,function(t,e,n){n&&n!=r.Init&&(t.off('cursorActivity',i),t.state.matchBrackets&&t.state.matchBrackets.currentlyHighlighted&&(t.state.matchBrackets.currentlyHighlighted(),t.state.matchBrackets.currentlyHighlighted=null)),e&&(t.state.matchBrackets='object'==typeof e?e:{},t.on('cursorActivity',i))}),r.defineExtension('matchBrackets',function(){e(this,!0)}),r.defineExtension('findMatchingBracket',function(t,e,n){return!n&&'boolean'!=typeof e||(e=n?(n.strict=e,n):e?{strict:!0}:null),u(this,t,e)}),r.defineExtension('scanForBracket',function(t,e,n,r){return o(this,t,e,n,r)})},'object'==typeof exports&&'object'==typeof module?t(require('../../lib/codemirror')):'function'==typeof define&&define.amd?define(['../../lib/codemirror'],t):t(CodeMirror);","type":"application/javascript","module-type":"codemirror"},"$:/plugins/tiddlywiki/codemirror-closebrackets/readme":{"text":"This plugin adds the ability to automatically insert the closing brackets when you type an opening bracket.\nAlso enables highlighting of matching brackets.\n\nIt needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed\n\n"}}}
{"tiddlers":{"$:/plugins/tiddlywiki/codemirror/mode/css/css.js":{"text":"var e=function(B){'use strict';function e(e){for(var t={},r=0;r<e.length;++r)t[e[r].toLowerCase()]=!0;return t}B.defineMode('css',function(e,t){var r=t.inline;t.propertyKeywords||(t=B.resolveMode('text/css'));var i,o,a=e.indentUnit,n=t.tokenHooks,l=t.documentTypes||{},s=t.mediaTypes||{},c=t.mediaFeatures||{},d=t.mediaValueKeywords||{},p=t.propertyKeywords||{},u=t.nonStandardPropertyKeywords||{},m=t.fontProperties||{},h=t.counterDescriptors||{},g=t.colorKeywords||{},b=t.valueKeywords||{},f=t.allowNested,e=t.lineComment,y=!0===t.supportsAtComponent;function w(e,t){return i=t,e}function k(a){return function(e,t){for(var r,o=!1;null!=(r=e.next());){if(r==a&&!o){')'==a&&e.backUp(1);break}o=!o&&'\\\\'==r}return r!=a&&(o||')'==a)||(t.tokenize=null),i='string'}}function v(e,t){return e.next(),e.match(/\\s*[\\\"\\')]/,!1)?t.tokenize=null:t.tokenize=k(')'),i='(',null}function x(e,t,r){this.type=e,this.indent=t,this.prev=r}function z(e,t,r,o){return e.context=new x(r,t.indentation()+(!1===o?0:a),e.context),r}function j(e){return e.context.prev&&(e.context=e.context.prev),e.context.type}function P(e,t,r){return C[r.context.type](e,t,r)}function q(e,t,r,o){for(var a=o||1;0<a;a--)r.context=r.context.prev;return P(e,t,r)}function K(e){e=e.current().toLowerCase(),o=b.hasOwnProperty(e)?'atom':g.hasOwnProperty(e)?'keyword':'variable'}var C={top:function(e,t,r){if('{'==e)return z(r,t,'block');if('}'==e&&r.context.prev)return j(r);if(y&&/@component/i.test(e))return z(r,t,'atComponentBlock');if(/^@(-moz-)?document$/i.test(e))return z(r,t,'documentTypes');if(/^@(media|supports|(-moz-)?document|import)$/i.test(e))return z(r,t,'atBlock');if(/^@(font-face|counter-style)/i.test(e))return r.stateArg=e,'restricted_atBlock_before';if(/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(e))return'keyframes';if(e&&'@'==e.charAt(0))return z(r,t,'at');if('hash'==e)o='builtin';else if('word'==e)o='tag';else{if('variable-definition'==e)return'maybeprop';if('interpolation'==e)return z(r,t,'interpolation');if(':'==e)return'pseudo';if(f&&'('==e)return z(r,t,'parens')}return r.context.type},block:function(e,t,r){return'word'!=e?'meta'==e?'block':f||'hash'!=e&&'qualifier'!=e?C.top(e,t,r):(o='error','block'):(r=t.current().toLowerCase(),p.hasOwnProperty(r)?(o='property','maybeprop'):u.hasOwnProperty(r)?(o='string-2','maybeprop'):f?(o=t.match(/^\\s*:(?:\\s|$)/,!1)?'property':'tag','block'):(o+=' error','maybeprop'))},maybeprop:function(e,t,r){return':'==e?z(r,t,'prop'):P(e,t,r)},prop:function(e,t,r){if(';'==e)return j(r);if('{'==e&&f)return z(r,t,'propBlock');if('}'==e||'{'==e)return q(e,t,r);if('('==e)return z(r,t,'parens');if('hash'!=e||/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(t.current())){if('word'==e)K(t);else if('interpolation'==e)return z(r,t,'interpolation')}else o+=' error';return'prop'},propBlock:function(e,t,r){return'}'==e?j(r):'word'==e?(o='property','maybeprop'):r.context.type},parens:function(e,t,r){return'{'==e||'}'==e?q(e,t,r):')'==e?j(r):'('==e?z(r,t,'parens'):'interpolation'==e?z(r,t,'interpolation'):('word'==e&&K(t),'parens')},pseudo:function(e,t,r){return'meta'==e?'pseudo':'word'==e?(o='variable-3',r.context.type):P(e,t,r)},documentTypes:function(e,t,r){return'word'==e&&l.hasOwnProperty(t.current())?(o='tag',r.context.type):C.atBlock(e,t,r)},atBlock:function(e,t,r){return'('==e?z(r,t,'atBlock_parens'):'}'==e||';'==e?q(e,t,r):'{'==e?j(r)&&z(r,t,f?'block':'top'):'interpolation'==e?z(r,t,'interpolation'):('word'==e&&(t=t.current().toLowerCase(),o='only'==t||'not'==t||'and'==t||'or'==t?'keyword':s.hasOwnProperty(t)?'attribute':c.hasOwnProperty(t)?'property':d.hasOwnProperty(t)?'keyword':p.hasOwnProperty(t)?'property':u.hasOwnProperty(t)?'string-2':b.hasOwnProperty(t)?'atom':g.hasOwnProperty(t)?'keyword':'error'),r.context.type)},atComponentBlock:function(e,t,r){return'}'==e?q(e,t,r):'{'==e?j(r)&&z(r,t,f?'block':'top',!1):('word'==e&&(o='error'),r.context.type)},atBlock_parens:function(e,t,r){return')'==e?j(r):'{'==e||'}'==e?q(e,t,r,2):C.atBlock(e,t,r)},restricted_atBlock_before:function(e,t,r){return'{'==e?z(r,t,'restricted_atBlock'):'word'==e&&'@counter-style'==r.stateArg?(o='variable','restricted_atBlock_before'):P(e,t,r)},restricted_atBlock:function(e,t,r){return'}'==e?(r.stateArg=null,j(r)):'word'==e?(o='@font-face'==r.stateArg&&!m.hasOwnProperty(t.current().toLowerCase())||'@counter-style'==r.stateArg&&!h.hasOwnProperty(t.current().toLowerCase())?'error':'property','maybeprop'):'restricted_atBlock'},keyframes:function(e,t,r){return'word'==e?(o='variable','keyframes'):'{'==e?z(r,t,'top'):P(e,t,r)},at:function(e,t,r){return';'==e?j(r):'{'==e||'}'==e?q(e,t,r):('word'==e?o='tag':'hash'==e&&(o='builtin'),'at')},interpolation:function(e,t,r){return'}'==e?j(r):'{'==e||';'==e?q(e,t,r):('word'==e?o='variable':'variable'!=e&&'('!=e&&')'!=e&&(o='error'),'interpolation')}};return{startState:function(e){return{tokenize:null,state:r?'block':'top',stateArg:null,context:new x(r?'block':'top',e||0,null)}},token:function(e,t){if(!t.tokenize&&e.eatSpace())return null;var r=(t.tokenize||function(e,t){var r=e.next();if(n[r]){var o=n[r](e,t);if(!1!==o)return o}return'@'==r?(e.eatWhile(/[\\w\\\\\\-]/),w('def',e.current())):'='==r||('~'==r||'|'==r)&&e.eat('=')?(i='compare',null):'\"'==r||'\\''==r?(t.tokenize=k(r),t.tokenize(e,t)):'#'==r?(e.eatWhile(/[\\w\\\\\\-]/),i='hash','atom'):'!'==r?(e.match(/^\\s*\\w*/),i='important','keyword'):/\\d/.test(r)||'.'==r&&e.eat(/\\d/)?(e.eatWhile(/[\\w.%]/),i='unit','number'):'-'!==r?/[,+>*\\/]/.test(r)?(i='select-op',null):'.'==r&&e.match(/^-?[_a-z][_a-z0-9-]*/i)?i='qualifier':/[:;{}\\[\\]\\(\\)]/.test(r)?w(null,r):('u'==r||'U'==r)&&e.match(/rl(-prefix)?\\(/i)||('d'==r||'D'==r)&&e.match('omain(',!0,!0)||('r'==r||'R'==r)&&e.match('egexp(',!0,!0)?(e.backUp(1),t.tokenize=v,i='word','property'):/[\\w\\\\\\-]/.test(r)?(e.eatWhile(/[\\w\\\\\\-]/),i='word','property'):i=null:/[\\d.]/.test(e.peek())?(e.eatWhile(/[\\w.%]/),i='unit','number'):e.match(/^-[\\w\\\\\\-]+/)?(e.eatWhile(/[\\w\\\\\\-]/),i=e.match(/^\\s*:/,!1)?'variable-definition':'variable','variable-2'):e.match(/^\\w+-/)?i='meta':void 0})(e,t);return r&&'object'==typeof r&&(i=r[1],r=r[0]),o=r,'comment'!=i&&(t.state=C[t.state](i,e,t)),o},indent:function(e,t){var r=e.context,e=t&&t.charAt(0),t=r.indent;return'prop'!=r.type||'}'!=e&&')'!=e||(r=r.prev),r.prev&&('}'!=e||'block'!=r.type&&'top'!=r.type&&'interpolation'!=r.type&&'restricted_atBlock'!=r.type?(')'!=e||'parens'!=r.type&&'atBlock_parens'!=r.type)&&('{'!=e||'at'!=r.type&&'atBlock'!=r.type)||(t=Math.max(0,r.indent-a)):t=(r=r.prev).indent),t},electricChars:'}',blockCommentStart:'/*',blockCommentEnd:'*/',blockCommentContinue:' * ',lineComment:e,fold:'brace'}});var t=['domain','regexp','url','url-prefix'],r=e(t),o=['all','aural','braille','handheld','print','projection','screen','tty','tv','embossed'],a=e(o),i=['width','min-width','max-width','height','min-height','max-height','device-width','min-device-width','max-device-width','device-height','min-device-height','max-device-height','aspect-ratio','min-aspect-ratio','max-aspect-ratio','device-aspect-ratio','min-device-aspect-ratio','max-device-aspect-ratio','color','min-color','max-color','color-index','min-color-index','max-color-index','monochrome','min-monochrome','max-monochrome','resolution','min-resolution','max-resolution','scan','grid','orientation','device-pixel-ratio','min-device-pixel-ratio','max-device-pixel-ratio','pointer','any-pointer','hover','any-hover'],n=e(i),l=['landscape','portrait','none','coarse','fine','on-demand','hover','interlace','progressive'],s=e(l),c=['align-content','align-items','align-self','alignment-adjust','alignment-baseline','anchor-point','animation','animation-delay','animation-direction','animation-duration','animation-fill-mode','animation-iteration-count','animation-name','animation-play-state','animation-timing-function','appearance','azimuth','backface-visibility','background','background-attachment','background-blend-mode','background-clip','background-color','background-image','background-origin','background-position','background-repeat','background-size','baseline-shift','binding','bleed','bookmark-label','bookmark-level','bookmark-state','bookmark-target','border','border-bottom','border-bottom-color','border-bottom-left-radius','border-bottom-right-radius','border-bottom-style','border-bottom-width','border-collapse','border-color','border-image','border-image-outset','border-image-repeat','border-image-slice','border-image-source','border-image-width','border-left','border-left-color','border-left-style','border-left-width','border-radius','border-right','border-right-color','border-right-style','border-right-width','border-spacing','border-style','border-top','border-top-color','border-top-left-radius','border-top-right-radius','border-top-style','border-top-width','border-width','bottom','box-decoration-break','box-shadow','box-sizing','break-after','break-before','break-inside','caption-side','caret-color','clear','clip','color','color-profile','column-count','column-fill','column-gap','column-rule','column-rule-color','column-rule-style','column-rule-width','column-span','column-width','columns','content','counter-increment','counter-reset','crop','cue','cue-after','cue-before','cursor','direction','display','dominant-baseline','drop-initial-after-adjust','drop-initial-after-align','drop-initial-before-adjust','drop-initial-before-align','drop-initial-size','drop-initial-value','elevation','empty-cells','fit','fit-position','flex','flex-basis','flex-direction','flex-flow','flex-grow','flex-shrink','flex-wrap','float','float-offset','flow-from','flow-into','font','font-feature-settings','font-family','font-kerning','font-language-override','font-size','font-size-adjust','font-stretch','font-style','font-synthesis','font-variant','font-variant-alternates','font-variant-caps','font-variant-east-asian','font-variant-ligatures','font-variant-numeric','font-variant-position','font-weight','grid','grid-area','grid-auto-columns','grid-auto-flow','grid-auto-rows','grid-column','grid-column-end','grid-column-gap','grid-column-start','grid-gap','grid-row','grid-row-end','grid-row-gap','grid-row-start','grid-template','grid-template-areas','grid-template-columns','grid-template-rows','hanging-punctuation','height','hyphens','icon','image-orientation','image-rendering','image-resolution','inline-box-align','justify-content','justify-items','justify-self','left','letter-spacing','line-break','line-height','line-stacking','line-stacking-ruby','line-stacking-shift','line-stacking-strategy','list-style','list-style-image','list-style-position','list-style-type','margin','margin-bottom','margin-left','margin-right','margin-top','marks','marquee-direction','marquee-loop','marquee-play-count','marquee-speed','marquee-style','max-height','max-width','min-height','min-width','move-to','nav-down','nav-index','nav-left','nav-right','nav-up','object-fit','object-position','opacity','order','orphans','outline','outline-color','outline-offset','outline-style','outline-width','overflow','overflow-style','overflow-wrap','overflow-x','overflow-y','padding','padding-bottom','padding-left','padding-right','padding-top','page','page-break-after','page-break-before','page-break-inside','page-policy','pause','pause-after','pause-before','perspective','perspective-origin','pitch','pitch-range','place-content','place-items','place-self','play-during','position','presentation-level','punctuation-trim','quotes','region-break-after','region-break-before','region-break-inside','region-fragment','rendering-intent','resize','rest','rest-after','rest-before','richness','right','rotation','rotation-point','ruby-align','ruby-overhang','ruby-position','ruby-span','shape-image-threshold','shape-inside','shape-margin','shape-outside','size','speak','speak-as','speak-header','speak-numeral','speak-punctuation','speech-rate','stress','string-set','tab-size','table-layout','target','target-name','target-new','target-position','text-align','text-align-last','text-decoration','text-decoration-color','text-decoration-line','text-decoration-skip','text-decoration-style','text-emphasis','text-emphasis-color','text-emphasis-position','text-emphasis-style','text-height','text-indent','text-justify','text-outline','text-overflow','text-shadow','text-size-adjust','text-space-collapse','text-transform','text-underline-position','text-wrap','top','transform','transform-origin','transform-style','transition','transition-delay','transition-duration','transition-property','transition-timing-function','unicode-bidi','user-select','vertical-align','visibility','voice-balance','voice-duration','voice-family','voice-pitch','voice-range','voice-rate','voice-stress','voice-volume','volume','white-space','widows','width','will-change','word-break','word-spacing','word-wrap','z-index','clip-path','clip-rule','mask','enable-background','filter','flood-color','flood-opacity','lighting-color','stop-color','stop-opacity','pointer-events','color-interpolation','color-interpolation-filters','color-rendering','fill','fill-opacity','fill-rule','image-rendering','marker','marker-end','marker-mid','marker-start','shape-rendering','stroke','stroke-dasharray','stroke-dashoffset','stroke-linecap','stroke-linejoin','stroke-miterlimit','stroke-opacity','stroke-width','text-rendering','baseline-shift','dominant-baseline','glyph-orientation-horizontal','glyph-orientation-vertical','text-anchor','writing-mode'],d=e(c),p=['scrollbar-arrow-color','scrollbar-base-color','scrollbar-dark-shadow-color','scrollbar-face-color','scrollbar-highlight-color','scrollbar-shadow-color','scrollbar-3d-light-color','scrollbar-track-color','shape-inside','searchfield-cancel-button','searchfield-decoration','searchfield-results-button','searchfield-results-decoration','zoom'],u=e(p),m=e(['font-family','src','unicode-range','font-variant','font-feature-settings','font-stretch','font-weight','font-style']),h=e(['additive-symbols','fallback','negative','pad','prefix','range','speak-as','suffix','symbols','system']),g=['aliceblue','antiquewhite','aqua','aquamarine','azure','beige','bisque','black','blanchedalmond','blue','blueviolet','brown','burlywood','cadetblue','chartreuse','chocolate','coral','cornflowerblue','cornsilk','crimson','cyan','darkblue','darkcyan','darkgoldenrod','darkgray','darkgreen','darkkhaki','darkmagenta','darkolivegreen','darkorange','darkorchid','darkred','darksalmon','darkseagreen','darkslateblue','darkslategray','darkturquoise','darkviolet','deeppink','deepskyblue','dimgray','dodgerblue','firebrick','floralwhite','forestgreen','fuchsia','gainsboro','ghostwhite','gold','goldenrod','gray','grey','green','greenyellow','honeydew','hotpink','indianred','indigo','ivory','khaki','lavender','lavenderblush','lawngreen','lemonchiffon','lightblue','lightcoral','lightcyan','lightgoldenrodyellow','lightgray','lightgreen','lightpink','lightsalmon','lightseagreen','lightskyblue','lightslategray','lightsteelblue','lightyellow','lime','limegreen','linen','magenta','maroon','mediumaquamarine','mediumblue','mediumorchid','mediumpurple','mediumseagreen','mediumslateblue','mediumspringgreen','mediumturquoise','mediumvioletred','midnightblue','mintcream','mistyrose','moccasin','navajowhite','navy','oldlace','olive','olivedrab','orange','orangered','orchid','palegoldenrod','palegreen','paleturquoise','palevioletred','papayawhip','peachpuff','peru','pink','plum','powderblue','purple','rebeccapurple','red','rosybrown','royalblue','saddlebrown','salmon','sandybrown','seagreen','seashell','sienna','silver','skyblue','slateblue','slategray','snow','springgreen','steelblue','tan','teal','thistle','tomato','turquoise','violet','wheat','white','whitesmoke','yellow','yellowgreen'],b=e(g),f=e(y=['above','absolute','activeborder','additive','activecaption','afar','after-white-space','ahead','alias','all','all-scroll','alphabetic','alternate','always','amharic','amharic-abegede','antialiased','appworkspace','arabic-indic','armenian','asterisks','attr','auto','auto-flow','avoid','avoid-column','avoid-page','avoid-region','background','backwards','baseline','below','bidi-override','binary','bengali','blink','block','block-axis','bold','bolder','border','border-box','both','bottom','break','break-all','break-word','bullets','button','button-bevel','buttonface','buttonhighlight','buttonshadow','buttontext','calc','cambodian','capitalize','caps-lock-indicator','caption','captiontext','caret','cell','center','checkbox','circle','cjk-decimal','cjk-earthly-branch','cjk-heavenly-stem','cjk-ideographic','clear','clip','close-quote','col-resize','collapse','color','color-burn','color-dodge','column','column-reverse','compact','condensed','contain','content','contents','content-box','context-menu','continuous','copy','counter','counters','cover','crop','cross','crosshair','currentcolor','cursive','cyclic','darken','dashed','decimal','decimal-leading-zero','default','default-button','dense','destination-atop','destination-in','destination-out','destination-over','devanagari','difference','disc','discard','disclosure-closed','disclosure-open','document','dot-dash','dot-dot-dash','dotted','double','down','e-resize','ease','ease-in','ease-in-out','ease-out','element','ellipse','ellipsis','embed','end','ethiopic','ethiopic-abegede','ethiopic-abegede-am-et','ethiopic-abegede-gez','ethiopic-abegede-ti-er','ethiopic-abegede-ti-et','ethiopic-halehame-aa-er','ethiopic-halehame-aa-et','ethiopic-halehame-am-et','ethiopic-halehame-gez','ethiopic-halehame-om-et','ethiopic-halehame-sid-et','ethiopic-halehame-so-et','ethiopic-halehame-ti-er','ethiopic-halehame-ti-et','ethiopic-halehame-tig','ethiopic-numeric','ew-resize','exclusion','expanded','extends','extra-condensed','extra-expanded','fantasy','fast','fill','fixed','flat','flex','flex-end','flex-start','footnotes','forwards','from','geometricPrecision','georgian','graytext','grid','groove','gujarati','gurmukhi','hand','hangul','hangul-consonant','hard-light','hebrew','help','hidden','hide','higher','highlight','highlighttext','hiragana','hiragana-iroha','horizontal','hsl','hsla','hue','icon','ignore','inactiveborder','inactivecaption','inactivecaptiontext','infinite','infobackground','infotext','inherit','initial','inline','inline-axis','inline-block','inline-flex','inline-grid','inline-table','inset','inside','intrinsic','invert','italic','japanese-formal','japanese-informal','justify','kannada','katakana','katakana-iroha','keep-all','khmer','korean-hangul-formal','korean-hanja-formal','korean-hanja-informal','landscape','lao','large','larger','left','level','lighter','lighten','line-through','linear','linear-gradient','lines','list-item','listbox','listitem','local','logical','loud','lower','lower-alpha','lower-armenian','lower-greek','lower-hexadecimal','lower-latin','lower-norwegian','lower-roman','lowercase','ltr','luminosity','malayalam','match','matrix','matrix3d','media-controls-background','media-current-time-display','media-fullscreen-button','media-mute-button','media-play-button','media-return-to-realtime-button','media-rewind-button','media-seek-back-button','media-seek-forward-button','media-slider','media-sliderthumb','media-time-remaining-display','media-volume-slider','media-volume-slider-container','media-volume-sliderthumb','medium','menu','menulist','menulist-button','menulist-text','menulist-textfield','menutext','message-box','middle','min-intrinsic','mix','mongolian','monospace','move','multiple','multiply','myanmar','n-resize','narrower','ne-resize','nesw-resize','no-close-quote','no-drop','no-open-quote','no-repeat','none','normal','not-allowed','nowrap','ns-resize','numbers','numeric','nw-resize','nwse-resize','oblique','octal','opacity','open-quote','optimizeLegibility','optimizeSpeed','oriya','oromo','outset','outside','outside-shape','overlay','overline','padding','padding-box','painted','page','paused','persian','perspective','plus-darker','plus-lighter','pointer','polygon','portrait','pre','pre-line','pre-wrap','preserve-3d','progress','push-button','radial-gradient','radio','read-only','read-write','read-write-plaintext-only','rectangle','region','relative','repeat','repeating-linear-gradient','repeating-radial-gradient','repeat-x','repeat-y','reset','reverse','rgb','rgba','ridge','right','rotate','rotate3d','rotateX','rotateY','rotateZ','round','row','row-resize','row-reverse','rtl','run-in','running','s-resize','sans-serif','saturation','scale','scale3d','scaleX','scaleY','scaleZ','screen','scroll','scrollbar','scroll-position','se-resize','searchfield','searchfield-cancel-button','searchfield-decoration','searchfield-results-button','searchfield-results-decoration','self-start','self-end','semi-condensed','semi-expanded','separate','serif','show','sidama','simp-chinese-formal','simp-chinese-informal','single','skew','skewX','skewY','skip-white-space','slide','slider-horizontal','slider-vertical','sliderthumb-horizontal','sliderthumb-vertical','slow','small','small-caps','small-caption','smaller','soft-light','solid','somali','source-atop','source-in','source-out','source-over','space','space-around','space-between','space-evenly','spell-out','square','square-button','start','static','status-bar','stretch','stroke','sub','subpixel-antialiased','super','sw-resize','symbolic','symbols','system-ui','table','table-caption','table-cell','table-column','table-column-group','table-footer-group','table-header-group','table-row','table-row-group','tamil','telugu','text','text-bottom','text-top','textarea','textfield','thai','thick','thin','threeddarkshadow','threedface','threedhighlight','threedlightshadow','threedshadow','tibetan','tigre','tigrinya-er','tigrinya-er-abegede','tigrinya-et','tigrinya-et-abegede','to','top','trad-chinese-formal','trad-chinese-informal','transform','translate','translate3d','translateX','translateY','translateZ','transparent','ultra-condensed','ultra-expanded','underline','unset','up','upper-alpha','upper-armenian','upper-greek','upper-hexadecimal','upper-latin','upper-norwegian','upper-roman','uppercase','urdu','url','var','vertical','vertical-text','visible','visibleFill','visiblePainted','visibleStroke','visual','w-resize','wait','wave','wider','window','windowframe','windowtext','words','wrap','wrap-reverse','x-large','x-small','xor','xx-large','xx-small']),y=t.concat(o).concat(i).concat(l).concat(c).concat(p).concat(g).concat(y);function w(e,t){for(var r,o=!1;null!=(r=e.next());){if(o&&'/'==r){t.tokenize=null;break}o='*'==r}return['comment','comment']}B.registerHelper('hintWords','css',y),B.defineMIME('text/css',{documentTypes:r,mediaTypes:a,mediaFeatures:n,mediaValueKeywords:s,propertyKeywords:d,nonStandardPropertyKeywords:u,fontProperties:m,counterDescriptors:h,colorKeywords:b,valueKeywords:f,tokenHooks:{'/':function(e,t){return!!e.eat('*')&&(t.tokenize=w)(e,t)}},name:'css'}),B.defineMIME('text/x-scss',{mediaTypes:a,mediaFeatures:n,mediaValueKeywords:s,propertyKeywords:d,nonStandardPropertyKeywords:u,colorKeywords:b,valueKeywords:f,fontProperties:m,allowNested:!0,lineComment:'//',tokenHooks:{'/':function(e,t){return e.eat('/')?(e.skipToEnd(),['comment','comment']):e.eat('*')?(t.tokenize=w)(e,t):['operator','operator']},':':function(e){return!!e.match(/\\s*\\{/,!1)&&[null,null]},$:function(e){return e.match(/^[\\w-]+/),e.match(/^\\s*:/,!1)?['variable-2','variable-definition']:['variable-2','variable']},'#':function(e){return!!e.eat('{')&&[null,'interpolation']}},name:'css',helperType:'scss'}),B.defineMIME('text/x-less',{mediaTypes:a,mediaFeatures:n,mediaValueKeywords:s,propertyKeywords:d,nonStandardPropertyKeywords:u,colorKeywords:b,valueKeywords:f,fontProperties:m,allowNested:!0,lineComment:'//',tokenHooks:{'/':function(e,t){return e.eat('/')?(e.skipToEnd(),['comment','comment']):e.eat('*')?(t.tokenize=w)(e,t):['operator','operator']},'@':function(e){return e.eat('{')?[null,'interpolation']:!e.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\\b/i,!1)&&(e.eatWhile(/[\\w\\\\\\-]/),e.match(/^\\s*:/,!1)?['variable-2','variable-definition']:['variable-2','variable'])},'&':function(){return['atom','atom']}},name:'css',helperType:'less'}),B.defineMIME('text/x-gss',{documentTypes:r,mediaTypes:a,mediaFeatures:n,propertyKeywords:d,nonStandardPropertyKeywords:u,fontProperties:m,counterDescriptors:h,colorKeywords:b,valueKeywords:f,supportsAtComponent:!0,tokenHooks:{'/':function(e,t){return!!e.eat('*')&&(t.tokenize=w)(e,t)}},name:'css',helperType:'gss'})};'object'==typeof exports&&'object'==typeof module?e(require('../../lib/codemirror')):'function'==typeof define&&define.amd?define(['../../lib/codemirror'],e):e(CodeMirror);","type":"application/javascript","module-type":"codemirror"},"$:/plugins/tiddlywiki/codemirror-mode-css/readme":{"text":"This plugin adds Syntax Highlighting for CSS tiddlers (text/css) to the [[CodeMirror|http://codemirror.net]] text editor. It needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed\n\n\n"}}}
{"tiddlers":{"$:/plugins/tiddlywiki/codemirror/addon/search/search.js":{"text":"var e;e=function(l){'use strict';function u(e){return e.state.search||(e.state.search=new function(){this.posFrom=this.posTo=this.lastQuery=this.query=null,this.overlay=null})}function t(e){return'string'==typeof e&&e==e.toLowerCase()}function c(e,o,r){return e.getSearchCursor(o,r,{caseFold:t(o),multiline:!0})}function f(e,o,r,n,t){e.openDialog?e.openDialog(o,t,{value:n,selectValueOnOpen:!0}):t(prompt(r,n))}function p(e){return e.replace(/\\\\(.)/g,function(e,o){return'n'==o?'\\n':'r'==o?'\\r':o})}function a(e){var o=e.match(/^\\/(.*)\\/([a-z]*)$/);if(o)try{e=new RegExp(o[1],-1==o[2].indexOf('i')?'':'i')}catch(e){}else e=p(e);return('string'==typeof e?''==e:e.test(''))&&(e=/x^/),e}var d='<span class=\"CodeMirror-search-label\">Search:</span> <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/> <span style=\"color: #888\" class=\"CodeMirror-search-hint\">(Use /re/ syntax for regexp search)</span>';function y(e,o,r){var n;o.queryText=r,o.query=a(r),e.removeOverlay(o.overlay,t(o.query)),o.overlay=(n=o.query,r=t(o.query),'string'==typeof n?n=new RegExp(n.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,'\\\\$&'),r?'gi':'g'):n.global||(n=new RegExp(n.source,n.ignoreCase?'gi':'g')),{token:function(e){n.lastIndex=e.pos;var o=n.exec(e.string);if(o&&o.index==e.pos)return e.pos+=o[0].length||1,'searching';o?e.pos=o.index:e.skipToEnd()}}),e.addOverlay(o.overlay),e.showMatchesOnScrollbar&&(o.annotate&&(o.annotate.clear(),o.annotate=null),o.annotate=e.showMatchesOnScrollbar(o.query,t(o.query)))}function o(t,o,e,r){var n=u(t);if(n.query)return m(t,o);var a,s,i,c=t.getSelection()||n.lastQuery;c instanceof RegExp&&'x^'==c.source&&(c=null),e&&t.openDialog?(s=null,i=function(e,o){l.e_stop(o),e&&(e!=n.queryText&&(y(t,n,e),n.posFrom=n.posTo=t.getCursor()),s&&(s.style.opacity=1),m(t,o.shiftKey,function(e,o){var r;o.line<3&&document.querySelector&&(r=t.display.wrapper.querySelector('.CodeMirror-dialog'))&&r.getBoundingClientRect().bottom-4>t.cursorCoords(o,'window').top&&((s=r).style.opacity=.4)}))},e=function(e,o){var r=l.keyName(e),n=t.getOption('extraKeys'),r=n&&n[r]||l.keyMap[t.getOption('keyMap')][r];'findNext'==r||'findPrev'==r||'findPersistentNext'==r||'findPersistentPrev'==r?(l.e_stop(e),y(t,u(t),o),t.execCommand(r)):'find'!=r&&'findPersistent'!=r||(l.e_stop(e),i(o,e))},(a=t).openDialog('<span class=\"CodeMirror-search-label\">Search:</span> <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/> <span style=\"color: #888\" class=\"CodeMirror-search-hint\">(Use /re/ syntax for regexp search)</span>',i,{value:c,selectValueOnOpen:!0,closeOnEnter:!1,onClose:function(){h(a)},onKeyDown:e}),r&&c&&(y(t,n,c),m(t,o))):f(t,d,'Search for:',c,function(e){e&&!n.query&&t.operation(function(){y(t,n,e),n.posFrom=n.posTo=t.getCursor(),m(t,o)})})}function m(r,n,t){r.operation(function(){var e=u(r),o=c(r,e.query,n?e.posFrom:e.posTo);(o.find(n)||(o=c(r,e.query,n?l.Pos(r.lastLine()):l.Pos(r.firstLine(),0))).find(n))&&(r.setSelection(o.from(),o.to()),r.scrollIntoView({from:o.from(),to:o.to()},20),e.posFrom=o.from(),e.posTo=o.to(),t&&t(o.from(),o.to()))})}function h(o){o.operation(function(){var e=u(o);e.lastQuery=e.query,e.query&&(e.query=e.queryText=null,o.removeOverlay(e.overlay),e.annotate&&(e.annotate.clear(),e.annotate=null))})}function g(o,n,t){o.operation(function(){for(var r,e=c(o,n);e.findNext();)'string'!=typeof n?(r=o.getRange(e.from(),e.to()).match(n),e.replace(t.replace(/\\$(\\d)/g,function(e,o){return r[o]}))):e.replace(t)})}function r(i,e){var o,r;i.getOption('readOnly')||(o=i.getSelection()||u(i).lastQuery,f(i,(r='<span class=\"CodeMirror-search-label\">'+(e?'Replace all:':'Replace:')+'</span>')+' <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/> <span style=\"color: #888\" class=\"CodeMirror-search-hint\">(Use /re/ syntax for regexp search)</span>',r,o,function(s){s&&(s=a(s),f(i,'<span class=\"CodeMirror-search-label\">With:</span> <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/>','Replace with:','',function(n){var t,a,r;n=p(n),e?g(i,s,n):(h(i),t=c(i,s,i.getCursor('from')),a=function(){var e,o=t.from();!(e=t.findNext())&&(t=c(i,s),!(e=t.findNext())||o&&t.from().line==o.line&&t.from().ch==o.ch)||(i.setSelection(t.from(),t.to()),i.scrollIntoView({from:t.from(),to:t.to()}),o=[function(){r(e)},a,function(){g(i,s,n)}],i.openConfirm?i.openConfirm('<span class=\"CodeMirror-search-label\">Replace?</span> <button>Yes</button> <button>No</button> <button>All</button> <button>Stop</button>',o):confirm('Replace?')&&o[0]())},r=function(r){t.replace('string'==typeof s?n:n.replace(/\\$(\\d)/g,function(e,o){return r[o]})),a()},a())}))}))}l.commands.find=function(e){h(e),o(e)},l.commands.findPersistent=function(e){h(e),o(e,!1,!0)},l.commands.findPersistentNext=function(e){o(e,!1,!0,!0)},l.commands.findPersistentPrev=function(e){o(e,!0,!0,!0)},l.commands.findNext=o,l.commands.findPrev=function(e){o(e,!0)},l.commands.clearSearch=h,l.commands.replace=r,l.commands.replaceAll=function(e){r(e,!0)}},'object'==typeof exports&&'object'==typeof module?e(require('../../lib/codemirror'),require('./searchcursor'),require('../dialog/dialog')):'function'==typeof define&&define.amd?define(['../../lib/codemirror','./searchcursor','../dialog/dialog'],e):e(CodeMirror);","type":"application/javascript","module-type":"codemirror"},"$:/plugins/tiddlywiki/codemirror/addon/search/jump-to-line.js":{"text":"var e;e=function(e){'use strict';function s(e,o){var r=Number(o);return/^[-+]/.test(o)?e.getCursor().line+r:r-1}e.commands.jumpToLine=function(t){var i=t.getCursor(),e=i.line+1+':'+i.ch,o=function(e){var o,r;e&&((o=/^\\s*([\\+\\-]?\\d+)\\s*\\:\\s*(\\d+)\\s*$/.exec(e))?t.setCursor(s(t,o[1]),Number(o[2])):(o=/^\\s*([\\+\\-]?\\d+(\\.\\d+)?)\\%\\s*/.exec(e))?(r=Math.round(t.lineCount()*Number(o[1])/100),/^[-+]/.test(o[1])&&(r=i.line+r+1),t.setCursor(r-1,i.ch)):(o=/^\\s*\\:?\\s*([\\+\\-]?\\d+)\\s*/.exec(e))&&t.setCursor(s(t,o[1]),i.ch))};t.openDialog?t.openDialog('Jump to line: <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/> <span style=\"color: #888\" class=\"CodeMirror-search-hint\">(Use line:column or scroll% syntax)</span>',o,{value:e,selectValueOnOpen:!0}):o(prompt('Jump to line:',e))},e.keyMap.default['Alt-G']='jumpToLine'},'object'==typeof exports&&'object'==typeof module?e(require('../../lib/codemirror'),require('../dialog/dialog')):'function'==typeof define&&define.amd?define(['../../lib/codemirror','../dialog/dialog'],e):e(CodeMirror);","type":"application/javascript","module-type":"codemirror"},"$:/plugins/tiddlywiki/codemirror/addon/search/searchcursor.js":{"text":"var t;t=function(i){'use strict';var v,p,x=i.Pos;function g(t,e){for(var n=null!=(n=t.flags)?n:(t.ignoreCase?'i':'')+(t.global?'g':'')+(t.multiline?'m':''),r=n,i=0;i<e.length;i++)-1==r.indexOf(e.charAt(i))&&(r+=e.charAt(i));return n==r?t:new RegExp(t.source,r)}function m(t,e,n){e=g(e,'g');for(var r=n.line,i=n.ch,o=t.lastLine();r<=o;r++,i=0){e.lastIndex=i;var l=t.getLine(r),l=e.exec(l);if(l)return{from:x(r,l.index),to:x(r,l.index+l[0].length),match:l}}}function d(t,e){for(var n,r=0;;){e.lastIndex=r;var i=e.exec(t);if(!i)return n;if((r=(n=i).index+(n[0].length||1))==t.length)return n}}function L(t,e,n,r){if(t.length==e.length)return n;for(var i=0,o=n+Math.max(0,t.length-e.length);;){if(i==o)return i;var l=i+o>>1,h=r(t.slice(0,l)).length;if(h==n)return l;n<h?o=l:i=1+l}}function r(n,r,t,e){var i;this.atOccurrence=!1,this.doc=n,t=t?n.clipPos(t):x(0,0),this.pos={from:t,to:t},'object'==typeof e?i=e.caseFold:(i=e,e=null),'string'==typeof r?(null==i&&(i=!1),this.matches=function(t,e){return(t?function(t,e,n,r){if(!e.length)return null;var i=r?v:p,o=i(e).split(/\\r|\\n\\r?/);t:for(var l=n.line,h=n.ch,s=t.firstLine()-1+o.length;s<=l;l--,h=-1){var c=t.getLine(l);-1<h&&(c=c.slice(0,h));var f=i(c);if(1==o.length){var u=f.lastIndexOf(o[0]);if(-1==u)continue t;return{from:x(l,L(c,f,u,i)),to:x(l,L(c,f,u+o[0].length,i))}}var a=o[o.length-1];if(f.slice(0,a.length)==a){var g=1;for(n=l-o.length+1;g<o.length-1;g++)if(i(t.getLine(n+g))!=o[g])continue t;var m=t.getLine(l+1-o.length),u=i(m);if(u.slice(u.length-o[0].length)==o[0])return{from:x(l+1-o.length,L(m,u,m.length-o[0].length,i)),to:x(l,L(c,f,a.length,i))}}}}:function(t,e,n,r){if(!e.length)return null;var i=r?v:p,o=i(e).split(/\\r|\\n\\r?/);t:for(var l=n.line,h=n.ch,s=t.lastLine()+1-o.length;l<=s;l++,h=0){var c=t.getLine(l).slice(h),f=i(c);if(1==o.length){var u=f.indexOf(o[0]);if(-1==u)continue t;return n=L(c,f,u,i)+h,{from:x(l,L(c,f,u,i)+h),to:x(l,L(c,f,u+o[0].length,i)+h)}}var a=f.length-o[0].length;if(f.slice(a)==o[0]){for(var g=1;g<o.length-1;g++)if(i(t.getLine(l+g))!=o[g])continue t;var m=t.getLine(l+o.length-1),d=i(m),u=o[o.length-1];if(d.slice(0,u.length)==u)return{from:x(l,L(c,f,a,i)+h),to:x(l+o.length-1,L(m,d,u.length,i))}}}})(n,r,e,i)}):(r=g(r,'gm'),e&&!1===e.multiline?this.matches=function(t,e){return(t?function(t,e,n){e=g(e,'g');for(var r=n.line,i=n.ch,o=t.firstLine();o<=r;r--,i=-1){var l=t.getLine(r);-1<i&&(l=l.slice(0,i));l=d(l,e);if(l)return{from:x(r,l.index),to:x(r,l.index+l[0].length),match:l}}}:m)(n,r,e)}:this.matches=function(t,e){return(t?function(t,e,n){e=g(e,'gm');for(var r=1,i=n.line,o=t.firstLine();o<=i;){for(var l=0;l<r;l++)var h=t.getLine(i--),s=null==s?h.slice(0,n.ch):h+'\\n'+s;r*=2;var c=d(s,e);if(c){var f=s.slice(0,c.index).split('\\n'),u=c[0].split('\\n'),a=i+f.length,f=f[f.length-1].length;return{from:x(a,f),to:x(a+u.length-1,1==u.length?f+u[0].length:u[u.length-1].length),match:c}}}}:function(t,e,n){if(!/\\\\s|\\\\n|\\n|\\\\W|\\\\D|\\[\\^/.test(e.source))return m(t,e,n);e=g(e,'gm');for(var r=1,i=n.line,o=t.lastLine();i<=o;){for(var l=0;l<r&&!(o<i);l++)var h=t.getLine(i++),s=null==s?h:s+'\\n'+h;r*=2,e.lastIndex=n.ch;var c=e.exec(s);if(c){var f=s.slice(0,c.index).split('\\n'),u=c[0].split('\\n'),a=n.line+f.length-1,f=f[f.length-1].length;return{from:x(a,f),to:x(a+u.length-1,1==u.length?f+u[0].length:u[u.length-1].length),match:c}}}})(n,r,e)})}p=String.prototype.normalize?(v=function(t){return t.normalize('NFD').toLowerCase()},function(t){return t.normalize('NFD')}):(v=function(t){return t.toLowerCase()},function(t){return t}),r.prototype={findNext:function(){return this.find(!1)},findPrevious:function(){return this.find(!0)},find:function(t){for(var e=this.matches(t,this.doc.clipPos(t?this.pos.from:this.pos.to));e&&0==i.cmpPos(e.from,e.to);)t?e.from.ch?e.from=x(e.from.line,e.from.ch-1):e=e.from.line==this.doc.firstLine()?null:this.matches(t,this.doc.clipPos(x(e.from.line-1))):e.to.ch<this.doc.getLine(e.to.line).length?e.to=x(e.to.line,e.to.ch+1):e=e.to.line==this.doc.lastLine()?null:this.matches(t,x(e.to.line+1,0));if(e)return this.pos=e,this.atOccurrence=!0,this.pos.match||!0;var n=x(t?this.doc.firstLine():this.doc.lastLine()+1,0);return this.pos={from:n,to:n},this.atOccurrence=!1},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(t,e){this.atOccurrence&&(t=i.splitLines(t),this.doc.replaceRange(t,this.pos.from,this.pos.to,e),this.pos.to=x(this.pos.from.line+t.length-1,t[t.length-1].length+(1==t.length?this.pos.from.ch:0)))}},i.defineExtension('getSearchCursor',function(t,e,n){return new r(this.doc,t,e,n)}),i.defineDocExtension('getSearchCursor',function(t,e,n){return new r(this,t,e,n)}),i.defineExtension('selectMatches',function(t,e){for(var n=[],r=this.getSearchCursor(t,this.getCursor('from'),e);r.findNext()&&!(0<i.cmpPos(r.to(),this.getCursor('to')));)n.push({anchor:r.from(),head:r.to()});n.length&&this.setSelections(n,0)})},'object'==typeof exports&&'object'==typeof module?t(require('../../lib/codemirror')):'function'==typeof define&&define.amd?define(['../../lib/codemirror'],t):t(CodeMirror);","type":"application/javascript","module-type":"codemirror"},"$:/plugins/tiddlywiki/codemirror-search-replace/readme":{"text":"This plugin enhances the [[CodeMirror|http://codemirror.net]] text editor with Search and Replace functionality. It needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed\n\nIt adds these Keyboard Shortcuts to ~CodeMirror:\n\n|Shortcut |Function |h\n|Ctrl-F / Cmd-F |Start searching |\n|Ctrl-G / Cmd-G / Shift-F3 |Find next |\n|Shift-Ctrl-G / Shift-Cmd-G / F3 |Find previous |\n|Shift-Ctrl-F / Cmd-Option-F |Replace |\n|Shift-Ctrl-R / Shift-Cmd-Option-F |Replace all |\n|Alt-F |Persistent search (dialog doesn't autoclose, enter to find next, Shift-Enter to find previous) |\n|Alt-G |Jump to line |\n\n"}}}
{"tiddlers":{"$:/config/HighlightPlugin/TypeMappings/application/javascript":{"text":"javascript"},"$:/config/HighlightPlugin/TypeMappings/application/json":{"text":"json"},"$:/config/HighlightPlugin/TypeMappings/text/css":{"text":"css"},"$:/config/HighlightPlugin/TypeMappings/text/html":{"text":"html"},"$:/config/HighlightPlugin/TypeMappings/image/svg+xml":{"text":"xml"},"$:/config/HighlightPlugin/TypeMappings/text/x-markdown":{"text":"markdown"},"$:/plugins/tiddlywiki/highlight/highlight.js":{"text":"var e,t,r=require('$:/plugins/tiddlywiki/highlight/highlight.js');e=function(i){var d=[],y=Object.keys,C={},o={},t=/^(no-?highlight|plain|text)$/i,s=/\\blang(?:uage)?-([\\w-]+)\\b/i,r=/((^(<[^>]+>|\\t|)+|(?:\\n)))/gm,a={case_insensitive:'cI',lexemes:'l',contains:'c',keywords:'k',subLanguage:'sL',className:'cN',begin:'b',beginKeywords:'bK',end:'e',endsWithParent:'eW',illegal:'i',excludeBegin:'eB',excludeEnd:'eE',returnBegin:'rB',returnEnd:'rE',relevance:'r',variants:'v',IDENT_RE:'IR',UNDERSCORE_IDENT_RE:'UIR',NUMBER_RE:'NR',C_NUMBER_RE:'CNR',BINARY_NUMBER_RE:'BNR',RE_STARTERS_RE:'RSR',BACKSLASH_ESCAPE:'BE',APOS_STRING_MODE:'ASM',QUOTE_STRING_MODE:'QSM',PHRASAL_WORDS_MODE:'PWM',C_LINE_COMMENT_MODE:'CLCM',C_BLOCK_COMMENT_MODE:'CBCM',HASH_COMMENT_MODE:'HCM',NUMBER_MODE:'NM',C_NUMBER_MODE:'CNM',BINARY_NUMBER_MODE:'BNM',CSS_NUMBER_MODE:'CSSNM',REGEXP_MODE:'RM',TITLE_MODE:'TM',UNDERSCORE_TITLE_MODE:'UTM',COMMENT:'C',beginRe:'bR',endRe:'eR',illegalRe:'iR',lexemesRe:'lR',terminators:'t',terminator_end:'tE'},x='</span>',w={classPrefix:'hljs-',tabReplace:null,useBR:!1,languages:void 0};function D(e){return e.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>')}function u(e){return e.nodeName.toLowerCase()}function N(e,t){t=e&&e.exec(t);return t&&0===t.index}function l(e){return t.test(e)}function k(e){var t,r={},i=Array.prototype.slice.call(arguments,1);for(t in e)r[t]=e[t];return i.forEach(function(e){for(t in e)r[t]=e[t]}),r}function c(e){var a=[];return function e(t,r){for(var i=t.firstChild;i;i=i.nextSibling)3===i.nodeType?r+=i.nodeValue.length:1===i.nodeType&&(a.push({event:'start',offset:r,node:i}),r=e(i,r),u(i).match(/br|hr|img|input/)||a.push({event:'stop',offset:r,node:i}));return r}(e,0),a}function n(e){if(a&&!e.langApiRestored){for(var t in e.langApiRestored=!0,a)e[t]&&(e[a[t]]=e[t]);(e.c||[]).concat(e.v||[]).forEach(n)}}function P(e,t,i,r){function n(e,t,r,i){i='<span class=\"'+(i?'':w.classPrefix);return(i+=e+'\">')+t+(r?'':x)}function a(){b+=(null!=u.sL?function(){var e='string'==typeof u.sL;if(e&&!C[u.sL])return D(v);var t=e?P(u.sL,v,!0,m[u.sL]):M(v,u.sL.length?u.sL:void 0);return 0<u.r&&(f+=t.r),e&&(m[u.sL]=t.top),n(t.language,t.value,!1,!0)}:function(){var e,t,r,i,a;if(!u.k)return D(v);for(r='',e=0,u.lR.lastIndex=0,t=u.lR.exec(v);t;)r+=D(v.substring(e,t.index)),i=u,a=t,a=c.cI?a[0].toLowerCase():a[0],(a=i.k.hasOwnProperty(a)&&i.k[a])?(f+=a[1],r+=n(a[0],D(t[0]))):r+=D(t[0]),e=u.lR.lastIndex,t=u.lR.exec(v);return r+D(v.substr(e))})(),v=''}function o(e){b+=e.cN?n(e.cN,'',!0):'',u=Object.create(e,{parent:{value:u}})}function s(e,t){if(v+=e,null==t)return a(),0;e=function(e,t){for(var r,i=0,a=t.c.length;i<a;i++)if(N(t.c[i].bR,e))return t.c[i].endSameAsBegin&&(t.c[i].eR=(r=t.c[i].bR.exec(e)[0],new RegExp(r.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g,'\\\\$&'),'m'))),t.c[i]}(t,u);if(e)return e.skip?v+=t:(e.eB&&(v+=t),a(),e.rB||e.eB||(v=t)),o(e),e.rB?0:t.length;var r=function e(t,r){if(N(t.eR,r)){for(;t.endsParent&&t.parent;)t=t.parent;return t}if(t.eW)return e(t.parent,r)}(u,t);if(r){e=u;for(e.skip?v+=t:(e.rE||e.eE||(v+=t),a(),e.eE&&(v=t));u.cN&&(b+=x),u.skip||u.sL||(f+=u.r),(u=u.parent)!==r.parent;);return r.starts&&(r.endSameAsBegin&&(r.starts.eR=r.eR),o(r.starts)),e.rE?0:t.length}if(!i&&N(u.iR,t))throw new Error('Illegal lexeme \"'+t+'\" for mode \"'+(u.cN||'<unnamed>')+'\"');return v+=t,t.length||1}var l,c=E(e);if(!c)throw new Error('Unknown language: \"'+e+'\"');function p(e){return e&&e.source||e}function d(e,t){return new RegExp(p(e),'m'+(l.cI?'i':'')+(t?'g':''))}(function t(r,e){var i,a;r.compiled||(r.compiled=!0,r.k=r.k||r.bK,r.k&&(i={},a=function(t,e){l.cI&&(e=e.toLowerCase()),e.split(' ').forEach(function(e){e=e.split('|');i[e[0]]=[t,e[1]?Number(e[1]):1]})},'string'==typeof r.k?a('keyword',r.k):y(r.k).forEach(function(e){a(e,r.k[e])}),r.k=i),r.lR=d(r.l||/\\w+/,!0),e&&(r.bK&&(r.b='\\\\b('+r.bK.split(' ').join('|')+')\\\\b'),r.b||(r.b=/\\B|\\b/),r.bR=d(r.b),r.endSameAsBegin&&(r.e=r.b),r.e||r.eW||(r.e=/\\B|\\b/),r.e&&(r.eR=d(r.e)),r.tE=p(r.e)||'',r.eW&&e.tE&&(r.tE+=(r.e?'|':'')+e.tE)),r.i&&(r.iR=d(r.i)),null==r.r&&(r.r=1),r.c||(r.c=[]),r.c=Array.prototype.concat.apply([],r.c.map(function(e){return(t='self'===e?r:e).v&&!t.cached_variants&&(t.cached_variants=t.v.map(function(e){return k(t,{v:null},e)})),t.cached_variants||t.eW&&[k(t)]||[t];var t})),r.c.forEach(function(e){t(e,r)}),r.starts&&t(r.starts,e),e=r.c.map(function(e){return e.bK?'\\\\.?(?:'+e.b+')\\\\.?':e.b}).concat([r.tE,r.i]).map(p).filter(Boolean),r.t=e.length?d(function(e){for(var t=/\\[(?:[^\\\\\\]]|\\\\.)*\\]|\\(\\??|\\\\([1-9][0-9]*)|\\\\./,r=0,i='',a=0;a<e.length;a++){var n=r,o=p(e[a]);for(0<a&&(i+='|');0<o.length;){var s=t.exec(o);if(null==s){i+=o;break}i+=o.substring(0,s.index),o=o.substring(s.index+s[0].length),'\\\\'==s[0][0]&&s[1]?i+='\\\\'+String(Number(s[1])+n):(i+=s[0],'('==s[0]&&r++)}}return i}(e),!0):{exec:function(){return null}})})(l=c);for(var u=r||c,m={},b='',g=u;g!==c;g=g.parent)g.cN&&(b=n(g.cN,'',!0)+b);var v='',f=0;try{for(var h,S,_=0;u.t.lastIndex=_,h=u.t.exec(t);)S=s(t.substring(_,h.index),h[0]),_=h.index+S;for(s(t.substr(_)),g=u;g.parent;g=g.parent)g.cN&&(b+=x);return{r:f,value:b,language:e,top:u}}catch(e){if(e.message&&-1!==e.message.indexOf('Illegal'))return{r:0,value:D(t)};throw e}}function M(r,e){e=e||w.languages||y(C);var i={r:0,value:D(r)},a=i;return e.filter(E).filter(g).forEach(function(e){var t=P(e,r,!1);t.language=e,t.r>a.r&&(a=t),t.r>i.r&&(a=i,i=t)}),a.language&&(i.second_best=a),i}function p(e){return w.tabReplace||w.useBR?e.replace(r,function(e,t){return w.useBR&&'\\n'===e?'<br>':w.tabReplace?t.replace(/\\t/g,w.tabReplace):''}):e}function m(n){var e,t,r,i,a=function(){var e,t,r,i,a=n.className+' ';if(a+=n.parentNode?n.parentNode.className:'',t=s.exec(a))return E(t[1])?t[1]:'no-highlight';for(e=0,r=(a=a.split(/\\s+/)).length;e<r;e++)if(l(i=a[e])||E(i))return i}();l(a)||(w.useBR?(e=document.createElementNS('http://www.w3.org/1999/xhtml','div')).innerHTML=n.innerHTML.replace(/\\n/g,'').replace(/<br[ \\/]*>/g,'\\n'):e=n,i=e.textContent,t=a?P(a,i,!0):M(i),(e=c(e)).length&&((r=document.createElementNS('http://www.w3.org/1999/xhtml','div')).innerHTML=t.value,t.value=function(e,t,r){var i=0,a='',n=[];function o(){return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset<t[0].offset?e:t:'start'===t[0].event?e:t:e.length?e:t}function s(e){a+='<'+u(e)+d.map.call(e.attributes,function(e){return' '+e.nodeName+'=\"'+D(e.value).replace('\"','"')+'\"'}).join('')+'>'}function l(e){a+='</'+u(e)+'>'}function c(e){('start'===e.event?s:l)(e.node)}for(;e.length||t.length;){var p=o();if(a+=D(r.substring(i,p[0].offset)),i=p[0].offset,p===e){for(n.reverse().forEach(l);c(p.splice(0,1)[0]),(p=o())===e&&p.length&&p[0].offset===i;);n.reverse().forEach(s)}else'start'===p[0].event?n.push(p[0].node):n.pop(),c(p.splice(0,1)[0])}return a+D(r.substr(i))}(e,c(r),i)),t.value=p(t.value),n.innerHTML=t.value,n.className=(r=n.className,i=t.language,a=a?o[a]:i,i=[r.trim()],r.match(/\\bhljs\\b/)||i.push('hljs'),-1===r.indexOf(a)&&i.push(a),i.join(' ').trim()),n.result={language:t.language,re:t.r},t.second_best&&(n.second_best={language:t.second_best.language,re:t.second_best.r}))}function b(){var e;b.called||(b.called=!0,e=document.querySelectorAll('pre code'),d.forEach.call(e,m))}function E(e){return e=(e||'').toLowerCase(),C[e]||C[o[e]]}function g(e){e=E(e);return e&&!e.disableAutodetect}return i.highlight=P,i.highlightAuto=M,i.fixMarkup=p,i.highlightBlock=m,i.configure=function(e){w=k(w,e)},i.initHighlighting=b,i.initHighlightingOnLoad=function(){addEventListener('DOMContentLoaded',b,!1),addEventListener('load',b,!1)},i.registerLanguage=function(t,e){e=C[t]=e(i);n(e),e.aliases&&e.aliases.forEach(function(e){o[e]=t})},i.listLanguages=function(){return y(C)},i.getLanguage=E,i.autoDetection=g,i.inherit=k,i.IR=i.IDENT_RE='[a-zA-Z]\\\\w*',i.UIR=i.UNDERSCORE_IDENT_RE='[a-zA-Z_]\\\\w*',i.NR=i.NUMBER_RE='\\\\b\\\\d+(\\\\.\\\\d+)?',i.CNR=i.C_NUMBER_RE='(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)',i.BNR=i.BINARY_NUMBER_RE='\\\\b(0b[01]+)',i.RSR=i.RE_STARTERS_RE='!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~',i.BE=i.BACKSLASH_ESCAPE={b:'\\\\\\\\[\\\\s\\\\S]',r:0},i.ASM=i.APOS_STRING_MODE={cN:'string',b:'\\'',e:'\\'',i:'\\\\n',c:[i.BE]},i.QSM=i.QUOTE_STRING_MODE={cN:'string',b:'\"',e:'\"',i:'\\\\n',c:[i.BE]},i.PWM=i.PHRASAL_WORDS_MODE={b:/\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b/},i.C=i.COMMENT=function(e,t,r){r=i.inherit({cN:'comment',b:e,e:t,c:[]},r||{});return r.c.push(i.PWM),r.c.push({cN:'doctag',b:'(?:TODO|FIXME|NOTE|BUG|XXX):',r:0}),r},i.CLCM=i.C_LINE_COMMENT_MODE=i.C('//','$'),i.CBCM=i.C_BLOCK_COMMENT_MODE=i.C('/\\\\*','\\\\*/'),i.HCM=i.HASH_COMMENT_MODE=i.C('#','$'),i.NM=i.NUMBER_MODE={cN:'number',b:i.NR,r:0},i.CNM=i.C_NUMBER_MODE={cN:'number',b:i.CNR,r:0},i.BNM=i.BINARY_NUMBER_MODE={cN:'number',b:i.BNR,r:0},i.CSSNM=i.CSS_NUMBER_MODE={cN:'number',b:i.NR+'(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?',r:0},i.RM=i.REGEXP_MODE={cN:'regexp',b:/\\//,e:/\\/[gimuy]*/,i:/\\n/,c:[i.BE,{b:/\\[/,e:/\\]/,r:0,c:[i.BE]}]},i.TM=i.TITLE_MODE={cN:'title',b:i.IR,r:0},i.UTM=i.UNDERSCORE_TITLE_MODE={cN:'title',b:i.UIR,r:0},i.METHOD_GUARD={b:'\\\\.\\\\s*'+i.UIR,r:0},i},t='object'==typeof window&&window||'object'==typeof self&&self,'undefined'!=typeof exports?e(exports):t&&(t.hljs=e({}),'function'==typeof define&&define.amd&&define([],function(){return t.hljs})),r.registerLanguage('json',function(e){var t={literal:'true false null'},r=[e.QSM,e.CNM],i={e:',',eW:!0,eE:!0,c:r,k:t},a={b:'{',e:'}',c:[{cN:'attr',b:/\"/,e:/\"/,c:[e.BE],i:'\\\\n'},e.inherit(i,{b:/:/})],i:'\\\\S'},i={b:'\\\\[',e:'\\\\]',c:[e.inherit(i)],i:'\\\\S'};return r.splice(r.length,0,a,i),{c:r,k:t,i:'\\\\S'}}),r.registerLanguage('coffeescript',function(e){var t={keyword:'in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super yield import export from as default await then unless until loop of by when and or is isnt not',literal:'true false null undefined yes no on off',built_in:'npm require console print module global window document'},r='[A-Za-z$_][0-9A-Za-z$_]*',i={cN:'subst',b:/#\\{/,e:/}/,k:t},a=[e.BNM,e.inherit(e.CNM,{starts:{e:'(\\\\s*/)?',r:0}}),{cN:'string',v:[{b:/'''/,e:/'''/,c:[e.BE]},{b:/'/,e:/'/,c:[e.BE]},{b:/\"\"\"/,e:/\"\"\"/,c:[e.BE,i]},{b:/\"/,e:/\"/,c:[e.BE,i]}]},{cN:'regexp',v:[{b:'///',e:'///',c:[i,e.HCM]},{b:'//[gim]*',r:0},{b:/\\/(?![ *])(\\\\\\/|.)*?\\/[gim]*(?=\\W|$)/}]},{b:'@'+r},{sL:'javascript',eB:!0,eE:!0,v:[{b:'```',e:'```'},{b:'`',e:'`'}]}];i.c=a;var n=e.inherit(e.TM,{b:r}),o='(\\\\(.*\\\\))?\\\\s*\\\\B[-=]>',i={cN:'params',b:'\\\\([^\\\\(]',rB:!0,c:[{b:/\\(/,e:/\\)/,k:t,c:['self'].concat(a)}]};return{aliases:['coffee','cson','iced'],k:t,i:/\\/\\*/,c:a.concat([e.C('###','###'),e.HCM,{cN:'function',b:'^\\\\s*'+r+'\\\\s*=\\\\s*'+o,e:'[-=]>',rB:!0,c:[n,i]},{b:/[:\\(,=]\\s*/,r:0,c:[{cN:'function',b:o,e:'[-=]>',rB:!0,c:[i]}]},{cN:'class',bK:'class',e:'$',i:/[:=\"\\[\\]]/,c:[{bK:'extends',eW:!0,i:/[:=\"\\[\\]]/,c:[n]},n]},{b:r+':',e:':',rB:!0,rE:!0,r:0}])}}),r.registerLanguage('properties',function(e){var t='[ \\\\t\\\\f]*',r='('+t+'[:=]'+t+'|[ \\\\t\\\\f]+)',i='([^\\\\\\\\\\\\W:= \\\\t\\\\f\\\\n]|\\\\\\\\.)+',a='([^\\\\\\\\:= \\\\t\\\\f\\\\n]|\\\\\\\\.)+',n={e:r,r:0,starts:{cN:'string',e:/$/,r:0,c:[{b:'\\\\\\\\\\\\n'}]}};return{cI:!0,i:/\\S/,c:[e.C('^\\\\s*[!#]','$'),{b:i+r,rB:!0,c:[{cN:'attr',b:i,endsParent:!0,r:0}],starts:n},{b:a+r,rB:!0,r:0,c:[{cN:'meta',b:a,endsParent:!0,r:0}],starts:n},{cN:'attr',r:0,b:a+t+'$'}]}}),r.registerLanguage('typescript',function(e){var t='[A-Za-z$_][0-9A-Za-z$_]*',r={keyword:'in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const class public private protected get set super static implements enum export import declare type namespace abstract as from extends async await',literal:'true false null undefined NaN Infinity',built_in:'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document any number boolean string void Promise'},i={cN:'meta',b:'@'+t},a={b:'\\\\(',e:/\\)/,k:r,c:['self',e.QSM,e.ASM,e.NM]},n={cN:'params',b:/\\(/,e:/\\)/,eB:!0,eE:!0,k:r,c:[e.CLCM,e.CBCM,i,a]};return{aliases:['ts'],k:r,c:[{cN:'meta',b:/^\\s*['\"]use strict['\"]/},e.ASM,e.QSM,{cN:'string',b:'`',e:'`',c:[e.BE,{cN:'subst',b:'\\\\$\\\\{',e:'\\\\}'}]},e.CLCM,e.CBCM,{cN:'number',v:[{b:'\\\\b(0[bB][01]+)'},{b:'\\\\b(0[oO][0-7]+)'},{b:e.CNR}],r:0},{b:'('+e.RSR+'|\\\\b(case|return|throw)\\\\b)\\\\s*',k:'return throw case',c:[e.CLCM,e.CBCM,e.RM,{cN:'function',b:'(\\\\(.*?\\\\)|'+e.IR+')\\\\s*=>',rB:!0,e:'\\\\s*=>',c:[{cN:'params',v:[{b:e.IR},{b:/\\(\\s*\\)/},{b:/\\(/,e:/\\)/,eB:!0,eE:!0,k:r,c:['self',e.CLCM,e.CBCM]}]}]}],r:0},{cN:'function',b:'function',e:/[\\{;]/,eE:!0,k:r,c:['self',e.inherit(e.TM,{b:t}),n],i:/%/,r:0},{bK:'constructor',e:/\\{/,eE:!0,c:['self',n]},{b:/module\\./,k:{built_in:'module'},r:0},{bK:'module',e:/\\{/,eE:!0},{bK:'interface',e:/\\{/,eE:!0,k:'interface extends'},{b:/\\$[(.]/},{b:'\\\\.'+e.IR,r:0},i,a]}}),r.registerLanguage('rust',function(e){var t='([ui](8|16|32|64|128|size)|f(32|64))?',r='drop i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize f32 f64 str char bool Box Option Result String Vec Copy Send Sized Sync Drop Fn FnMut FnOnce ToOwned Clone Debug PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator Extend IntoIterator DoubleEndedIterator ExactSizeIterator SliceConcatExt ToString assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! debug_assert! debug_assert_eq! env! panic! file! format! format_args! include_bin! include_str! line! local_data_key! module_path! option_env! print! println! select! stringify! try! unimplemented! unreachable! vec! write! writeln! macro_rules! assert_ne! debug_assert_ne!';return{aliases:['rs'],k:{keyword:'alignof as be box break const continue crate do else enum extern false fn for if impl in let loop match mod mut offsetof once priv proc pub pure ref return self Self sizeof static struct super trait true type typeof unsafe unsized use virtual while where yield move default',literal:'true false Some None Ok Err',built_in:r},l:e.IR+'!?',i:'</',c:[e.CLCM,e.C('/\\\\*','\\\\*/',{c:['self']}),e.inherit(e.QSM,{b:/b?\"/,i:null}),{cN:'string',v:[{b:/r(#*)\"(.|\\n)*?\"\\1(?!#)/},{b:/b?'\\\\?(x\\w{2}|u\\w{4}|U\\w{8}|.)'/}]},{cN:'symbol',b:/'[a-zA-Z_][a-zA-Z0-9_]*/},{cN:'number',v:[{b:'\\\\b0b([01_]+)'+t},{b:'\\\\b0o([0-7_]+)'+t},{b:'\\\\b0x([A-Fa-f0-9_]+)'+t},{b:'\\\\b(\\\\d[\\\\d_]*(\\\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)'+t}],r:0},{cN:'function',bK:'fn',e:'(\\\\(|<)',eE:!0,c:[e.UTM]},{cN:'meta',b:'#\\\\!?\\\\[',e:'\\\\]',c:[{cN:'meta-string',b:/\"/,e:/\"/}]},{cN:'class',bK:'type',e:';',c:[e.inherit(e.UTM,{endsParent:!0})],i:'\\\\S'},{cN:'class',bK:'trait enum struct union',e:'{',c:[e.inherit(e.UTM,{endsParent:!0})],i:'[\\\\w\\\\d]'},{b:e.IR+'::',k:{built_in:r}},{b:'->'}]}}),r.registerLanguage('http',function(e){var t='HTTP/[0-9\\\\.]+';return{aliases:['https'],i:'\\\\S',c:[{b:'^'+t,e:'$',c:[{cN:'number',b:'\\\\b\\\\d{3}\\\\b'}]},{b:'^[A-Z]+ (.*?) '+t+'$',rB:!0,e:'$',c:[{cN:'string',b:' ',e:' ',eB:!0,eE:!0},{b:t},{cN:'keyword',b:'[A-Z]+'}]},{cN:'attribute',b:'^\\\\w',e:': ',eE:!0,i:'\\\\n|\\\\s|=',starts:{e:'$',r:0}},{b:'\\\\n\\\\n',starts:{sL:[],eW:!0}}]}}),r.registerLanguage('kotlin',function(e){var t={keyword:'abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual trait volatile transient native default',built_in:'Byte Short Char Int Long Boolean Float Double Void Unit Nothing',literal:'true false null'},r={cN:'symbol',b:e.UIR+'@'},i={cN:'subst',b:'\\\\${',e:'}',c:[e.ASM,e.CNM]},a={cN:'variable',b:'\\\\$'+e.UIR},n={cN:'string',v:[{b:'\"\"\"',e:'\"\"\"',c:[a,i]},{b:'\\'',e:'\\'',i:/\\n/,c:[e.BE]},{b:'\"',e:'\"',i:/\\n/,c:[e.BE,a,i]}]},a={cN:'meta',b:'@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\\\s*:(?:\\\\s*'+e.UIR+')?'},i={cN:'meta',b:'@'+e.UIR,c:[{b:/\\(/,e:/\\)/,c:[e.inherit(n,{cN:'meta-string'})]}]};return{aliases:['kt'],k:t,c:[e.C('/\\\\*\\\\*','\\\\*/',{r:0,c:[{cN:'doctag',b:'@[A-Za-z]+'}]}),e.CLCM,e.CBCM,{cN:'keyword',b:/\\b(break|continue|return|this)\\b/,starts:{c:[{cN:'symbol',b:/@\\w+/}]}},r,a,i,{cN:'function',bK:'fun',e:'[(]|$',rB:!0,eE:!0,k:t,i:/fun\\s+(<.*>)?[^\\s\\(]+(\\s+[^\\s\\(]+)\\s*=/,r:5,c:[{b:e.UIR+'\\\\s*\\\\(',rB:!0,r:0,c:[e.UTM]},{cN:'type',b:/</,e:/>/,k:'reified',r:0},{cN:'params',b:/\\(/,e:/\\)/,endsParent:!0,k:t,r:0,c:[{b:/:/,e:/[=,\\/]/,eW:!0,c:[{cN:'type',b:e.UIR},e.CLCM,e.CBCM],r:0},e.CLCM,e.CBCM,a,i,n,e.CNM]},e.CBCM]},{cN:'class',bK:'class interface trait',e:/[:\\{(]|$/,eE:!0,i:'extends implements',c:[{bK:'public protected internal private constructor'},e.UTM,{cN:'type',b:/</,e:/>/,eB:!0,eE:!0,r:0},{cN:'type',b:/[,:]\\s*/,e:/[<\\(,]|$/,eB:!0,rE:!0},a,i]},n,{cN:'meta',b:'^#!/usr/bin/env',e:'$',i:'\\n'},{cN:'number',b:'\\\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+)(\\\\.([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+))?|\\\\.([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+))([eE][-+]?\\\\d+)?)[lLfF]?',r:0}]}}),r.registerLanguage('gradle',function(e){return{cI:!0,k:{keyword:'task project allprojects subprojects artifacts buildscript configurations dependencies repositories sourceSets description delete from into include exclude source classpath destinationDir includes options sourceCompatibility targetCompatibility group flatDir doLast doFirst flatten todir fromdir ant def abstract break case catch continue default do else extends final finally for if implements instanceof native new private protected public return static switch synchronized throw throws transient try volatile while strictfp package import false null super this true antlrtask checkstyle codenarc copy boolean byte char class double float int interface long short void compile runTime file fileTree abs any append asList asWritable call collect compareTo count div dump each eachByte eachFile eachLine every find findAll flatten getAt getErr getIn getOut getText grep immutable inject inspect intersect invokeMethods isCase join leftShift minus multiply newInputStream newOutputStream newPrintWriter newReader newWriter next plus pop power previous print println push putAt read readBytes readLines reverse reverseEach round size sort splitEachLine step subMap times toInteger toList tokenize upto waitForOrKill withPrintWriter withReader withStream withWriter withWriterAppend write writeLine'},c:[e.CLCM,e.CBCM,e.ASM,e.QSM,e.NM,e.RM]}}),r.registerLanguage('xml',function(e){var t={eW:!0,i:/</,r:0,c:[{cN:'attr',b:'[A-Za-z0-9\\\\._:-]+',r:0},{b:/=\\s*/,r:0,c:[{cN:'string',endsParent:!0,v:[{b:/\"/,e:/\"/},{b:/'/,e:/'/},{b:/[^\\s\"'=<>`]+/}]}]}]};return{aliases:['html','xhtml','rss','atom','xjb','xsd','xsl','plist'],cI:!0,c:[{cN:'meta',b:'<!DOCTYPE',e:'>',r:10,c:[{b:'\\\\[',e:'\\\\]'}]},e.C('\\x3c!--','--\\x3e',{r:10}),{b:'<\\\\!\\\\[CDATA\\\\[',e:'\\\\]\\\\]>',r:10},{cN:'meta',b:/<\\?xml/,e:/\\?>/,r:10},{b:/<\\?(php)?/,e:/\\?>/,sL:'php',c:[{b:'/\\\\*',e:'\\\\*/',skip:!0},{b:'b\"',e:'\"',skip:!0},{b:'b\\'',e:'\\'',skip:!0},e.inherit(e.ASM,{i:null,cN:null,c:null,skip:!0}),e.inherit(e.QSM,{i:null,cN:null,c:null,skip:!0})]},{cN:'tag',b:'<style(?=\\\\s|>|$)',e:'>',k:{name:'style'},c:[t],starts:{e:'</style>',rE:!0,sL:['css','xml']}},{cN:'tag',b:'<script(?=\\\\s|>|$)',e:'>',k:{name:'script'},c:[t],starts:{e:'<\\/script>',rE:!0,sL:['actionscript','javascript','handlebars','xml']}},{cN:'tag',b:'</?',e:'/?>',c:[{cN:'name',b:/[^\\/><\\s]+/,r:0},t]}]}}),r.registerLanguage('asciidoc',function(e){return{aliases:['adoc'],c:[e.C('^/{4,}\\\\n','\\\\n/{4,}$',{r:10}),e.C('^//','$',{r:0}),{cN:'title',b:'^\\\\.\\\\w.*$'},{b:'^[=\\\\*]{4,}\\\\n',e:'\\\\n^[=\\\\*]{4,}$',r:10},{cN:'section',r:10,v:[{b:'^(={1,5}) .+?( \\\\1)?$'},{b:'^[^\\\\[\\\\]\\\\n]+?\\\\n[=\\\\-~\\\\^\\\\+]{2,}$'}]},{cN:'meta',b:'^:.+?:',e:'\\\\s',eE:!0,r:10},{cN:'meta',b:'^\\\\[.+?\\\\]$',r:0},{cN:'quote',b:'^_{4,}\\\\n',e:'\\\\n_{4,}$',r:10},{cN:'code',b:'^[\\\\-\\\\.]{4,}\\\\n',e:'\\\\n[\\\\-\\\\.]{4,}$',r:10},{b:'^\\\\+{4,}\\\\n',e:'\\\\n\\\\+{4,}$',c:[{b:'<',e:'>',sL:'xml',r:0}],r:10},{cN:'bullet',b:'^(\\\\*+|\\\\-+|\\\\.+|[^\\\\n]+?::)\\\\s+'},{cN:'symbol',b:'^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\\\s+',r:10},{cN:'strong',b:'\\\\B\\\\*(?![\\\\*\\\\s])',e:'(\\\\n{2}|\\\\*)',c:[{b:'\\\\\\\\*\\\\w',r:0}]},{cN:'emphasis',b:'\\\\B\\'(?![\\'\\\\s])',e:'(\\\\n{2}|\\')',c:[{b:'\\\\\\\\\\'\\\\w',r:0}],r:0},{cN:'emphasis',b:'_(?![_\\\\s])',e:'(\\\\n{2}|_)',r:0},{cN:'string',v:[{b:'``.+?\\'\\''},{b:'`.+?\\''}]},{cN:'code',b:'(`.+?`|\\\\+.+?\\\\+)',r:0},{cN:'code',b:'^[ \\\\t]',e:'$',r:0},{b:'^\\'{3,}[ \\\\t]*$',r:10},{b:'(link:)?(http|https|ftp|file|irc|image:?):\\\\S+\\\\[.*?\\\\]',rB:!0,c:[{b:'(link|image:?):',r:0},{cN:'link',b:'\\\\w',e:'[^\\\\[]+',r:0},{cN:'string',b:'\\\\[',e:'\\\\]',eB:!0,eE:!0,r:0}],r:10}]}}),r.registerLanguage('erlang-repl',function(e){return{k:{built_in:'spawn spawn_link self',keyword:'after and andalso|10 band begin bnot bor bsl bsr bxor case catch cond div end fun if let not of or orelse|10 query receive rem try when xor'},c:[{cN:'meta',b:'^[0-9]+> ',r:10},e.C('%','$'),{cN:'number',b:'\\\\b(\\\\d+#[a-fA-F0-9]+|\\\\d+(\\\\.\\\\d+)?([eE][-+]?\\\\d+)?)',r:0},e.ASM,e.QSM,{b:'\\\\?(::)?([A-Z]\\\\w*(::)?)+'},{b:'->'},{b:'ok'},{b:'!'},{b:'(\\\\b[a-z\\'][a-zA-Z0-9_\\']*:[a-z\\'][a-zA-Z0-9_\\']*)|(\\\\b[a-z\\'][a-zA-Z0-9_\\']*)',r:0},{b:'[A-Z][a-zA-Z0-9_\\']*',r:0}]}}),r.registerLanguage('perl',function(e){var t='getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when',r={cN:'subst',b:'[$@]\\\\{',e:'\\\\}',k:t},i={b:'->{',e:'}'},a={v:[{b:/\\$\\d/},{b:/[\\$%@](\\^\\w\\b|#\\w+(::\\w+)*|{\\w+}|\\w+(::\\w*)*)/},{b:/[\\$%@][^\\s\\w{]/,r:0}]},n=[e.BE,r,a],e=[a,e.HCM,e.C('^\\\\=\\\\w','\\\\=cut',{eW:!0}),i,{cN:'string',c:n,v:[{b:'q[qwxr]?\\\\s*\\\\(',e:'\\\\)',r:5},{b:'q[qwxr]?\\\\s*\\\\[',e:'\\\\]',r:5},{b:'q[qwxr]?\\\\s*\\\\{',e:'\\\\}',r:5},{b:'q[qwxr]?\\\\s*\\\\|',e:'\\\\|',r:5},{b:'q[qwxr]?\\\\s*\\\\<',e:'\\\\>',r:5},{b:'qw\\\\s+q',e:'q',r:5},{b:'\\'',e:'\\'',c:[e.BE]},{b:'\"',e:'\"'},{b:'`',e:'`',c:[e.BE]},{b:'{\\\\w+}',c:[],r:0},{b:'-?\\\\w+\\\\s*\\\\=\\\\>',c:[],r:0}]},{cN:'number',b:'(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b',r:0},{b:'(\\\\/\\\\/|'+e.RSR+'|\\\\b(split|return|print|reverse|grep)\\\\b)\\\\s*',k:'split return print reverse grep',r:0,c:[e.HCM,{cN:'regexp',b:'(s|tr|y)/(\\\\\\\\.|[^/])*/(\\\\\\\\.|[^/])*/[a-z]*',r:10},{cN:'regexp',b:'(m|qr)?/',e:'/[a-z]*',c:[e.BE],r:0}]},{cN:'function',bK:'sub',e:'(\\\\s*\\\\(.*?\\\\))?[;{]',eE:!0,r:5,c:[e.TM]},{b:'-\\\\w\\\\b',r:0},{b:'^__DATA__$',e:'^__END__$',sL:'mojolicious',c:[{b:'^@@.*',e:'$',cN:'comment'}]}];return r.c=e,{aliases:['pl','pm'],l:/[\\w\\.]+/,k:t,c:i.c=e}}),r.registerLanguage('cpp',function(e){var t={cN:'keyword',b:'\\\\b[a-z\\\\d_]*_t\\\\b'},r={cN:'string',v:[{b:'(u8?|U|L)?\"',e:'\"',i:'\\\\n',c:[e.BE]},{b:/(?:u8?|U|L)?R\"([^()\\\\ ]{0,16})\\((?:.|\\n)*?\\)\\1\"/},{b:'\\'\\\\\\\\?.',e:'\\'',i:'.'}]},i={cN:'number',v:[{b:'\\\\b(0b[01\\']+)'},{b:'(-?)\\\\b([\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)(u|U|l|L|ul|UL|f|F|b|B)'},{b:'(-?)(\\\\b0[xX][a-fA-F0-9\\']+|(\\\\b[\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)([eE][-+]?[\\\\d\\']+)?)'}],r:0},a={cN:'meta',b:/#\\s*[a-z]+\\b/,e:/$/,k:{'meta-keyword':'if else elif endif define undef warning error line pragma ifdef ifndef include'},c:[{b:/\\\\\\n/,r:0},e.inherit(r,{cN:'meta-string'}),{cN:'meta-string',b:/<[^\\n>]*>/,e:/$/,i:'\\\\n'},e.CLCM,e.CBCM]},n=e.IR+'\\\\s*\\\\(',o={keyword:'int float while private char catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr decltype noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and or not',built_in:'std string cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr',literal:'true false nullptr NULL'},s=[t,e.CLCM,e.CBCM,i,r];return{aliases:['c','cc','h','c++','h++','hpp'],k:o,i:'</',c:s.concat([a,{b:'\\\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\\\s*<',e:'>',k:o,c:['self',t]},{b:e.IR+'::',k:o},{v:[{b:/=/,e:/;/},{b:/\\(/,e:/\\)/},{bK:'new throw return else',e:/;/}],k:o,c:s.concat([{b:/\\(/,e:/\\)/,k:o,c:s.concat(['self']),r:0}]),r:0},{cN:'function',b:'('+e.IR+'[\\\\*&\\\\s]+)+'+n,rB:!0,e:/[{;=]/,eE:!0,k:o,i:/[^\\w\\s\\*&]/,c:[{b:n,rB:!0,c:[e.TM],r:0},{cN:'params',b:/\\(/,e:/\\)/,k:o,r:0,c:[e.CLCM,e.CBCM,r,i,t,{b:/\\(/,e:/\\)/,k:o,r:0,c:['self',e.CLCM,e.CBCM,r,i,t]}]},e.CLCM,e.CBCM,a]},{cN:'class',bK:'class struct',e:/[{;:]/,c:[{b:/</,e:/>/,c:['self']},e.TM]}]),exports:{preprocessor:a,strings:r,k:o}}}),r.registerLanguage('arduino',function(e){var t=e.getLanguage('cpp').exports;return{k:{keyword:'boolean byte word string String array '+t.k.keyword,built_in:'setup loop while catch for if do goto try switch case else default break continue return KeyboardController MouseController SoftwareSerial EthernetServer EthernetClient LiquidCrystal RobotControl GSMVoiceCall EthernetUDP EsploraTFT HttpClient RobotMotor WiFiClient GSMScanner FileSystem Scheduler GSMServer YunClient YunServer IPAddress GSMClient GSMModem Keyboard Ethernet Console GSMBand Esplora Stepper Process WiFiUDP GSM_SMS Mailbox USBHost Firmata PImage Client Server GSMPIN FileIO Bridge Serial EEPROM Stream Mouse Audio Servo File Task GPRS WiFi Wire TFT GSM SPI SD runShellCommandAsynchronously analogWriteResolution retrieveCallingNumber printFirmwareVersion analogReadResolution sendDigitalPortPair noListenOnLocalhost readJoystickButton setFirmwareVersion readJoystickSwitch scrollDisplayRight getVoiceCallStatus scrollDisplayLeft writeMicroseconds delayMicroseconds beginTransmission getSignalStrength runAsynchronously getAsynchronously listenOnLocalhost getCurrentCarrier readAccelerometer messageAvailable sendDigitalPorts lineFollowConfig countryNameWrite runShellCommand readStringUntil rewindDirectory readTemperature setClockDivider readLightSensor endTransmission analogReference detachInterrupt countryNameRead attachInterrupt encryptionType readBytesUntil robotNameWrite readMicrophone robotNameRead cityNameWrite userNameWrite readJoystickY readJoystickX mouseReleased openNextFile scanNetworks noInterrupts digitalWrite beginSpeaker mousePressed isActionDone mouseDragged displayLogos noAutoscroll addParameter remoteNumber getModifiers keyboardRead userNameRead waitContinue processInput parseCommand printVersion readNetworks writeMessage blinkVersion cityNameRead readMessage setDataMode parsePacket isListening setBitOrder beginPacket isDirectory motorsWrite drawCompass digitalRead clearScreen serialEvent rightToLeft setTextSize leftToRight requestFrom keyReleased compassRead analogWrite interrupts WiFiServer disconnect playMelody parseFloat autoscroll getPINUsed setPINUsed setTimeout sendAnalog readSlider analogRead beginWrite createChar motorsStop keyPressed tempoWrite readButton subnetMask debugPrint macAddress writeGreen randomSeed attachGPRS readString sendString remotePort releaseAll mouseMoved background getXChange getYChange answerCall getResult voiceCall endPacket constrain getSocket writeJSON getButton available connected findUntil readBytes exitValue readGreen writeBlue startLoop IPAddress isPressed sendSysex pauseMode gatewayIP setCursor getOemKey tuneWrite noDisplay loadImage switchPIN onRequest onReceive changePIN playFile noBuffer parseInt overflow checkPIN knobRead beginTFT bitClear updateIR bitWrite position writeRGB highByte writeRed setSpeed readBlue noStroke remoteIP transfer shutdown hangCall beginSMS endWrite attached maintain noCursor checkReg checkPUK shiftOut isValid shiftIn pulseIn connect println localIP pinMode getIMEI display noBlink process getBand running beginSD drawBMP lowByte setBand release bitRead prepare pointTo readRed setMode noFill remove listen stroke detach attach noTone exists buffer height bitSet circle config cursor random IRread setDNS endSMS getKey micros millis begin print write ready flush width isPIN blink clear press mkdir rmdir close point yield image BSSID click delay read text move peek beep rect line open seek fill size turn stop home find step tone sqrt RSSI SSID end bit tan cos sin pow map abs max min get run put',literal:'DIGITAL_MESSAGE FIRMATA_STRING ANALOG_MESSAGE REPORT_DIGITAL REPORT_ANALOG INPUT_PULLUP SET_PIN_MODE INTERNAL2V56 SYSTEM_RESET LED_BUILTIN INTERNAL1V1 SYSEX_START INTERNAL EXTERNAL DEFAULT OUTPUT INPUT HIGH LOW'},c:[t.preprocessor,e.CLCM,e.CBCM,e.ASM,e.QSM,e.CNM]}}),r.registerLanguage('apache',function(e){var t={cN:'number',b:'[\\\\$%]\\\\d+'};return{aliases:['apacheconf'],cI:!0,c:[e.HCM,{cN:'section',b:'</?',e:'>'},{cN:'attribute',b:/\\w+/,r:0,k:{nomarkup:'order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername'},starts:{e:/$/,r:0,k:{literal:'on off all'},c:[{cN:'meta',b:'\\\\s\\\\[',e:'\\\\]$'},{cN:'variable',b:'[\\\\$%]\\\\{',e:'\\\\}',c:['self',t]},t,e.QSM]}}],i:/\\S/}}),r.registerLanguage('cmake',function(e){return{aliases:['cmake.in'],cI:!0,k:{keyword:'break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined'},c:[{cN:'variable',b:'\\\\${',e:'}'},e.HCM,e.QSM,e.NM]}}),r.registerLanguage('markdown',function(e){return{aliases:['md','mkdown','mkd'],c:[{cN:'section',v:[{b:'^#{1,6}',e:'$'},{b:'^.+?\\\\n[=-]{2,}$'}]},{b:'<',e:'>',sL:'xml',r:0},{cN:'bullet',b:'^([*+-]|(\\\\d+\\\\.))\\\\s+'},{cN:'strong',b:'[*_]{2}.+?[*_]{2}'},{cN:'emphasis',v:[{b:'\\\\*.+?\\\\*'},{b:'_.+?_',r:0}]},{cN:'quote',b:'^>\\\\s+',e:'$'},{cN:'code',v:[{b:'^```w*s*$',e:'^```s*$'},{b:'`.+?`'},{b:'^( {4}|\\t)',e:'$',r:0}]},{b:'^[-\\\\*]{3,}',e:'$'},{b:'\\\\[.+?\\\\][\\\\(\\\\[].*?[\\\\)\\\\]]',rB:!0,c:[{cN:'string',b:'\\\\[',e:'\\\\]',eB:!0,rE:!0,r:0},{cN:'link',b:'\\\\]\\\\(',e:'\\\\)',eB:!0,eE:!0},{cN:'symbol',b:'\\\\]\\\\[',e:'\\\\]',eB:!0,eE:!0}],r:10},{b:/^\\[[^\\n]+\\]:/,rB:!0,c:[{cN:'symbol',b:/\\[/,e:/\\]/,eB:!0,eE:!0},{cN:'link',b:/:\\s*/,e:/$/,eB:!0}]}]}}),r.registerLanguage('diff',function(e){return{aliases:['patch'],c:[{cN:'meta',r:10,v:[{b:/^@@ +\\-\\d+,\\d+ +\\+\\d+,\\d+ +@@$/},{b:/^\\*\\*\\* +\\d+,\\d+ +\\*\\*\\*\\*$/},{b:/^\\-\\-\\- +\\d+,\\d+ +\\-\\-\\-\\-$/}]},{cN:'comment',v:[{b:/Index: /,e:/$/},{b:/={3,}/,e:/$/},{b:/^\\-{3}/,e:/$/},{b:/^\\*{3} /,e:/$/},{b:/^\\+{3}/,e:/$/},{b:/\\*{5}/,e:/\\*{5}$/}]},{cN:'addition',b:'^\\\\+',e:'$'},{cN:'deletion',b:'^\\\\-',e:'$'},{cN:'addition',b:'^\\\\!',e:'$'}]}}),r.registerLanguage('java',function(e){var t='false synchronized int abstract float private char boolean var static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do';return{aliases:['jsp'],k:t,i:/<\\/|#/,c:[e.C('/\\\\*\\\\*','\\\\*/',{r:0,c:[{b:/\\w+@/,r:0},{cN:'doctag',b:'@[A-Za-z]+'}]}),e.CLCM,e.CBCM,e.ASM,e.QSM,{cN:'class',bK:'class interface',e:/[{;=]/,eE:!0,k:'class interface',i:/[:\"\\[\\]]/,c:[{bK:'extends implements'},e.UTM]},{bK:'new throw return else',r:0},{cN:'function',b:'([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\\\s*,\\\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\\\s+)+'+e.UIR+'\\\\s*\\\\(',rB:!0,e:/[{;=]/,eE:!0,k:t,c:[{b:e.UIR+'\\\\s*\\\\(',rB:!0,r:0,c:[e.UTM]},{cN:'params',b:/\\(/,e:/\\)/,k:t,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]},{cN:'number',b:'\\\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+)(\\\\.([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+))?|\\\\.([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+))([eE][-+]?\\\\d+)?)[lLfF]?',r:0},{cN:'meta',b:'@[A-Za-z]+'}]}}),r.registerLanguage('sql',function(e){var t=e.C('--','$');return{cI:!0,i:/[<>{}*]/,c:[{bK:'begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment values with',e:/;/,eW:!0,l:/[\\w\\.]+/,k:{keyword:'as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias all allocate allow alter always analyze ancillary and anti any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound bucket buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain explode export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour hours http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lateral lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minutes minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second seconds section securefile security seed segment select self semi sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tablesample tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace window with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek',literal:'true false null unknown',built_in:'array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text time timestamp tinyint varchar varying void'},c:[{cN:'string',b:'\\'',e:'\\'',c:[e.BE,{b:'\\'\\''}]},{cN:'string',b:'\"',e:'\"',c:[e.BE,{b:'\"\"'}]},{cN:'string',b:'`',e:'`',c:[e.BE]},e.CNM,e.CBCM,t,e.HCM]},e.CBCM,t,e.HCM]}}),r.registerLanguage('armasm',function(e){return{cI:!0,aliases:['arm'],l:'\\\\.?'+e.IR,k:{meta:'.2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .arm .thumb .code16 .code32 .force_thumb .thumb_func .ltorg ALIAS ALIGN ARM AREA ASSERT ATTR CN CODE CODE16 CODE32 COMMON CP DATA DCB DCD DCDU DCDO DCFD DCFDU DCI DCQ DCQU DCW DCWU DN ELIF ELSE END ENDFUNC ENDIF ENDP ENTRY EQU EXPORT EXPORTAS EXTERN FIELD FILL FUNCTION GBLA GBLL GBLS GET GLOBAL IF IMPORT INCBIN INCLUDE INFO KEEP LCLA LCLL LCLS LTORG MACRO MAP MEND MEXIT NOFP OPT PRESERVE8 PROC QN READONLY RELOC REQUIRE REQUIRE8 RLIST FN ROUT SETA SETL SETS SN SPACE SUBT THUMB THUMBX TTL WHILE WEND ',built_in:'r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 pc lr sp ip sl sb fp a1 a2 a3 a4 v1 v2 v3 v4 v5 v6 v7 v8 f0 f1 f2 f3 f4 f5 f6 f7 p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 cpsr_c cpsr_x cpsr_s cpsr_f cpsr_cx cpsr_cxs cpsr_xs cpsr_xsf cpsr_sf cpsr_cxsf spsr_c spsr_x spsr_s spsr_f spsr_cx spsr_cxs spsr_xs spsr_xsf spsr_sf spsr_cxsf s0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 s16 s17 s18 s19 s20 s21 s22 s23 s24 s25 s26 s27 s28 s29 s30 s31 d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 d16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31 {PC} {VAR} {TRUE} {FALSE} {OPT} {CONFIG} {ENDIAN} {CODESIZE} {CPU} {FPU} {ARCHITECTURE} {PCSTOREOFFSET} {ARMASM_VERSION} {INTER} {ROPI} {RWPI} {SWST} {NOSWST} . @'},c:[{cN:'keyword',b:'\\\\b(adc|(qd?|sh?|u[qh]?)?add(8|16)?|usada?8|(q|sh?|u[qh]?)?(as|sa)x|and|adrl?|sbc|rs[bc]|asr|b[lx]?|blx|bxj|cbn?z|tb[bh]|bic|bfc|bfi|[su]bfx|bkpt|cdp2?|clz|clrex|cmp|cmn|cpsi[ed]|cps|setend|dbg|dmb|dsb|eor|isb|it[te]{0,3}|lsl|lsr|ror|rrx|ldm(([id][ab])|f[ds])?|ldr((s|ex)?[bhd])?|movt?|mvn|mra|mar|mul|[us]mull|smul[bwt][bt]|smu[as]d|smmul|smmla|mla|umlaal|smlal?([wbt][bt]|d)|mls|smlsl?[ds]|smc|svc|sev|mia([bt]{2}|ph)?|mrr?c2?|mcrr2?|mrs|msr|orr|orn|pkh(tb|bt)|rbit|rev(16|sh)?|sel|[su]sat(16)?|nop|pop|push|rfe([id][ab])?|stm([id][ab])?|str(ex)?[bhd]?|(qd?)?sub|(sh?|q|u[qh]?)?sub(8|16)|[su]xt(a?h|a?b(16)?)|srs([id][ab])?|swpb?|swi|smi|tst|teq|wfe|wfi|yield)(eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|hs|lo)?[sptrx]?',e:'\\\\s'},e.C('[;@]','$',{r:0}),e.CBCM,e.QSM,{cN:'string',b:'\\'',e:'[^\\\\\\\\]\\'',r:0},{cN:'title',b:'\\\\|',e:'\\\\|',i:'\\\\n',r:0},{cN:'number',v:[{b:'[#$=]?0x[0-9a-f]+'},{b:'[#$=]?0b[01]+'},{b:'[#$=]\\\\d+'},{b:'\\\\b\\\\d+'}],r:0},{cN:'symbol',v:[{b:'^[a-z_\\\\.\\\\$][a-z0-9_\\\\.\\\\$]+'},{b:'^\\\\s*[a-z_\\\\.\\\\$][a-z0-9_\\\\.\\\\$]+:'},{b:'[=#]\\\\w+'}],r:0}]}}),r.registerLanguage('go',function(e){var t={keyword:'break default func interface select case map struct chan else goto package switch const fallthrough if range type continue for import return var go defer bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune',literal:'true false iota nil',built_in:'append cap close complex copy imag len make new panic print println real recover delete'};return{aliases:['golang'],k:t,i:'</',c:[e.CLCM,e.CBCM,{cN:'string',v:[e.QSM,{b:'\\'',e:'[^\\\\\\\\]\\''},{b:'`',e:'`'}]},{cN:'number',v:[{b:e.CNR+'[dflsi]',r:1},e.CNM]},{b:/:=/},{cN:'function',bK:'func',e:/\\s*\\{/,eE:!0,c:[e.TM,{cN:'params',b:/\\(/,e:/\\)/,k:t,i:/[\"']/}]}]}}),r.registerLanguage('mathematica',function(e){return{aliases:['mma'],l:'(\\\\$|\\\\b)'+e.IR+'\\\\b',k:'AbelianGroup Abort AbortKernels AbortProtect Above Abs Absolute AbsoluteCorrelation AbsoluteCorrelationFunction AbsoluteCurrentValue AbsoluteDashing AbsoluteFileName AbsoluteOptions AbsolutePointSize AbsoluteThickness AbsoluteTime AbsoluteTiming AccountingForm Accumulate Accuracy AccuracyGoal ActionDelay ActionMenu ActionMenuBox ActionMenuBoxOptions Active ActiveItem ActiveStyle AcyclicGraphQ AddOnHelpPath AddTo AdjacencyGraph AdjacencyList AdjacencyMatrix AdjustmentBox AdjustmentBoxOptions AdjustTimeSeriesForecast AffineTransform After AiryAi AiryAiPrime AiryAiZero AiryBi AiryBiPrime AiryBiZero AlgebraicIntegerQ AlgebraicNumber AlgebraicNumberDenominator AlgebraicNumberNorm AlgebraicNumberPolynomial AlgebraicNumberTrace AlgebraicRules AlgebraicRulesData Algebraics AlgebraicUnitQ Alignment AlignmentMarker AlignmentPoint All AllowedDimensions AllowGroupClose AllowInlineCells AllowKernelInitialization AllowReverseGroupClose AllowScriptLevelChange AlphaChannel AlternatingGroup AlternativeHypothesis Alternatives AmbientLight Analytic AnchoredSearch And AndersonDarlingTest AngerJ AngleBracket AngularGauge Animate AnimationCycleOffset AnimationCycleRepetitions AnimationDirection AnimationDisplayTime AnimationRate AnimationRepetitions AnimationRunning Animator AnimatorBox AnimatorBoxOptions AnimatorElements Annotation Annuity AnnuityDue Antialiasing Antisymmetric Apart ApartSquareFree Appearance AppearanceElements AppellF1 Append AppendTo Apply ArcCos ArcCosh ArcCot ArcCoth ArcCsc ArcCsch ArcSec ArcSech ArcSin ArcSinDistribution ArcSinh ArcTan ArcTanh Arg ArgMax ArgMin ArgumentCountQ ARIMAProcess ArithmeticGeometricMean ARMAProcess ARProcess Array ArrayComponents ArrayDepth ArrayFlatten ArrayPad ArrayPlot ArrayQ ArrayReshape ArrayRules Arrays Arrow Arrow3DBox ArrowBox Arrowheads AspectRatio AspectRatioFixed Assert Assuming Assumptions AstronomicalData Asynchronous AsynchronousTaskObject AsynchronousTasks AtomQ Attributes AugmentedSymmetricPolynomial AutoAction AutoDelete AutoEvaluateEvents AutoGeneratedPackage AutoIndent AutoIndentSpacings AutoItalicWords AutoloadPath AutoMatch Automatic AutomaticImageSize AutoMultiplicationSymbol AutoNumberFormatting AutoOpenNotebooks AutoOpenPalettes AutorunSequencing AutoScaling AutoScroll AutoSpacing AutoStyleOptions AutoStyleWords Axes AxesEdge AxesLabel AxesOrigin AxesStyle Axis BabyMonsterGroupB Back Background BackgroundTasksSettings Backslash Backsubstitution Backward Band BandpassFilter BandstopFilter BarabasiAlbertGraphDistribution BarChart BarChart3D BarLegend BarlowProschanImportance BarnesG BarOrigin BarSpacing BartlettHannWindow BartlettWindow BaseForm Baseline BaselinePosition BaseStyle BatesDistribution BattleLemarieWavelet Because BeckmannDistribution Beep Before Begin BeginDialogPacket BeginFrontEndInteractionPacket BeginPackage BellB BellY Below BenfordDistribution BeniniDistribution BenktanderGibratDistribution BenktanderWeibullDistribution BernoulliB BernoulliDistribution BernoulliGraphDistribution BernoulliProcess BernsteinBasis BesselFilterModel BesselI BesselJ BesselJZero BesselK BesselY BesselYZero Beta BetaBinomialDistribution BetaDistribution BetaNegativeBinomialDistribution BetaPrimeDistribution BetaRegularized BetweennessCentrality BezierCurve BezierCurve3DBox BezierCurve3DBoxOptions BezierCurveBox BezierCurveBoxOptions BezierFunction BilateralFilter Binarize BinaryFormat BinaryImageQ BinaryRead BinaryReadList BinaryWrite BinCounts BinLists Binomial BinomialDistribution BinomialProcess BinormalDistribution BiorthogonalSplineWavelet BipartiteGraphQ BirnbaumImportance BirnbaumSaundersDistribution BitAnd BitClear BitGet BitLength BitNot BitOr BitSet BitShiftLeft BitShiftRight BitXor Black BlackmanHarrisWindow BlackmanNuttallWindow BlackmanWindow Blank BlankForm BlankNullSequence BlankSequence Blend Block BlockRandom BlomqvistBeta BlomqvistBetaTest Blue Blur BodePlot BohmanWindow Bold Bookmarks Boole BooleanConsecutiveFunction BooleanConvert BooleanCountingFunction BooleanFunction BooleanGraph BooleanMaxterms BooleanMinimize BooleanMinterms Booleans BooleanTable BooleanVariables BorderDimensions BorelTannerDistribution Bottom BottomHatTransform BoundaryStyle Bounds Box BoxBaselineShift BoxData BoxDimensions Boxed Boxes BoxForm BoxFormFormatTypes BoxFrame BoxID BoxMargins BoxMatrix BoxRatios BoxRotation BoxRotationPoint BoxStyle BoxWhiskerChart Bra BracketingBar BraKet BrayCurtisDistance BreadthFirstScan Break Brown BrownForsytheTest BrownianBridgeProcess BrowserCategory BSplineBasis BSplineCurve BSplineCurve3DBox BSplineCurveBox BSplineCurveBoxOptions BSplineFunction BSplineSurface BSplineSurface3DBox BubbleChart BubbleChart3D BubbleScale BubbleSizes BulletGauge BusinessDayQ ButterflyGraph ButterworthFilterModel Button ButtonBar ButtonBox ButtonBoxOptions ButtonCell ButtonContents ButtonData ButtonEvaluator ButtonExpandable ButtonFrame ButtonFunction ButtonMargins ButtonMinHeight ButtonNote ButtonNotebook ButtonSource ButtonStyle ButtonStyleMenuListing Byte ByteCount ByteOrdering C CachedValue CacheGraphics CalendarData CalendarType CallPacket CanberraDistance Cancel CancelButton CandlestickChart Cap CapForm CapitalDifferentialD CardinalBSplineBasis CarmichaelLambda Cases Cashflow Casoratian Catalan CatalanNumber Catch CauchyDistribution CauchyWindow CayleyGraph CDF CDFDeploy CDFInformation CDFWavelet Ceiling Cell CellAutoOverwrite CellBaseline CellBoundingBox CellBracketOptions CellChangeTimes CellContents CellContext CellDingbat CellDynamicExpression CellEditDuplicate CellElementsBoundingBox CellElementSpacings CellEpilog CellEvaluationDuplicate CellEvaluationFunction CellEventActions CellFrame CellFrameColor CellFrameLabelMargins CellFrameLabels CellFrameMargins CellGroup CellGroupData CellGrouping CellGroupingRules CellHorizontalScrolling CellID CellLabel CellLabelAutoDelete CellLabelMargins CellLabelPositioning CellMargins CellObject CellOpen CellPrint CellProlog Cells CellSize CellStyle CellTags CellularAutomaton CensoredDistribution Censoring Center CenterDot CentralMoment CentralMomentGeneratingFunction CForm ChampernowneNumber ChanVeseBinarize Character CharacterEncoding CharacterEncodingsPath CharacteristicFunction CharacteristicPolynomial CharacterRange Characters ChartBaseStyle ChartElementData ChartElementDataFunction ChartElementFunction ChartElements ChartLabels ChartLayout ChartLegends ChartStyle Chebyshev1FilterModel Chebyshev2FilterModel ChebyshevDistance ChebyshevT ChebyshevU Check CheckAbort CheckAll Checkbox CheckboxBar CheckboxBox CheckboxBoxOptions ChemicalData ChessboardDistance ChiDistribution ChineseRemainder ChiSquareDistribution ChoiceButtons ChoiceDialog CholeskyDecomposition Chop Circle CircleBox CircleDot CircleMinus CirclePlus CircleTimes CirculantGraph CityData Clear ClearAll ClearAttributes ClearSystemCache ClebschGordan ClickPane Clip ClipboardNotebook ClipFill ClippingStyle ClipPlanes ClipRange Clock ClockGauge ClockwiseContourIntegral Close Closed CloseKernels ClosenessCentrality Closing ClosingAutoSave ClosingEvent ClusteringComponents CMYKColor Coarse Coefficient CoefficientArrays CoefficientDomain CoefficientList CoefficientRules CoifletWavelet Collect Colon ColonForm ColorCombine ColorConvert ColorData ColorDataFunction ColorFunction ColorFunctionScaling Colorize ColorNegate ColorOutput ColorProfileData ColorQuantize ColorReplace ColorRules ColorSelectorSettings ColorSeparate ColorSetter ColorSetterBox ColorSetterBoxOptions ColorSlider ColorSpace Column ColumnAlignments ColumnBackgrounds ColumnForm ColumnLines ColumnsEqual ColumnSpacings ColumnWidths CommonDefaultFormatTypes Commonest CommonestFilter CommonUnits CommunityBoundaryStyle CommunityGraphPlot CommunityLabels CommunityRegionStyle CompatibleUnitQ CompilationOptions CompilationTarget Compile Compiled CompiledFunction Complement CompleteGraph CompleteGraphQ CompleteKaryTree CompletionsListPacket Complex Complexes ComplexExpand ComplexInfinity ComplexityFunction ComponentMeasurements ComponentwiseContextMenu Compose ComposeList ComposeSeries Composition CompoundExpression CompoundPoissonDistribution CompoundPoissonProcess CompoundRenewalProcess Compress CompressedData Condition ConditionalExpression Conditioned Cone ConeBox ConfidenceLevel ConfidenceRange ConfidenceTransform ConfigurationPath Congruent Conjugate ConjugateTranspose Conjunction Connect ConnectedComponents ConnectedGraphQ ConnesWindow ConoverTest ConsoleMessage ConsoleMessagePacket ConsolePrint Constant ConstantArray Constants ConstrainedMax ConstrainedMin ContentPadding ContentsBoundingBox ContentSelectable ContentSize Context ContextMenu Contexts ContextToFilename ContextToFileName Continuation Continue ContinuedFraction ContinuedFractionK ContinuousAction ContinuousMarkovProcess ContinuousTimeModelQ ContinuousWaveletData ContinuousWaveletTransform ContourDetect ContourGraphics ContourIntegral ContourLabels ContourLines ContourPlot ContourPlot3D Contours ContourShading ContourSmoothing ContourStyle ContraharmonicMean Control ControlActive ControlAlignment ControllabilityGramian ControllabilityMatrix ControllableDecomposition ControllableModelQ ControllerDuration ControllerInformation ControllerInformationData ControllerLinking ControllerManipulate ControllerMethod ControllerPath ControllerState ControlPlacement ControlsRendering ControlType Convergents ConversionOptions ConversionRules ConvertToBitmapPacket ConvertToPostScript ConvertToPostScriptPacket Convolve ConwayGroupCo1 ConwayGroupCo2 ConwayGroupCo3 CoordinateChartData CoordinatesToolOptions CoordinateTransform CoordinateTransformData CoprimeQ Coproduct CopulaDistribution Copyable CopyDirectory CopyFile CopyTag CopyToClipboard CornerFilter CornerNeighbors Correlation CorrelationDistance CorrelationFunction CorrelationTest Cos Cosh CoshIntegral CosineDistance CosineWindow CosIntegral Cot Coth Count CounterAssignments CounterBox CounterBoxOptions CounterClockwiseContourIntegral CounterEvaluator CounterFunction CounterIncrements CounterStyle CounterStyleMenuListing CountRoots CountryData Covariance CovarianceEstimatorFunction CovarianceFunction CoxianDistribution CoxIngersollRossProcess CoxModel CoxModelFit CramerVonMisesTest CreateArchive CreateDialog CreateDirectory CreateDocument CreateIntermediateDirectories CreatePalette CreatePalettePacket CreateScheduledTask CreateTemporary CreateWindow CriticalityFailureImportance CriticalitySuccessImportance CriticalSection Cross CrossingDetect CrossMatrix Csc Csch CubeRoot Cubics Cuboid CuboidBox Cumulant CumulantGeneratingFunction Cup CupCap Curl CurlyDoubleQuote CurlyQuote CurrentImage CurrentlySpeakingPacket CurrentValue CurvatureFlowFilter CurveClosed Cyan CycleGraph CycleIndexPolynomial Cycles CyclicGroup Cyclotomic Cylinder CylinderBox CylindricalDecomposition D DagumDistribution DamerauLevenshteinDistance DampingFactor Darker Dashed Dashing DataCompression DataDistribution DataRange DataReversed Date DateDelimiters DateDifference DateFunction DateList DateListLogPlot DateListPlot DatePattern DatePlus DateRange DateString DateTicksFormat DaubechiesWavelet DavisDistribution DawsonF DayCount DayCountConvention DayMatchQ DayName DayPlus DayRange DayRound DeBruijnGraph Debug DebugTag Decimal DeclareKnownSymbols DeclarePackage Decompose Decrement DedekindEta Default DefaultAxesStyle DefaultBaseStyle DefaultBoxStyle DefaultButton DefaultColor DefaultControlPlacement DefaultDuplicateCellStyle DefaultDuration DefaultElement DefaultFaceGridsStyle DefaultFieldHintStyle DefaultFont DefaultFontProperties DefaultFormatType DefaultFormatTypeForStyle DefaultFrameStyle DefaultFrameTicksStyle DefaultGridLinesStyle DefaultInlineFormatType DefaultInputFormatType DefaultLabelStyle DefaultMenuStyle DefaultNaturalLanguage DefaultNewCellStyle DefaultNewInlineCellStyle DefaultNotebook DefaultOptions DefaultOutputFormatType DefaultStyle DefaultStyleDefinitions DefaultTextFormatType DefaultTextInlineFormatType DefaultTicksStyle DefaultTooltipStyle DefaultValues Defer DefineExternal DefineInputStreamMethod DefineOutputStreamMethod Definition Degree DegreeCentrality DegreeGraphDistribution DegreeLexicographic DegreeReverseLexicographic Deinitialization Del Deletable Delete DeleteBorderComponents DeleteCases DeleteContents DeleteDirectory DeleteDuplicates DeleteFile DeleteSmallComponents DeleteWithContents DeletionWarning Delimiter DelimiterFlashTime DelimiterMatching Delimiters Denominator DensityGraphics DensityHistogram DensityPlot DependentVariables Deploy Deployed Depth DepthFirstScan Derivative DerivativeFilter DescriptorStateSpace DesignMatrix Det DGaussianWavelet DiacriticalPositioning Diagonal DiagonalMatrix Dialog DialogIndent DialogInput DialogLevel DialogNotebook DialogProlog DialogReturn DialogSymbols Diamond DiamondMatrix DiceDissimilarity DictionaryLookup DifferenceDelta DifferenceOrder DifferenceRoot DifferenceRootReduce Differences DifferentialD DifferentialRoot DifferentialRootReduce DifferentiatorFilter DigitBlock DigitBlockMinimum DigitCharacter DigitCount DigitQ DihedralGroup Dilation Dimensions DiracComb DiracDelta DirectedEdge DirectedEdges DirectedGraph DirectedGraphQ DirectedInfinity Direction Directive Directory DirectoryName DirectoryQ DirectoryStack DirichletCharacter DirichletConvolve DirichletDistribution DirichletL DirichletTransform DirichletWindow DisableConsolePrintPacket DiscreteChirpZTransform DiscreteConvolve DiscreteDelta DiscreteHadamardTransform DiscreteIndicator DiscreteLQEstimatorGains DiscreteLQRegulatorGains DiscreteLyapunovSolve DiscreteMarkovProcess DiscretePlot DiscretePlot3D DiscreteRatio DiscreteRiccatiSolve DiscreteShift DiscreteTimeModelQ DiscreteUniformDistribution DiscreteVariables DiscreteWaveletData DiscreteWaveletPacketTransform DiscreteWaveletTransform Discriminant Disjunction Disk DiskBox DiskMatrix Dispatch DispersionEstimatorFunction Display DisplayAllSteps DisplayEndPacket DisplayFlushImagePacket DisplayForm DisplayFunction DisplayPacket DisplayRules DisplaySetSizePacket DisplayString DisplayTemporary DisplayWith DisplayWithRef DisplayWithVariable DistanceFunction DistanceTransform Distribute Distributed DistributedContexts DistributeDefinitions DistributionChart DistributionDomain DistributionFitTest DistributionParameterAssumptions DistributionParameterQ Dithering Div Divergence Divide DivideBy Dividers Divisible Divisors DivisorSigma DivisorSum DMSList DMSString Do DockedCells DocumentNotebook DominantColors DOSTextFormat Dot DotDashed DotEqual Dotted DoubleBracketingBar DoubleContourIntegral DoubleDownArrow DoubleLeftArrow DoubleLeftRightArrow DoubleLeftTee DoubleLongLeftArrow DoubleLongLeftRightArrow DoubleLongRightArrow DoubleRightArrow DoubleRightTee DoubleUpArrow DoubleUpDownArrow DoubleVerticalBar DoublyInfinite Down DownArrow DownArrowBar DownArrowUpArrow DownLeftRightVector DownLeftTeeVector DownLeftVector DownLeftVectorBar DownRightTeeVector DownRightVector DownRightVectorBar Downsample DownTee DownTeeArrow DownValues DragAndDrop DrawEdges DrawFrontFaces DrawHighlighted Drop DSolve Dt DualLinearProgramming DualSystemsModel DumpGet DumpSave DuplicateFreeQ Dynamic DynamicBox DynamicBoxOptions DynamicEvaluationTimeout DynamicLocation DynamicModule DynamicModuleBox DynamicModuleBoxOptions DynamicModuleParent DynamicModuleValues DynamicName DynamicNamespace DynamicReference DynamicSetting DynamicUpdating DynamicWrapper DynamicWrapperBox DynamicWrapperBoxOptions E EccentricityCentrality EdgeAdd EdgeBetweennessCentrality EdgeCapacity EdgeCapForm EdgeColor EdgeConnectivity EdgeCost EdgeCount EdgeCoverQ EdgeDashing EdgeDelete EdgeDetect EdgeForm EdgeIndex EdgeJoinForm EdgeLabeling EdgeLabels EdgeLabelStyle EdgeList EdgeOpacity EdgeQ EdgeRenderingFunction EdgeRules EdgeShapeFunction EdgeStyle EdgeThickness EdgeWeight Editable EditButtonSettings EditCellTagsSettings EditDistance EffectiveInterest Eigensystem Eigenvalues EigenvectorCentrality Eigenvectors Element ElementData Eliminate EliminationOrder EllipticE EllipticExp EllipticExpPrime EllipticF EllipticFilterModel EllipticK EllipticLog EllipticNomeQ EllipticPi EllipticReducedHalfPeriods EllipticTheta EllipticThetaPrime EmitSound EmphasizeSyntaxErrors EmpiricalDistribution Empty EmptyGraphQ EnableConsolePrintPacket Enabled Encode End EndAdd EndDialogPacket EndFrontEndInteractionPacket EndOfFile EndOfLine EndOfString EndPackage EngineeringForm Enter EnterExpressionPacket EnterTextPacket Entropy EntropyFilter Environment Epilog Equal EqualColumns EqualRows EqualTilde EquatedTo Equilibrium EquirippleFilterKernel Equivalent Erf Erfc Erfi ErlangB ErlangC ErlangDistribution Erosion ErrorBox ErrorBoxOptions ErrorNorm ErrorPacket ErrorsDialogSettings EstimatedDistribution EstimatedProcess EstimatorGains EstimatorRegulator EuclideanDistance EulerE EulerGamma EulerianGraphQ EulerPhi Evaluatable Evaluate Evaluated EvaluatePacket EvaluationCell EvaluationCompletionAction EvaluationElements EvaluationMode EvaluationMonitor EvaluationNotebook EvaluationObject EvaluationOrder Evaluator EvaluatorNames EvenQ EventData EventEvaluator EventHandler EventHandlerTag EventLabels ExactBlackmanWindow ExactNumberQ ExactRootIsolation ExampleData Except ExcludedForms ExcludePods Exclusions ExclusionsStyle Exists Exit ExitDialog Exp Expand ExpandAll ExpandDenominator ExpandFileName ExpandNumerator Expectation ExpectationE ExpectedValue ExpGammaDistribution ExpIntegralE ExpIntegralEi Exponent ExponentFunction ExponentialDistribution ExponentialFamily ExponentialGeneratingFunction ExponentialMovingAverage ExponentialPowerDistribution ExponentPosition ExponentStep Export ExportAutoReplacements ExportPacket ExportString Expression ExpressionCell ExpressionPacket ExpToTrig ExtendedGCD Extension ExtentElementFunction ExtentMarkers ExtentSize ExternalCall ExternalDataCharacterEncoding Extract ExtractArchive ExtremeValueDistribution FaceForm FaceGrids FaceGridsStyle Factor FactorComplete Factorial Factorial2 FactorialMoment FactorialMomentGeneratingFunction FactorialPower FactorInteger FactorList FactorSquareFree FactorSquareFreeList FactorTerms FactorTermsList Fail FailureDistribution False FARIMAProcess FEDisableConsolePrintPacket FeedbackSector FeedbackSectorStyle FeedbackType FEEnableConsolePrintPacket Fibonacci FieldHint FieldHintStyle FieldMasked FieldSize File FileBaseName FileByteCount FileDate FileExistsQ FileExtension FileFormat FileHash FileInformation FileName FileNameDepth FileNameDialogSettings FileNameDrop FileNameJoin FileNames FileNameSetter FileNameSplit FileNameTake FilePrint FileType FilledCurve FilledCurveBox Filling FillingStyle FillingTransform FilterRules FinancialBond FinancialData FinancialDerivative FinancialIndicator Find FindArgMax FindArgMin FindClique FindClusters FindCurvePath FindDistributionParameters FindDivisions FindEdgeCover FindEdgeCut FindEulerianCycle FindFaces FindFile FindFit FindGeneratingFunction FindGeoLocation FindGeometricTransform FindGraphCommunities FindGraphIsomorphism FindGraphPartition FindHamiltonianCycle FindIndependentEdgeSet FindIndependentVertexSet FindInstance FindIntegerNullVector FindKClan FindKClique FindKClub FindKPlex FindLibrary FindLinearRecurrence FindList FindMaximum FindMaximumFlow FindMaxValue FindMinimum FindMinimumCostFlow FindMinimumCut FindMinValue FindPermutation FindPostmanTour FindProcessParameters FindRoot FindSequenceFunction FindSettings FindShortestPath FindShortestTour FindThreshold FindVertexCover FindVertexCut Fine FinishDynamic FiniteAbelianGroupCount FiniteGroupCount FiniteGroupData First FirstPassageTimeDistribution FischerGroupFi22 FischerGroupFi23 FischerGroupFi24Prime FisherHypergeometricDistribution FisherRatioTest FisherZDistribution Fit FitAll FittedModel FixedPoint FixedPointList FlashSelection Flat Flatten FlattenAt FlatTopWindow FlipView Floor FlushPrintOutputPacket Fold FoldList Font FontColor FontFamily FontForm FontName FontOpacity FontPostScriptName FontProperties FontReencoding FontSize FontSlant FontSubstitutions FontTracking FontVariations FontWeight For ForAll Format FormatRules FormatType FormatTypeAutoConvert FormatValues FormBox FormBoxOptions FortranForm Forward ForwardBackward Fourier FourierCoefficient FourierCosCoefficient FourierCosSeries FourierCosTransform FourierDCT FourierDCTFilter FourierDCTMatrix FourierDST FourierDSTMatrix FourierMatrix FourierParameters FourierSequenceTransform FourierSeries FourierSinCoefficient FourierSinSeries FourierSinTransform FourierTransform FourierTrigSeries FractionalBrownianMotionProcess FractionalPart FractionBox FractionBoxOptions FractionLine Frame FrameBox FrameBoxOptions Framed FrameInset FrameLabel Frameless FrameMargins FrameStyle FrameTicks FrameTicksStyle FRatioDistribution FrechetDistribution FreeQ FrequencySamplingFilterKernel FresnelC FresnelS Friday FrobeniusNumber FrobeniusSolve FromCharacterCode FromCoefficientRules FromContinuedFraction FromDate FromDigits FromDMS Front FrontEndDynamicExpression FrontEndEventActions FrontEndExecute FrontEndObject FrontEndResource FrontEndResourceString FrontEndStackSize FrontEndToken FrontEndTokenExecute FrontEndValueCache FrontEndVersion FrontFaceColor FrontFaceOpacity Full FullAxes FullDefinition FullForm FullGraphics FullOptions FullSimplify Function FunctionExpand FunctionInterpolation FunctionSpace FussellVeselyImportance GaborFilter GaborMatrix GaborWavelet GainMargins GainPhaseMargins Gamma GammaDistribution GammaRegularized GapPenalty Gather GatherBy GaugeFaceElementFunction GaugeFaceStyle GaugeFrameElementFunction GaugeFrameSize GaugeFrameStyle GaugeLabels GaugeMarkers GaugeStyle GaussianFilter GaussianIntegers GaussianMatrix GaussianWindow GCD GegenbauerC General GeneralizedLinearModelFit GenerateConditions GeneratedCell GeneratedParameters GeneratingFunction Generic GenericCylindricalDecomposition GenomeData GenomeLookup GeodesicClosing GeodesicDilation GeodesicErosion GeodesicOpening GeoDestination GeodesyData GeoDirection GeoDistance GeoGridPosition GeometricBrownianMotionProcess GeometricDistribution GeometricMean GeometricMeanFilter GeometricTransformation GeometricTransformation3DBox GeometricTransformation3DBoxOptions GeometricTransformationBox GeometricTransformationBoxOptions GeoPosition GeoPositionENU GeoPositionXYZ GeoProjectionData GestureHandler GestureHandlerTag Get GetBoundingBoxSizePacket GetContext GetEnvironment GetFileName GetFrontEndOptionsDataPacket GetLinebreakInformationPacket GetMenusPacket GetPageBreakInformationPacket Glaisher GlobalClusteringCoefficient GlobalPreferences GlobalSession Glow GoldenRatio GompertzMakehamDistribution GoodmanKruskalGamma GoodmanKruskalGammaTest Goto Grad Gradient GradientFilter GradientOrientationFilter Graph GraphAssortativity GraphCenter GraphComplement GraphData GraphDensity GraphDiameter GraphDifference GraphDisjointUnion GraphDistance GraphDistanceMatrix GraphElementData GraphEmbedding GraphHighlight GraphHighlightStyle GraphHub Graphics Graphics3D Graphics3DBox Graphics3DBoxOptions GraphicsArray GraphicsBaseline GraphicsBox GraphicsBoxOptions GraphicsColor GraphicsColumn GraphicsComplex GraphicsComplex3DBox GraphicsComplex3DBoxOptions GraphicsComplexBox GraphicsComplexBoxOptions GraphicsContents GraphicsData GraphicsGrid GraphicsGridBox GraphicsGroup GraphicsGroup3DBox GraphicsGroup3DBoxOptions GraphicsGroupBox GraphicsGroupBoxOptions GraphicsGrouping GraphicsHighlightColor GraphicsRow GraphicsSpacing GraphicsStyle GraphIntersection GraphLayout GraphLinkEfficiency GraphPeriphery GraphPlot GraphPlot3D GraphPower GraphPropertyDistribution GraphQ GraphRadius GraphReciprocity GraphRoot GraphStyle GraphUnion Gray GrayLevel GreatCircleDistance Greater GreaterEqual GreaterEqualLess GreaterFullEqual GreaterGreater GreaterLess GreaterSlantEqual GreaterTilde Green Grid GridBaseline GridBox GridBoxAlignment GridBoxBackground GridBoxDividers GridBoxFrame GridBoxItemSize GridBoxItemStyle GridBoxOptions GridBoxSpacings GridCreationSettings GridDefaultElement GridElementStyleOptions GridFrame GridFrameMargins GridGraph GridLines GridLinesStyle GroebnerBasis GroupActionBase GroupCentralizer GroupElementFromWord GroupElementPosition GroupElementQ GroupElements GroupElementToWord GroupGenerators GroupMultiplicationTable GroupOrbits GroupOrder GroupPageBreakWithin GroupSetwiseStabilizer GroupStabilizer GroupStabilizerChain Gudermannian GumbelDistribution HaarWavelet HadamardMatrix HalfNormalDistribution HamiltonianGraphQ HammingDistance HammingWindow HankelH1 HankelH2 HankelMatrix HannPoissonWindow HannWindow HaradaNortonGroupHN HararyGraph HarmonicMean HarmonicMeanFilter HarmonicNumber Hash HashTable Haversine HazardFunction Head HeadCompose Heads HeavisideLambda HeavisidePi HeavisideTheta HeldGroupHe HeldPart HelpBrowserLookup HelpBrowserNotebook HelpBrowserSettings HermiteDecomposition HermiteH HermitianMatrixQ HessenbergDecomposition Hessian HexadecimalCharacter Hexahedron HexahedronBox HexahedronBoxOptions HiddenSurface HighlightGraph HighlightImage HighpassFilter HigmanSimsGroupHS HilbertFilter HilbertMatrix Histogram Histogram3D HistogramDistribution HistogramList HistogramTransform HistogramTransformInterpolation HitMissTransform HITSCentrality HodgeDual HoeffdingD HoeffdingDTest Hold HoldAll HoldAllComplete HoldComplete HoldFirst HoldForm HoldPattern HoldRest HolidayCalendar HomeDirectory HomePage Horizontal HorizontalForm HorizontalGauge HorizontalScrollPosition HornerForm HotellingTSquareDistribution HoytDistribution HTMLSave Hue HumpDownHump HumpEqual HurwitzLerchPhi HurwitzZeta HyperbolicDistribution HypercubeGraph HyperexponentialDistribution Hyperfactorial Hypergeometric0F1 Hypergeometric0F1Regularized Hypergeometric1F1 Hypergeometric1F1Regularized Hypergeometric2F1 Hypergeometric2F1Regularized HypergeometricDistribution HypergeometricPFQ HypergeometricPFQRegularized HypergeometricU Hyperlink HyperlinkCreationSettings Hyphenation HyphenationOptions HypoexponentialDistribution HypothesisTestData I Identity IdentityMatrix If IgnoreCase Im Image Image3D Image3DSlices ImageAccumulate ImageAdd ImageAdjust ImageAlign ImageApply ImageAspectRatio ImageAssemble ImageCache ImageCacheValid ImageCapture ImageChannels ImageClip ImageColorSpace ImageCompose ImageConvolve ImageCooccurrence ImageCorners ImageCorrelate ImageCorrespondingPoints ImageCrop ImageData ImageDataPacket ImageDeconvolve ImageDemosaic ImageDifference ImageDimensions ImageDistance ImageEffect ImageFeatureTrack ImageFileApply ImageFileFilter ImageFileScan ImageFilter ImageForestingComponents ImageForwardTransformation ImageHistogram ImageKeypoints ImageLevels ImageLines ImageMargins ImageMarkers ImageMeasurements ImageMultiply ImageOffset ImagePad ImagePadding ImagePartition ImagePeriodogram ImagePerspectiveTransformation ImageQ ImageRangeCache ImageReflect ImageRegion ImageResize ImageResolution ImageRotate ImageRotated ImageScaled ImageScan ImageSize ImageSizeAction ImageSizeCache ImageSizeMultipliers ImageSizeRaw ImageSubtract ImageTake ImageTransformation ImageTrim ImageType ImageValue ImageValuePositions Implies Import ImportAutoReplacements ImportString ImprovementImportance In IncidenceGraph IncidenceList IncidenceMatrix IncludeConstantBasis IncludeFileExtension IncludePods IncludeSingularTerm Increment Indent IndentingNewlineSpacings IndentMaxFraction IndependenceTest IndependentEdgeSetQ IndependentUnit IndependentVertexSetQ Indeterminate IndexCreationOptions Indexed IndexGraph IndexTag Inequality InexactNumberQ InexactNumbers Infinity Infix Information Inherited InheritScope Initialization InitializationCell InitializationCellEvaluation InitializationCellWarning InlineCounterAssignments InlineCounterIncrements InlineRules Inner Inpaint Input InputAliases InputAssumptions InputAutoReplacements InputField InputFieldBox InputFieldBoxOptions InputForm InputGrouping InputNamePacket InputNotebook InputPacket InputSettings InputStream InputString InputStringPacket InputToBoxFormPacket Insert InsertionPointObject InsertResults Inset Inset3DBox Inset3DBoxOptions InsetBox InsetBoxOptions Install InstallService InString Integer IntegerDigits IntegerExponent IntegerLength IntegerPart IntegerPartitions IntegerQ Integers IntegerString Integral Integrate Interactive InteractiveTradingChart Interlaced Interleaving InternallyBalancedDecomposition InterpolatingFunction InterpolatingPolynomial Interpolation InterpolationOrder InterpolationPoints InterpolationPrecision Interpretation InterpretationBox InterpretationBoxOptions InterpretationFunction InterpretTemplate InterquartileRange Interrupt InterruptSettings Intersection Interval IntervalIntersection IntervalMemberQ IntervalUnion Inverse InverseBetaRegularized InverseCDF InverseChiSquareDistribution InverseContinuousWaveletTransform InverseDistanceTransform InverseEllipticNomeQ InverseErf InverseErfc InverseFourier InverseFourierCosTransform InverseFourierSequenceTransform InverseFourierSinTransform InverseFourierTransform InverseFunction InverseFunctions InverseGammaDistribution InverseGammaRegularized InverseGaussianDistribution InverseGudermannian InverseHaversine InverseJacobiCD InverseJacobiCN InverseJacobiCS InverseJacobiDC InverseJacobiDN InverseJacobiDS InverseJacobiNC InverseJacobiND InverseJacobiNS InverseJacobiSC InverseJacobiSD InverseJacobiSN InverseLaplaceTransform InversePermutation InverseRadon InverseSeries InverseSurvivalFunction InverseWaveletTransform InverseWeierstrassP InverseZTransform Invisible InvisibleApplication InvisibleTimes IrreduciblePolynomialQ IsolatingInterval IsomorphicGraphQ IsotopeData Italic Item ItemBox ItemBoxOptions ItemSize ItemStyle ItoProcess JaccardDissimilarity JacobiAmplitude Jacobian JacobiCD JacobiCN JacobiCS JacobiDC JacobiDN JacobiDS JacobiNC JacobiND JacobiNS JacobiP JacobiSC JacobiSD JacobiSN JacobiSymbol JacobiZeta JankoGroupJ1 JankoGroupJ2 JankoGroupJ3 JankoGroupJ4 JarqueBeraALMTest JohnsonDistribution Join Joined JoinedCurve JoinedCurveBox JoinForm JordanDecomposition JordanModelDecomposition K KagiChart KaiserBesselWindow KaiserWindow KalmanEstimator KalmanFilter KarhunenLoeveDecomposition KaryTree KatzCentrality KCoreComponents KDistribution KelvinBei KelvinBer KelvinKei KelvinKer KendallTau KendallTauTest KernelExecute KernelMixtureDistribution KernelObject Kernels Ket Khinchin KirchhoffGraph KirchhoffMatrix KleinInvariantJ KnightTourGraph KnotData KnownUnitQ KolmogorovSmirnovTest KroneckerDelta KroneckerModelDecomposition KroneckerProduct KroneckerSymbol KuiperTest KumaraswamyDistribution Kurtosis KuwaharaFilter Label Labeled LabeledSlider LabelingFunction LabelStyle LaguerreL LambdaComponents LambertW LanczosWindow LandauDistribution Language LanguageCategory LaplaceDistribution LaplaceTransform Laplacian LaplacianFilter LaplacianGaussianFilter Large Larger Last Latitude LatitudeLongitude LatticeData LatticeReduce Launch LaunchKernels LayeredGraphPlot LayerSizeFunction LayoutInformation LCM LeafCount LeapYearQ LeastSquares LeastSquaresFilterKernel Left LeftArrow LeftArrowBar LeftArrowRightArrow LeftDownTeeVector LeftDownVector LeftDownVectorBar LeftRightArrow LeftRightVector LeftTee LeftTeeArrow LeftTeeVector LeftTriangle LeftTriangleBar LeftTriangleEqual LeftUpDownVector LeftUpTeeVector LeftUpVector LeftUpVectorBar LeftVector LeftVectorBar LegendAppearance Legended LegendFunction LegendLabel LegendLayout LegendMargins LegendMarkers LegendMarkerSize LegendreP LegendreQ LegendreType Length LengthWhile LerchPhi Less LessEqual LessEqualGreater LessFullEqual LessGreater LessLess LessSlantEqual LessTilde LetterCharacter LetterQ Level LeveneTest LeviCivitaTensor LevyDistribution Lexicographic LibraryFunction LibraryFunctionError LibraryFunctionInformation LibraryFunctionLoad LibraryFunctionUnload LibraryLoad LibraryUnload LicenseID LiftingFilterData LiftingWaveletTransform LightBlue LightBrown LightCyan Lighter LightGray LightGreen Lighting LightingAngle LightMagenta LightOrange LightPink LightPurple LightRed LightSources LightYellow Likelihood Limit LimitsPositioning LimitsPositioningTokens LindleyDistribution Line Line3DBox LinearFilter LinearFractionalTransform LinearModelFit LinearOffsetFunction LinearProgramming LinearRecurrence LinearSolve LinearSolveFunction LineBox LineBreak LinebreakAdjustments LineBreakChart LineBreakWithin LineColor LineForm LineGraph LineIndent LineIndentMaxFraction LineIntegralConvolutionPlot LineIntegralConvolutionScale LineLegend LineOpacity LineSpacing LineWrapParts LinkActivate LinkClose LinkConnect LinkConnectedQ LinkCreate LinkError LinkFlush LinkFunction LinkHost LinkInterrupt LinkLaunch LinkMode LinkObject LinkOpen LinkOptions LinkPatterns LinkProtocol LinkRead LinkReadHeld LinkReadyQ Links LinkWrite LinkWriteHeld LiouvilleLambda List Listable ListAnimate ListContourPlot ListContourPlot3D ListConvolve ListCorrelate ListCurvePathPlot ListDeconvolve ListDensityPlot Listen ListFourierSequenceTransform ListInterpolation ListLineIntegralConvolutionPlot ListLinePlot ListLogLinearPlot ListLogLogPlot ListLogPlot ListPicker ListPickerBox ListPickerBoxBackground ListPickerBoxOptions ListPlay ListPlot ListPlot3D ListPointPlot3D ListPolarPlot ListQ ListStreamDensityPlot ListStreamPlot ListSurfacePlot3D ListVectorDensityPlot ListVectorPlot ListVectorPlot3D ListZTransform Literal LiteralSearch LocalClusteringCoefficient LocalizeVariables LocationEquivalenceTest LocationTest Locator LocatorAutoCreate LocatorBox LocatorBoxOptions LocatorCentering LocatorPane LocatorPaneBox LocatorPaneBoxOptions LocatorRegion Locked Log Log10 Log2 LogBarnesG LogGamma LogGammaDistribution LogicalExpand LogIntegral LogisticDistribution LogitModelFit LogLikelihood LogLinearPlot LogLogisticDistribution LogLogPlot LogMultinormalDistribution LogNormalDistribution LogPlot LogRankTest LogSeriesDistribution LongEqual Longest LongestAscendingSequence LongestCommonSequence LongestCommonSequencePositions LongestCommonSubsequence LongestCommonSubsequencePositions LongestMatch LongForm Longitude LongLeftArrow LongLeftRightArrow LongRightArrow Loopback LoopFreeGraphQ LowerCaseQ LowerLeftArrow LowerRightArrow LowerTriangularize LowpassFilter LQEstimatorGains LQGRegulator LQOutputRegulatorGains LQRegulatorGains LUBackSubstitution LucasL LuccioSamiComponents LUDecomposition LyapunovSolve LyonsGroupLy MachineID MachineName MachineNumberQ MachinePrecision MacintoshSystemPageSetup Magenta Magnification Magnify MainSolve MaintainDynamicCaches Majority MakeBoxes MakeExpression MakeRules MangoldtLambda ManhattanDistance Manipulate Manipulator MannWhitneyTest MantissaExponent Manual Map MapAll MapAt MapIndexed MAProcess MapThread MarcumQ MardiaCombinedTest MardiaKurtosisTest MardiaSkewnessTest MarginalDistribution MarkovProcessProperties Masking MatchingDissimilarity MatchLocalNameQ MatchLocalNames MatchQ Material MathematicaNotation MathieuC MathieuCharacteristicA MathieuCharacteristicB MathieuCharacteristicExponent MathieuCPrime MathieuGroupM11 MathieuGroupM12 MathieuGroupM22 MathieuGroupM23 MathieuGroupM24 MathieuS MathieuSPrime MathMLForm MathMLText Matrices MatrixExp MatrixForm MatrixFunction MatrixLog MatrixPlot MatrixPower MatrixQ MatrixRank Max MaxBend MaxDetect MaxExtraBandwidths MaxExtraConditions MaxFeatures MaxFilter Maximize MaxIterations MaxMemoryUsed MaxMixtureKernels MaxPlotPoints MaxPoints MaxRecursion MaxStableDistribution MaxStepFraction MaxSteps MaxStepSize MaxValue MaxwellDistribution McLaughlinGroupMcL Mean MeanClusteringCoefficient MeanDegreeConnectivity MeanDeviation MeanFilter MeanGraphDistance MeanNeighborDegree MeanShift MeanShiftFilter Median MedianDeviation MedianFilter Medium MeijerG MeixnerDistribution MemberQ MemoryConstrained MemoryInUse Menu MenuAppearance MenuCommandKey MenuEvaluator MenuItem MenuPacket MenuSortingValue MenuStyle MenuView MergeDifferences Mesh MeshFunctions MeshRange MeshShading MeshStyle Message MessageDialog MessageList MessageName MessageOptions MessagePacket Messages MessagesNotebook MetaCharacters MetaInformation Method MethodOptions MexicanHatWavelet MeyerWavelet Min MinDetect MinFilter MinimalPolynomial MinimalStateSpaceModel Minimize Minors MinRecursion MinSize MinStableDistribution Minus MinusPlus MinValue Missing MissingDataMethod MittagLefflerE MixedRadix MixedRadixQuantity MixtureDistribution Mod Modal Mode Modular ModularLambda Module Modulus MoebiusMu Moment Momentary MomentConvert MomentEvaluate MomentGeneratingFunction Monday Monitor MonomialList MonomialOrder MonsterGroupM MorletWavelet MorphologicalBinarize MorphologicalBranchPoints MorphologicalComponents MorphologicalEulerNumber MorphologicalGraph MorphologicalPerimeter MorphologicalTransform Most MouseAnnotation MouseAppearance MouseAppearanceTag MouseButtons Mouseover MousePointerNote MousePosition MovingAverage MovingMedian MoyalDistribution MultiedgeStyle MultilaunchWarning MultiLetterItalics MultiLetterStyle MultilineFunction Multinomial MultinomialDistribution MultinormalDistribution MultiplicativeOrder Multiplicity Multiselection MultivariateHypergeometricDistribution MultivariatePoissonDistribution MultivariateTDistribution N NakagamiDistribution NameQ Names NamespaceBox Nand NArgMax NArgMin NBernoulliB NCache NDSolve NDSolveValue Nearest NearestFunction NeedCurrentFrontEndPackagePacket NeedCurrentFrontEndSymbolsPacket NeedlemanWunschSimilarity Needs Negative NegativeBinomialDistribution NegativeMultinomialDistribution NeighborhoodGraph Nest NestedGreaterGreater NestedLessLess NestedScriptRules NestList NestWhile NestWhileList NevilleThetaC NevilleThetaD NevilleThetaN NevilleThetaS NewPrimitiveStyle NExpectation Next NextPrime NHoldAll NHoldFirst NHoldRest NicholsGridLines NicholsPlot NIntegrate NMaximize NMaxValue NMinimize NMinValue NominalVariables NonAssociative NoncentralBetaDistribution NoncentralChiSquareDistribution NoncentralFRatioDistribution NoncentralStudentTDistribution NonCommutativeMultiply NonConstants None NonlinearModelFit NonlocalMeansFilter NonNegative NonPositive Nor NorlundB Norm Normal NormalDistribution NormalGrouping Normalize NormalizedSquaredEuclideanDistance NormalsFunction NormFunction Not NotCongruent NotCupCap NotDoubleVerticalBar Notebook NotebookApply NotebookAutoSave NotebookClose NotebookConvertSettings NotebookCreate NotebookCreateReturnObject NotebookDefault NotebookDelete NotebookDirectory NotebookDynamicExpression NotebookEvaluate NotebookEventActions NotebookFileName NotebookFind NotebookFindReturnObject NotebookGet NotebookGetLayoutInformationPacket NotebookGetMisspellingsPacket NotebookInformation NotebookInterfaceObject NotebookLocate NotebookObject NotebookOpen NotebookOpenReturnObject NotebookPath NotebookPrint NotebookPut NotebookPutReturnObject NotebookRead NotebookResetGeneratedCells Notebooks NotebookSave NotebookSaveAs NotebookSelection NotebookSetupLayoutInformationPacket NotebooksMenu NotebookWrite NotElement NotEqualTilde NotExists NotGreater NotGreaterEqual NotGreaterFullEqual NotGreaterGreater NotGreaterLess NotGreaterSlantEqual NotGreaterTilde NotHumpDownHump NotHumpEqual NotLeftTriangle NotLeftTriangleBar NotLeftTriangleEqual NotLess NotLessEqual NotLessFullEqual NotLessGreater NotLessLess NotLessSlantEqual NotLessTilde NotNestedGreaterGreater NotNestedLessLess NotPrecedes NotPrecedesEqual NotPrecedesSlantEqual NotPrecedesTilde NotReverseElement NotRightTriangle NotRightTriangleBar NotRightTriangleEqual NotSquareSubset NotSquareSubsetEqual NotSquareSuperset NotSquareSupersetEqual NotSubset NotSubsetEqual NotSucceeds NotSucceedsEqual NotSucceedsSlantEqual NotSucceedsTilde NotSuperset NotSupersetEqual NotTilde NotTildeEqual NotTildeFullEqual NotTildeTilde NotVerticalBar NProbability NProduct NProductFactors NRoots NSolve NSum NSumTerms Null NullRecords NullSpace NullWords Number NumberFieldClassNumber NumberFieldDiscriminant NumberFieldFundamentalUnits NumberFieldIntegralBasis NumberFieldNormRepresentatives NumberFieldRegulator NumberFieldRootsOfUnity NumberFieldSignature NumberForm NumberFormat NumberMarks NumberMultiplier NumberPadding NumberPoint NumberQ NumberSeparator NumberSigns NumberString Numerator NumericFunction NumericQ NuttallWindow NValues NyquistGridLines NyquistPlot O ObservabilityGramian ObservabilityMatrix ObservableDecomposition ObservableModelQ OddQ Off Offset OLEData On ONanGroupON OneIdentity Opacity Open OpenAppend Opener OpenerBox OpenerBoxOptions OpenerView OpenFunctionInspectorPacket Opening OpenRead OpenSpecialOptions OpenTemporary OpenWrite Operate OperatingSystem OptimumFlowData Optional OptionInspectorSettings OptionQ Options OptionsPacket OptionsPattern OptionValue OptionValueBox OptionValueBoxOptions Or Orange Order OrderDistribution OrderedQ Ordering Orderless OrnsteinUhlenbeckProcess Orthogonalize Out Outer OutputAutoOverwrite OutputControllabilityMatrix OutputControllableModelQ OutputForm OutputFormData OutputGrouping OutputMathEditExpression OutputNamePacket OutputResponse OutputSizeLimit OutputStream Over OverBar OverDot Overflow OverHat Overlaps Overlay OverlayBox OverlayBoxOptions Overscript OverscriptBox OverscriptBoxOptions OverTilde OverVector OwenT OwnValues PackingMethod PaddedForm Padding PadeApproximant PadLeft PadRight PageBreakAbove PageBreakBelow PageBreakWithin PageFooterLines PageFooters PageHeaderLines PageHeaders PageHeight PageRankCentrality PageWidth PairedBarChart PairedHistogram PairedSmoothHistogram PairedTTest PairedZTest PaletteNotebook PalettePath Pane PaneBox PaneBoxOptions Panel PanelBox PanelBoxOptions Paneled PaneSelector PaneSelectorBox PaneSelectorBoxOptions PaperWidth ParabolicCylinderD ParagraphIndent ParagraphSpacing ParallelArray ParallelCombine ParallelDo ParallelEvaluate Parallelization Parallelize ParallelMap ParallelNeeds ParallelProduct ParallelSubmit ParallelSum ParallelTable ParallelTry Parameter ParameterEstimator ParameterMixtureDistribution ParameterVariables ParametricFunction ParametricNDSolve ParametricNDSolveValue ParametricPlot ParametricPlot3D ParentConnect ParentDirectory ParentForm Parenthesize ParentList ParetoDistribution Part PartialCorrelationFunction PartialD ParticleData Partition PartitionsP PartitionsQ ParzenWindow PascalDistribution PassEventsDown PassEventsUp Paste PasteBoxFormInlineCells PasteButton Path PathGraph PathGraphQ Pattern PatternSequence PatternTest PauliMatrix PaulWavelet Pause PausedTime PDF PearsonChiSquareTest PearsonCorrelationTest PearsonDistribution PerformanceGoal PeriodicInterpolation Periodogram PeriodogramArray PermutationCycles PermutationCyclesQ PermutationGroup PermutationLength PermutationList PermutationListQ PermutationMax PermutationMin PermutationOrder PermutationPower PermutationProduct PermutationReplace Permutations PermutationSupport Permute PeronaMalikFilter Perpendicular PERTDistribution PetersenGraph PhaseMargins Pi Pick PIDData PIDDerivativeFilter PIDFeedforward PIDTune Piecewise PiecewiseExpand PieChart PieChart3D PillaiTrace PillaiTraceTest Pink Pivoting PixelConstrained PixelValue PixelValuePositions Placed Placeholder PlaceholderReplace Plain PlanarGraphQ Play PlayRange Plot Plot3D Plot3Matrix PlotDivision PlotJoined PlotLabel PlotLayout PlotLegends PlotMarkers PlotPoints PlotRange PlotRangeClipping PlotRangePadding PlotRegion PlotStyle Plus PlusMinus Pochhammer PodStates PodWidth Point Point3DBox PointBox PointFigureChart PointForm PointLegend PointSize PoissonConsulDistribution PoissonDistribution PoissonProcess PoissonWindow PolarAxes PolarAxesOrigin PolarGridLines PolarPlot PolarTicks PoleZeroMarkers PolyaAeppliDistribution PolyGamma Polygon Polygon3DBox Polygon3DBoxOptions PolygonBox PolygonBoxOptions PolygonHoleScale PolygonIntersections PolygonScale PolyhedronData PolyLog PolynomialExtendedGCD PolynomialForm PolynomialGCD PolynomialLCM PolynomialMod PolynomialQ PolynomialQuotient PolynomialQuotientRemainder PolynomialReduce PolynomialRemainder Polynomials PopupMenu PopupMenuBox PopupMenuBoxOptions PopupView PopupWindow Position Positive PositiveDefiniteMatrixQ PossibleZeroQ Postfix PostScript Power PowerDistribution PowerExpand PowerMod PowerModList PowerSpectralDensity PowersRepresentations PowerSymmetricPolynomial Precedence PrecedenceForm Precedes PrecedesEqual PrecedesSlantEqual PrecedesTilde Precision PrecisionGoal PreDecrement PredictionRoot PreemptProtect PreferencesPath Prefix PreIncrement Prepend PrependTo PreserveImageOptions Previous PriceGraphDistribution PrimaryPlaceholder Prime PrimeNu PrimeOmega PrimePi PrimePowerQ PrimeQ Primes PrimeZetaP PrimitiveRoot PrincipalComponents PrincipalValue Print PrintAction PrintForm PrintingCopies PrintingOptions PrintingPageRange PrintingStartingPageNumber PrintingStyleEnvironment PrintPrecision PrintTemporary Prism PrismBox PrismBoxOptions PrivateCellOptions PrivateEvaluationOptions PrivateFontOptions PrivateFrontEndOptions PrivateNotebookOptions PrivatePaths Probability ProbabilityDistribution ProbabilityPlot ProbabilityPr ProbabilityScalePlot ProbitModelFit ProcessEstimator ProcessParameterAssumptions ProcessParameterQ ProcessStateDomain ProcessTimeDomain Product ProductDistribution ProductLog ProgressIndicator ProgressIndicatorBox ProgressIndicatorBoxOptions Projection Prolog PromptForm Properties Property PropertyList PropertyValue Proportion Proportional Protect Protected ProteinData Pruning PseudoInverse Purple Put PutAppend Pyramid PyramidBox PyramidBoxOptions QBinomial QFactorial QGamma QHypergeometricPFQ QPochhammer QPolyGamma QRDecomposition QuadraticIrrationalQ Quantile QuantilePlot Quantity QuantityForm QuantityMagnitude QuantityQ QuantityUnit Quartics QuartileDeviation Quartiles QuartileSkewness QueueingNetworkProcess QueueingProcess QueueProperties Quiet Quit Quotient QuotientRemainder RadialityCentrality RadicalBox RadicalBoxOptions RadioButton RadioButtonBar RadioButtonBox RadioButtonBoxOptions Radon RamanujanTau RamanujanTauL RamanujanTauTheta RamanujanTauZ Random RandomChoice RandomComplex RandomFunction RandomGraph RandomImage RandomInteger RandomPermutation RandomPrime RandomReal RandomSample RandomSeed RandomVariate RandomWalkProcess Range RangeFilter RangeSpecification RankedMax RankedMin Raster Raster3D Raster3DBox Raster3DBoxOptions RasterArray RasterBox RasterBoxOptions Rasterize RasterSize Rational RationalFunctions Rationalize Rationals Ratios Raw RawArray RawBoxes RawData RawMedium RayleighDistribution Re Read ReadList ReadProtected Real RealBlockDiagonalForm RealDigits RealExponent Reals Reap Record RecordLists RecordSeparators Rectangle RectangleBox RectangleBoxOptions RectangleChart RectangleChart3D RecurrenceFilter RecurrenceTable RecurringDigitsForm Red Reduce RefBox ReferenceLineStyle ReferenceMarkers ReferenceMarkerStyle Refine ReflectionMatrix ReflectionTransform Refresh RefreshRate RegionBinarize RegionFunction RegionPlot RegionPlot3D RegularExpression Regularization Reinstall Release ReleaseHold ReliabilityDistribution ReliefImage ReliefPlot Remove RemoveAlphaChannel RemoveAsynchronousTask Removed RemoveInputStreamMethod RemoveOutputStreamMethod RemoveProperty RemoveScheduledTask RenameDirectory RenameFile RenderAll RenderingOptions RenewalProcess RenkoChart Repeated RepeatedNull RepeatedString Replace ReplaceAll ReplaceHeldPart ReplaceImageValue ReplaceList ReplacePart ReplacePixelValue ReplaceRepeated Resampling Rescale RescalingTransform ResetDirectory ResetMenusPacket ResetScheduledTask Residue Resolve Rest Resultant ResumePacket Return ReturnExpressionPacket ReturnInputFormPacket ReturnPacket ReturnTextPacket Reverse ReverseBiorthogonalSplineWavelet ReverseElement ReverseEquilibrium ReverseGraph ReverseUpEquilibrium RevolutionAxis RevolutionPlot3D RGBColor RiccatiSolve RiceDistribution RidgeFilter RiemannR RiemannSiegelTheta RiemannSiegelZ Riffle Right RightArrow RightArrowBar RightArrowLeftArrow RightCosetRepresentative RightDownTeeVector RightDownVector RightDownVectorBar RightTee RightTeeArrow RightTeeVector RightTriangle RightTriangleBar RightTriangleEqual RightUpDownVector RightUpTeeVector RightUpVector RightUpVectorBar RightVector RightVectorBar RiskAchievementImportance RiskReductionImportance RogersTanimotoDissimilarity Root RootApproximant RootIntervals RootLocusPlot RootMeanSquare RootOfUnityQ RootReduce Roots RootSum Rotate RotateLabel RotateLeft RotateRight RotationAction RotationBox RotationBoxOptions RotationMatrix RotationTransform Round RoundImplies RoundingRadius Row RowAlignments RowBackgrounds RowBox RowHeights RowLines RowMinHeight RowReduce RowsEqual RowSpacings RSolve RudvalisGroupRu Rule RuleCondition RuleDelayed RuleForm RulerUnits Run RunScheduledTask RunThrough RuntimeAttributes RuntimeOptions RussellRaoDissimilarity SameQ SameTest SampleDepth SampledSoundFunction SampledSoundList SampleRate SamplingPeriod SARIMAProcess SARMAProcess SatisfiabilityCount SatisfiabilityInstances SatisfiableQ Saturday Save Saveable SaveAutoDelete SaveDefinitions SawtoothWave Scale Scaled ScaleDivisions ScaledMousePosition ScaleOrigin ScalePadding ScaleRanges ScaleRangeStyle ScalingFunctions ScalingMatrix ScalingTransform Scan ScheduledTaskActiveQ ScheduledTaskData ScheduledTaskObject ScheduledTasks SchurDecomposition ScientificForm ScreenRectangle ScreenStyleEnvironment ScriptBaselineShifts ScriptLevel ScriptMinSize ScriptRules ScriptSizeMultipliers Scrollbars ScrollingOptions ScrollPosition Sec Sech SechDistribution SectionGrouping SectorChart SectorChart3D SectorOrigin SectorSpacing SeedRandom Select Selectable SelectComponents SelectedCells SelectedNotebook Selection SelectionAnimate SelectionCell SelectionCellCreateCell SelectionCellDefaultStyle SelectionCellParentStyle SelectionCreateCell SelectionDebuggerTag SelectionDuplicateCell SelectionEvaluate SelectionEvaluateCreateCell SelectionMove SelectionPlaceholder SelectionSetStyle SelectWithContents SelfLoops SelfLoopStyle SemialgebraicComponentInstances SendMail Sequence SequenceAlignment SequenceForm SequenceHold SequenceLimit Series SeriesCoefficient SeriesData SessionTime Set SetAccuracy SetAlphaChannel SetAttributes Setbacks SetBoxFormNamesPacket SetDelayed SetDirectory SetEnvironment SetEvaluationNotebook SetFileDate SetFileLoadingContext SetNotebookStatusLine SetOptions SetOptionsPacket SetPrecision SetProperty SetSelectedNotebook SetSharedFunction SetSharedVariable SetSpeechParametersPacket SetStreamPosition SetSystemOptions Setter SetterBar SetterBox SetterBoxOptions Setting SetValue Shading Shallow ShannonWavelet ShapiroWilkTest Share Sharpen ShearingMatrix ShearingTransform ShenCastanMatrix Short ShortDownArrow Shortest ShortestMatch ShortestPathFunction ShortLeftArrow ShortRightArrow ShortUpArrow Show ShowAutoStyles ShowCellBracket ShowCellLabel ShowCellTags ShowClosedCellArea ShowContents ShowControls ShowCursorTracker ShowGroupOpenCloseIcon ShowGroupOpener ShowInvisibleCharacters ShowPageBreaks ShowPredictiveInterface ShowSelection ShowShortBoxForm ShowSpecialCharacters ShowStringCharacters ShowSyntaxStyles ShrinkingDelay ShrinkWrapBoundingBox SiegelTheta SiegelTukeyTest Sign Signature SignedRankTest SignificanceLevel SignPadding SignTest SimilarityRules SimpleGraph SimpleGraphQ Simplify Sin Sinc SinghMaddalaDistribution SingleEvaluation SingleLetterItalics SingleLetterStyle SingularValueDecomposition SingularValueList SingularValuePlot SingularValues Sinh SinhIntegral SinIntegral SixJSymbol Skeleton SkeletonTransform SkellamDistribution Skewness SkewNormalDistribution Skip SliceDistribution Slider Slider2D Slider2DBox Slider2DBoxOptions SliderBox SliderBoxOptions SlideView Slot SlotSequence Small SmallCircle Smaller SmithDelayCompensator SmithWatermanSimilarity SmoothDensityHistogram SmoothHistogram SmoothHistogram3D SmoothKernelDistribution SocialMediaData Socket SokalSneathDissimilarity Solve SolveAlways SolveDelayed Sort SortBy Sound SoundAndGraphics SoundNote SoundVolume Sow Space SpaceForm Spacer Spacings Span SpanAdjustments SpanCharacterRounding SpanFromAbove SpanFromBoth SpanFromLeft SpanLineThickness SpanMaxSize SpanMinSize SpanningCharacters SpanSymmetric SparseArray SpatialGraphDistribution Speak SpeakTextPacket SpearmanRankTest SpearmanRho Spectrogram SpectrogramArray Specularity SpellingCorrection SpellingDictionaries SpellingDictionariesPath SpellingOptions SpellingSuggestionsPacket Sphere SphereBox SphericalBesselJ SphericalBesselY SphericalHankelH1 SphericalHankelH2 SphericalHarmonicY SphericalPlot3D SphericalRegion SpheroidalEigenvalue SpheroidalJoiningFactor SpheroidalPS SpheroidalPSPrime SpheroidalQS SpheroidalQSPrime SpheroidalRadialFactor SpheroidalS1 SpheroidalS1Prime SpheroidalS2 SpheroidalS2Prime Splice SplicedDistribution SplineClosed SplineDegree SplineKnots SplineWeights Split SplitBy SpokenString Sqrt SqrtBox SqrtBoxOptions Square SquaredEuclideanDistance SquareFreeQ SquareIntersection SquaresR SquareSubset SquareSubsetEqual SquareSuperset SquareSupersetEqual SquareUnion SquareWave StabilityMargins StabilityMarginsStyle StableDistribution Stack StackBegin StackComplete StackInhibit StandardDeviation StandardDeviationFilter StandardForm Standardize StandbyDistribution Star StarGraph StartAsynchronousTask StartingStepSize StartOfLine StartOfString StartScheduledTask StartupSound StateDimensions StateFeedbackGains StateOutputEstimator StateResponse StateSpaceModel StateSpaceRealization StateSpaceTransform StationaryDistribution StationaryWaveletPacketTransform StationaryWaveletTransform StatusArea StatusCentrality StepMonitor StieltjesGamma StirlingS1 StirlingS2 StopAsynchronousTask StopScheduledTask StrataVariables StratonovichProcess StreamColorFunction StreamColorFunctionScaling StreamDensityPlot StreamPlot StreamPoints StreamPosition Streams StreamScale StreamStyle String StringBreak StringByteCount StringCases StringCount StringDrop StringExpression StringForm StringFormat StringFreeQ StringInsert StringJoin StringLength StringMatchQ StringPosition StringQ StringReplace StringReplaceList StringReplacePart StringReverse StringRotateLeft StringRotateRight StringSkeleton StringSplit StringTake StringToStream StringTrim StripBoxes StripOnInput StripWrapperBoxes StrokeForm StructuralImportance StructuredArray StructuredSelection StruveH StruveL Stub StudentTDistribution Style StyleBox StyleBoxAutoDelete StyleBoxOptions StyleData StyleDefinitions StyleForm StyleKeyMapping StyleMenuListing StyleNameDialogSettings StyleNames StylePrint StyleSheetPath Subfactorial Subgraph SubMinus SubPlus SubresultantPolynomialRemainders SubresultantPolynomials Subresultants Subscript SubscriptBox SubscriptBoxOptions Subscripted Subset SubsetEqual Subsets SubStar Subsuperscript SubsuperscriptBox SubsuperscriptBoxOptions Subtract SubtractFrom SubValues Succeeds SucceedsEqual SucceedsSlantEqual SucceedsTilde SuchThat Sum SumConvergence Sunday SuperDagger SuperMinus SuperPlus Superscript SuperscriptBox SuperscriptBoxOptions Superset SupersetEqual SuperStar Surd SurdForm SurfaceColor SurfaceGraphics SurvivalDistribution SurvivalFunction SurvivalModel SurvivalModelFit SuspendPacket SuzukiDistribution SuzukiGroupSuz SwatchLegend Switch Symbol SymbolName SymletWavelet Symmetric SymmetricGroup SymmetricMatrixQ SymmetricPolynomial SymmetricReduction Symmetrize SymmetrizedArray SymmetrizedArrayRules SymmetrizedDependentComponents SymmetrizedIndependentComponents SymmetrizedReplacePart SynchronousInitialization SynchronousUpdating Syntax SyntaxForm SyntaxInformation SyntaxLength SyntaxPacket SyntaxQ SystemDialogInput SystemException SystemHelpPath SystemInformation SystemInformationData SystemOpen SystemOptions SystemsModelDelay SystemsModelDelayApproximate SystemsModelDelete SystemsModelDimensions SystemsModelExtract SystemsModelFeedbackConnect SystemsModelLabels SystemsModelOrder SystemsModelParallelConnect SystemsModelSeriesConnect SystemsModelStateFeedbackConnect SystemStub Tab TabFilling Table TableAlignments TableDepth TableDirections TableForm TableHeadings TableSpacing TableView TableViewBox TabSpacings TabView TabViewBox TabViewBoxOptions TagBox TagBoxNote TagBoxOptions TaggingRules TagSet TagSetDelayed TagStyle TagUnset Take TakeWhile Tally Tan Tanh TargetFunctions TargetUnits TautologyQ TelegraphProcess TemplateBox TemplateBoxOptions TemplateSlotSequence TemporalData Temporary TemporaryVariable TensorContract TensorDimensions TensorExpand TensorProduct TensorQ TensorRank TensorReduce TensorSymmetry TensorTranspose TensorWedge Tetrahedron TetrahedronBox TetrahedronBoxOptions TeXForm TeXSave Text Text3DBox Text3DBoxOptions TextAlignment TextBand TextBoundingBox TextBox TextCell TextClipboardType TextData TextForm TextJustification TextLine TextPacket TextParagraph TextRecognize TextRendering TextStyle Texture TextureCoordinateFunction TextureCoordinateScaling Therefore ThermometerGauge Thick Thickness Thin Thinning ThisLink ThompsonGroupTh Thread ThreeJSymbol Threshold Through Throw Thumbnail Thursday Ticks TicksStyle Tilde TildeEqual TildeFullEqual TildeTilde TimeConstrained TimeConstraint Times TimesBy TimeSeriesForecast TimeSeriesInvertibility TimeUsed TimeValue TimeZone Timing Tiny TitleGrouping TitsGroupT ToBoxes ToCharacterCode ToColor ToContinuousTimeModel ToDate ToDiscreteTimeModel ToeplitzMatrix ToExpression ToFileName Together Toggle ToggleFalse Toggler TogglerBar TogglerBox TogglerBoxOptions ToHeldExpression ToInvertibleTimeSeries TokenWords Tolerance ToLowerCase ToNumberField TooBig Tooltip TooltipBox TooltipBoxOptions TooltipDelay TooltipStyle Top TopHatTransform TopologicalSort ToRadicals ToRules ToString Total TotalHeight TotalVariationFilter TotalWidth TouchscreenAutoZoom TouchscreenControlPlacement ToUpperCase Tr Trace TraceAbove TraceAction TraceBackward TraceDepth TraceDialog TraceForward TraceInternal TraceLevel TraceOff TraceOn TraceOriginal TracePrint TraceScan TrackedSymbols TradingChart TraditionalForm TraditionalFunctionNotation TraditionalNotation TraditionalOrder TransferFunctionCancel TransferFunctionExpand TransferFunctionFactor TransferFunctionModel TransferFunctionPoles TransferFunctionTransform TransferFunctionZeros TransformationFunction TransformationFunctions TransformationMatrix TransformedDistribution TransformedField Translate TranslationTransform TransparentColor Transpose TreeForm TreeGraph TreeGraphQ TreePlot TrendStyle TriangleWave TriangularDistribution Trig TrigExpand TrigFactor TrigFactorList Trigger TrigReduce TrigToExp TrimmedMean True TrueQ TruncatedDistribution TsallisQExponentialDistribution TsallisQGaussianDistribution TTest Tube TubeBezierCurveBox TubeBezierCurveBoxOptions TubeBox TubeBSplineCurveBox TubeBSplineCurveBoxOptions Tuesday TukeyLambdaDistribution TukeyWindow Tuples TuranGraph TuringMachine Transparent UnateQ Uncompress Undefined UnderBar Underflow Underlined Underoverscript UnderoverscriptBox UnderoverscriptBoxOptions Underscript UnderscriptBox UnderscriptBoxOptions UndirectedEdge UndirectedGraph UndirectedGraphQ UndocumentedTestFEParserPacket UndocumentedTestGetSelectionPacket Unequal Unevaluated UniformDistribution UniformGraphDistribution UniformSumDistribution Uninstall Union UnionPlus Unique UnitBox UnitConvert UnitDimensions Unitize UnitRootTest UnitSimplify UnitStep UnitTriangle UnitVector Unprotect UnsameQ UnsavedVariables Unset UnsetShared UntrackedVariables Up UpArrow UpArrowBar UpArrowDownArrow Update UpdateDynamicObjects UpdateDynamicObjectsSynchronous UpdateInterval UpDownArrow UpEquilibrium UpperCaseQ UpperLeftArrow UpperRightArrow UpperTriangularize Upsample UpSet UpSetDelayed UpTee UpTeeArrow UpValues URL URLFetch URLFetchAsynchronous URLSave URLSaveAsynchronous UseGraphicsRange Using UsingFrontEnd V2Get ValidationLength Value ValueBox ValueBoxOptions ValueForm ValueQ ValuesData Variables Variance VarianceEquivalenceTest VarianceEstimatorFunction VarianceGammaDistribution VarianceTest VectorAngle VectorColorFunction VectorColorFunctionScaling VectorDensityPlot VectorGlyphData VectorPlot VectorPlot3D VectorPoints VectorQ Vectors VectorScale VectorStyle Vee Verbatim Verbose VerboseConvertToPostScriptPacket VerifyConvergence VerifySolutions VerifyTestAssumptions Version VersionNumber VertexAdd VertexCapacity VertexColors VertexComponent VertexConnectivity VertexCoordinateRules VertexCoordinates VertexCorrelationSimilarity VertexCosineSimilarity VertexCount VertexCoverQ VertexDataCoordinates VertexDegree VertexDelete VertexDiceSimilarity VertexEccentricity VertexInComponent VertexInDegree VertexIndex VertexJaccardSimilarity VertexLabeling VertexLabels VertexLabelStyle VertexList VertexNormals VertexOutComponent VertexOutDegree VertexQ VertexRenderingFunction VertexReplace VertexShape VertexShapeFunction VertexSize VertexStyle VertexTextureCoordinates VertexWeight Vertical VerticalBar VerticalForm VerticalGauge VerticalSeparator VerticalSlider VerticalTilde ViewAngle ViewCenter ViewMatrix ViewPoint ViewPointSelectorSettings ViewPort ViewRange ViewVector ViewVertical VirtualGroupData Visible VisibleCell VoigtDistribution VonMisesDistribution WaitAll WaitAsynchronousTask WaitNext WaitUntil WakebyDistribution WalleniusHypergeometricDistribution WaringYuleDistribution WatershedComponents WatsonUSquareTest WattsStrogatzGraphDistribution WaveletBestBasis WaveletFilterCoefficients WaveletImagePlot WaveletListPlot WaveletMapIndexed WaveletMatrixPlot WaveletPhi WaveletPsi WaveletScale WaveletScalogram WaveletThreshold WeaklyConnectedComponents WeaklyConnectedGraphQ WeakStationarity WeatherData WeberE Wedge Wednesday WeibullDistribution WeierstrassHalfPeriods WeierstrassInvariants WeierstrassP WeierstrassPPrime WeierstrassSigma WeierstrassZeta WeightedAdjacencyGraph WeightedAdjacencyMatrix WeightedData WeightedGraphQ Weights WelchWindow WheelGraph WhenEvent Which While White Whitespace WhitespaceCharacter WhittakerM WhittakerW WienerFilter WienerProcess WignerD WignerSemicircleDistribution WilksW WilksWTest WindowClickSelect WindowElements WindowFloating WindowFrame WindowFrameElements WindowMargins WindowMovable WindowOpacity WindowSelected WindowSize WindowStatusArea WindowTitle WindowToolbars WindowWidth With WolframAlpha WolframAlphaDate WolframAlphaQuantity WolframAlphaResult Word WordBoundary WordCharacter WordData WordSearch WordSeparators WorkingPrecision Write WriteString Wronskian XMLElement XMLObject Xnor Xor Yellow YuleDissimilarity ZernikeR ZeroSymmetric ZeroTest ZeroWidthTimes Zeta ZetaZero ZipfDistribution ZTest ZTransform $Aborted $ActivationGroupID $ActivationKey $ActivationUserRegistered $AddOnsDirectory $AssertFunction $Assumptions $AsynchronousTask $BaseDirectory $BatchInput $BatchOutput $BoxForms $ByteOrdering $Canceled $CharacterEncoding $CharacterEncodings $CommandLine $CompilationTarget $ConditionHold $ConfiguredKernels $Context $ContextPath $ControlActiveSetting $CreationDate $CurrentLink $DateStringFormat $DefaultFont $DefaultFrontEnd $DefaultImagingDevice $DefaultPath $Display $DisplayFunction $DistributedContexts $DynamicEvaluation $Echo $Epilog $ExportFormats $Failed $FinancialDataSource $FormatType $FrontEnd $FrontEndSession $GeoLocation $HistoryLength $HomeDirectory $HTTPCookies $IgnoreEOF $ImagingDevices $ImportFormats $InitialDirectory $Input $InputFileName $InputStreamMethods $Inspector $InstallationDate $InstallationDirectory $InterfaceEnvironment $IterationLimit $KernelCount $KernelID $Language $LaunchDirectory $LibraryPath $LicenseExpirationDate $LicenseID $LicenseProcesses $LicenseServer $LicenseSubprocesses $LicenseType $Line $Linked $LinkSupported $LoadedFiles $MachineAddresses $MachineDomain $MachineDomains $MachineEpsilon $MachineID $MachineName $MachinePrecision $MachineType $MaxExtraPrecision $MaxLicenseProcesses $MaxLicenseSubprocesses $MaxMachineNumber $MaxNumber $MaxPiecewiseCases $MaxPrecision $MaxRootDegree $MessageGroups $MessageList $MessagePrePrint $Messages $MinMachineNumber $MinNumber $MinorReleaseNumber $MinPrecision $ModuleNumber $NetworkLicense $NewMessage $NewSymbol $Notebooks $NumberMarks $Off $OperatingSystem $Output $OutputForms $OutputSizeLimit $OutputStreamMethods $Packages $ParentLink $ParentProcessID $PasswordFile $PatchLevelID $Path $PathnameSeparator $PerformanceGoal $PipeSupported $Post $Pre $PreferencesDirectory $PrePrint $PreRead $PrintForms $PrintLiteral $ProcessID $ProcessorCount $ProcessorType $ProductInformation $ProgramName $RandomState $RecursionLimit $ReleaseNumber $RootDirectory $ScheduledTask $ScriptCommandLine $SessionID $SetParentLink $SharedFunctions $SharedVariables $SoundDisplay $SoundDisplayFunction $SuppressInputFormHeads $SynchronousEvaluation $SyntaxHandler $System $SystemCharacterEncoding $SystemID $SystemWordLength $TemporaryDirectory $TemporaryPrefix $TextStyle $TimedOut $TimeUnit $TimeZone $TopDirectory $TraceOff $TraceOn $TracePattern $TracePostAction $TracePreAction $Urgent $UserAddOnsDirectory $UserBaseDirectory $UserDocumentsDirectory $UserName $Version $VersionNumber',c:[{cN:'comment',b:/\\(\\*/,e:/\\*\\)/},e.ASM,e.QSM,e.CNM,{b:/\\{/,e:/\\}/,i:/:/}]}}),r.registerLanguage('haskell',function(e){var t={v:[e.C('--','$'),e.C('{-','-}',{c:['self']})]},r={cN:'meta',b:'{-#',e:'#-}'},i={cN:'meta',b:'^#',e:'$'},a={cN:'type',b:'\\\\b[A-Z][\\\\w\\']*',r:0},n={b:'\\\\(',e:'\\\\)',i:'\"',c:[r,i,{cN:'type',b:'\\\\b[A-Z][\\\\w]*(\\\\((\\\\.\\\\.|,|\\\\w+)\\\\))?'},e.inherit(e.TM,{b:'[_a-z][\\\\w\\']*'}),t]};return{aliases:['hs'],k:'let in if then else case of where do module import hiding qualified type data newtype deriving class instance as default infix infixl infixr foreign export ccall stdcall cplusplus jvm dotnet safe unsafe family forall mdo proc rec',c:[{bK:'module',e:'where',k:'module where',c:[n,t],i:'\\\\W\\\\.|;'},{b:'\\\\bimport\\\\b',e:'$',k:'import qualified as hiding',c:[n,t],i:'\\\\W\\\\.|;'},{cN:'class',b:'^(\\\\s*)?(class|instance)\\\\b',e:'where',k:'class family instance where',c:[a,n,t]},{cN:'class',b:'\\\\b(data|(new)?type)\\\\b',e:'$',k:'data family type newtype deriving',c:[r,a,n,{b:'{',e:'}',c:n.c},t]},{bK:'default',e:'$',c:[a,n,t]},{bK:'infix infixl infixr',e:'$',c:[e.CNM,t]},{b:'\\\\bforeign\\\\b',e:'$',k:'foreign import export ccall stdcall cplusplus jvm dotnet safe unsafe',c:[a,e.QSM,t]},{cN:'meta',b:'#!\\\\/usr\\\\/bin\\\\/env runhaskell',e:'$'},r,i,e.QSM,e.CNM,a,e.inherit(e.TM,{b:'^[_a-z][\\\\w\\']*'}),t,{b:'->|<-'}]}}),r.registerLanguage('php',function(e){var t={b:'\\\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*'},r={cN:'meta',b:/<\\?(php)?|\\?>/},i={cN:'string',c:[e.BE,r],v:[{b:'b\"',e:'\"'},{b:'b\\'',e:'\\''},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},a={v:[e.BNM,e.CNM]};return{aliases:['php','php3','php4','php5','php6','php7'],cI:!0,k:'and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally',c:[e.HCM,e.C('//','$',{c:[r]}),e.C('/\\\\*','\\\\*/',{c:[{cN:'doctag',b:'@[A-Za-z]+'}]}),e.C('__halt_compiler.+?;',!1,{eW:!0,k:'__halt_compiler',l:e.UIR}),{cN:'string',b:/<<<['\"]?\\w+['\"]?$/,e:/^\\w+;?$/,c:[e.BE,{cN:'subst',v:[{b:/\\$\\w+/},{b:/\\{\\$/,e:/\\}/}]}]},r,{cN:'keyword',b:/\\$this\\b/},t,{b:/(::|->)+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*/},{cN:'function',bK:'function',e:/[;{]/,eE:!0,i:'\\\\$|\\\\[|%',c:[e.UTM,{cN:'params',b:'\\\\(',e:'\\\\)',c:['self',t,e.CBCM,i,a]}]},{cN:'class',bK:'class interface',e:'{',eE:!0,i:/[:\\(\\$\"]/,c:[{bK:'extends implements'},e.UTM]},{bK:'namespace',e:';',i:/[\\.']/,c:[e.UTM]},{bK:'use',e:';',c:[e.UTM]},{b:'=>'},i,a]}}),r.registerLanguage('autohotkey',function(e){var t={b:'`[\\\\s\\\\S]'};return{cI:!0,aliases:['ahk'],k:{keyword:'Break Continue Critical Exit ExitApp Gosub Goto New OnExit Pause return SetBatchLines SetTimer Suspend Thread Throw Until ahk_id ahk_class ahk_pid ahk_exe ahk_group',literal:'A|0 true false NOT AND OR',built_in:'ComSpec Clipboard ClipboardAll ErrorLevel'},c:[{cN:'built_in',b:'A_[a-zA-Z0-9]+'},t,e.inherit(e.QSM,{c:[t]}),e.C(';','$',{r:0}),e.CBCM,{cN:'number',b:e.NR,r:0},{cN:'subst',b:'%(?=[a-zA-Z0-9#_$@])',e:'%',i:'[^a-zA-Z0-9#_$@]'},{cN:'built_in',b:'^\\\\s*\\\\w+\\\\s*,'},{cN:'meta',b:'^\\\\s*#w+',e:'$',r:0},{cN:'symbol',c:[t],v:[{b:'^[^\\\\n\";]+::(?!=)'},{b:'^[^\\\\n\";]+:(?!=)',r:0}]},{b:',\\\\s*,'}]}}),r.registerLanguage('x86asm',function(e){return{cI:!0,l:'[.%]?'+e.IR,k:{keyword:'lock rep repe repz repne repnz xaquire xrelease bnd nobnd aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg cmpxchg486 cmpxchg8b cmpxchg16b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip fucomp fucompp fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc incbin insb insd insw int int01 int1 int03 int3 into invd invpcid invlpg invlpga iret iretd iretq iretw jcxz jecxz jrcxz jmp jmpe lahf lar lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne loopnz loopz lsl lss ltr mfence monitor mov movd movq movsb movsd movsq movsw movsx movsxd movzx mul mwait neg nop not or out outsb outsd outsw packssdw packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdshr rdmsr rdpmc rdtsc rdtscp ret retf retn rol ror rdm rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd scasq scasw sfence sgdt shl shld shr shrd sidt sldt skinit smi smint smintold smsw stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter sysexit sysret test ud0 ud1 ud2b ud2 ud2a umov verr verw fwait wbinvd wrshr wrmsr xadd xbts xchg xlatb xlat xor cmove cmovz cmovne cmovnz cmova cmovnbe cmovae cmovnb cmovb cmovnae cmovbe cmovna cmovg cmovnle cmovge cmovnl cmovl cmovnge cmovle cmovng cmovc cmovnc cmovo cmovno cmovs cmovns cmovp cmovpe cmovnp cmovpo je jz jne jnz ja jnbe jae jnb jb jnae jbe jna jg jnle jge jnl jl jnge jle jng jc jnc jo jno js jns jpo jnp jpe jp sete setz setne setnz seta setnbe setae setnb setnc setb setnae setcset setbe setna setg setnle setge setnl setl setnge setle setng sets setns seto setno setpe setp setpo setnp addps addss andnps andps cmpeqps cmpeqss cmpleps cmpless cmpltps cmpltss cmpneqps cmpneqss cmpnleps cmpnless cmpnltps cmpnltss cmpordps cmpordss cmpunordps cmpunordss cmpps cmpss comiss cvtpi2ps cvtps2pi cvtsi2ss cvtss2si cvttps2pi cvttss2si divps divss ldmxcsr maxps maxss minps minss movaps movhps movlhps movlps movhlps movmskps movntps movss movups mulps mulss orps rcpps rcpss rsqrtps rsqrtss shufps sqrtps sqrtss stmxcsr subps subss ucomiss unpckhps unpcklps xorps fxrstor fxrstor64 fxsave fxsave64 xgetbv xsetbv xsave xsave64 xsaveopt xsaveopt64 xrstor xrstor64 prefetchnta prefetcht0 prefetcht1 prefetcht2 maskmovq movntq pavgb pavgw pextrw pinsrw pmaxsw pmaxub pminsw pminub pmovmskb pmulhuw psadbw pshufw pf2iw pfnacc pfpnacc pi2fw pswapd maskmovdqu clflush movntdq movnti movntpd movdqa movdqu movdq2q movq2dq paddq pmuludq pshufd pshufhw pshuflw pslldq psrldq psubq punpckhqdq punpcklqdq addpd addsd andnpd andpd cmpeqpd cmpeqsd cmplepd cmplesd cmpltpd cmpltsd cmpneqpd cmpneqsd cmpnlepd cmpnlesd cmpnltpd cmpnltsd cmpordpd cmpordsd cmpunordpd cmpunordsd cmppd comisd cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps cvtpi2pd cvtps2dq cvtps2pd cvtsd2si cvtsd2ss cvtsi2sd cvtss2sd cvttpd2pi cvttpd2dq cvttps2dq cvttsd2si divpd divsd maxpd maxsd minpd minsd movapd movhpd movlpd movmskpd movupd mulpd mulsd orpd shufpd sqrtpd sqrtsd subpd subsd ucomisd unpckhpd unpcklpd xorpd addsubpd addsubps haddpd haddps hsubpd hsubps lddqu movddup movshdup movsldup clgi stgi vmcall vmclear vmfunc vmlaunch vmload vmmcall vmptrld vmptrst vmread vmresume vmrun vmsave vmwrite vmxoff vmxon invept invvpid pabsb pabsw pabsd palignr phaddw phaddd phaddsw phsubw phsubd phsubsw pmaddubsw pmulhrsw pshufb psignb psignw psignd extrq insertq movntsd movntss lzcnt blendpd blendps blendvpd blendvps dppd dpps extractps insertps movntdqa mpsadbw packusdw pblendvb pblendw pcmpeqq pextrb pextrd pextrq phminposuw pinsrb pinsrd pinsrq pmaxsb pmaxsd pmaxud pmaxuw pminsb pminsd pminud pminuw pmovsxbw pmovsxbd pmovsxbq pmovsxwd pmovsxwq pmovsxdq pmovzxbw pmovzxbd pmovzxbq pmovzxwd pmovzxwq pmovzxdq pmuldq pmulld ptest roundpd roundps roundsd roundss crc32 pcmpestri pcmpestrm pcmpistri pcmpistrm pcmpgtq popcnt getsec pfrcpv pfrsqrtv movbe aesenc aesenclast aesdec aesdeclast aesimc aeskeygenassist vaesenc vaesenclast vaesdec vaesdeclast vaesimc vaeskeygenassist vaddpd vaddps vaddsd vaddss vaddsubpd vaddsubps vandpd vandps vandnpd vandnps vblendpd vblendps vblendvpd vblendvps vbroadcastss vbroadcastsd vbroadcastf128 vcmpeq_ospd vcmpeqpd vcmplt_ospd vcmpltpd vcmple_ospd vcmplepd vcmpunord_qpd vcmpunordpd vcmpneq_uqpd vcmpneqpd vcmpnlt_uspd vcmpnltpd vcmpnle_uspd vcmpnlepd vcmpord_qpd vcmpordpd vcmpeq_uqpd vcmpnge_uspd vcmpngepd vcmpngt_uspd vcmpngtpd vcmpfalse_oqpd vcmpfalsepd vcmpneq_oqpd vcmpge_ospd vcmpgepd vcmpgt_ospd vcmpgtpd vcmptrue_uqpd vcmptruepd vcmplt_oqpd vcmple_oqpd vcmpunord_spd vcmpneq_uspd vcmpnlt_uqpd vcmpnle_uqpd vcmpord_spd vcmpeq_uspd vcmpnge_uqpd vcmpngt_uqpd vcmpfalse_ospd vcmpneq_ospd vcmpge_oqpd vcmpgt_oqpd vcmptrue_uspd vcmppd vcmpeq_osps vcmpeqps vcmplt_osps vcmpltps vcmple_osps vcmpleps vcmpunord_qps vcmpunordps vcmpneq_uqps vcmpneqps vcmpnlt_usps vcmpnltps vcmpnle_usps vcmpnleps vcmpord_qps vcmpordps vcmpeq_uqps vcmpnge_usps vcmpngeps vcmpngt_usps vcmpngtps vcmpfalse_oqps vcmpfalseps vcmpneq_oqps vcmpge_osps vcmpgeps vcmpgt_osps vcmpgtps vcmptrue_uqps vcmptrueps vcmplt_oqps vcmple_oqps vcmpunord_sps vcmpneq_usps vcmpnlt_uqps vcmpnle_uqps vcmpord_sps vcmpeq_usps vcmpnge_uqps vcmpngt_uqps vcmpfalse_osps vcmpneq_osps vcmpge_oqps vcmpgt_oqps vcmptrue_usps vcmpps vcmpeq_ossd vcmpeqsd vcmplt_ossd vcmpltsd vcmple_ossd vcmplesd vcmpunord_qsd vcmpunordsd vcmpneq_uqsd vcmpneqsd vcmpnlt_ussd vcmpnltsd vcmpnle_ussd vcmpnlesd vcmpord_qsd vcmpordsd vcmpeq_uqsd vcmpnge_ussd vcmpngesd vcmpngt_ussd vcmpngtsd vcmpfalse_oqsd vcmpfalsesd vcmpneq_oqsd vcmpge_ossd vcmpgesd vcmpgt_ossd vcmpgtsd vcmptrue_uqsd vcmptruesd vcmplt_oqsd vcmple_oqsd vcmpunord_ssd vcmpneq_ussd vcmpnlt_uqsd vcmpnle_uqsd vcmpord_ssd vcmpeq_ussd vcmpnge_uqsd vcmpngt_uqsd vcmpfalse_ossd vcmpneq_ossd vcmpge_oqsd vcmpgt_oqsd vcmptrue_ussd vcmpsd vcmpeq_osss vcmpeqss vcmplt_osss vcmpltss vcmple_osss vcmpless vcmpunord_qss vcmpunordss vcmpneq_uqss vcmpneqss vcmpnlt_usss vcmpnltss vcmpnle_usss vcmpnless vcmpord_qss vcmpordss vcmpeq_uqss vcmpnge_usss vcmpngess vcmpngt_usss vcmpngtss vcmpfalse_oqss vcmpfalsess vcmpneq_oqss vcmpge_osss vcmpgess vcmpgt_osss vcmpgtss vcmptrue_uqss vcmptruess vcmplt_oqss vcmple_oqss vcmpunord_sss vcmpneq_usss vcmpnlt_uqss vcmpnle_uqss vcmpord_sss vcmpeq_usss vcmpnge_uqss vcmpngt_uqss vcmpfalse_osss vcmpneq_osss vcmpge_oqss vcmpgt_oqss vcmptrue_usss vcmpss vcomisd vcomiss vcvtdq2pd vcvtdq2ps vcvtpd2dq vcvtpd2ps vcvtps2dq vcvtps2pd vcvtsd2si vcvtsd2ss vcvtsi2sd vcvtsi2ss vcvtss2sd vcvtss2si vcvttpd2dq vcvttps2dq vcvttsd2si vcvttss2si vdivpd vdivps vdivsd vdivss vdppd vdpps vextractf128 vextractps vhaddpd vhaddps vhsubpd vhsubps vinsertf128 vinsertps vlddqu vldqqu vldmxcsr vmaskmovdqu vmaskmovps vmaskmovpd vmaxpd vmaxps vmaxsd vmaxss vminpd vminps vminsd vminss vmovapd vmovaps vmovd vmovq vmovddup vmovdqa vmovqqa vmovdqu vmovqqu vmovhlps vmovhpd vmovhps vmovlhps vmovlpd vmovlps vmovmskpd vmovmskps vmovntdq vmovntqq vmovntdqa vmovntpd vmovntps vmovsd vmovshdup vmovsldup vmovss vmovupd vmovups vmpsadbw vmulpd vmulps vmulsd vmulss vorpd vorps vpabsb vpabsw vpabsd vpacksswb vpackssdw vpackuswb vpackusdw vpaddb vpaddw vpaddd vpaddq vpaddsb vpaddsw vpaddusb vpaddusw vpalignr vpand vpandn vpavgb vpavgw vpblendvb vpblendw vpcmpestri vpcmpestrm vpcmpistri vpcmpistrm vpcmpeqb vpcmpeqw vpcmpeqd vpcmpeqq vpcmpgtb vpcmpgtw vpcmpgtd vpcmpgtq vpermilpd vpermilps vperm2f128 vpextrb vpextrw vpextrd vpextrq vphaddw vphaddd vphaddsw vphminposuw vphsubw vphsubd vphsubsw vpinsrb vpinsrw vpinsrd vpinsrq vpmaddwd vpmaddubsw vpmaxsb vpmaxsw vpmaxsd vpmaxub vpmaxuw vpmaxud vpminsb vpminsw vpminsd vpminub vpminuw vpminud vpmovmskb vpmovsxbw vpmovsxbd vpmovsxbq vpmovsxwd vpmovsxwq vpmovsxdq vpmovzxbw vpmovzxbd vpmovzxbq vpmovzxwd vpmovzxwq vpmovzxdq vpmulhuw vpmulhrsw vpmulhw vpmullw vpmulld vpmuludq vpmuldq vpor vpsadbw vpshufb vpshufd vpshufhw vpshuflw vpsignb vpsignw vpsignd vpslldq vpsrldq vpsllw vpslld vpsllq vpsraw vpsrad vpsrlw vpsrld vpsrlq vptest vpsubb vpsubw vpsubd vpsubq vpsubsb vpsubsw vpsubusb vpsubusw vpunpckhbw vpunpckhwd vpunpckhdq vpunpckhqdq vpunpcklbw vpunpcklwd vpunpckldq vpunpcklqdq vpxor vrcpps vrcpss vrsqrtps vrsqrtss vroundpd vroundps vroundsd vroundss vshufpd vshufps vsqrtpd vsqrtps vsqrtsd vsqrtss vstmxcsr vsubpd vsubps vsubsd vsubss vtestps vtestpd vucomisd vucomiss vunpckhpd vunpckhps vunpcklpd vunpcklps vxorpd vxorps vzeroall vzeroupper pclmullqlqdq pclmulhqlqdq pclmullqhqdq pclmulhqhqdq pclmulqdq vpclmullqlqdq vpclmulhqlqdq vpclmullqhqdq vpclmulhqhqdq vpclmulqdq vfmadd132ps vfmadd132pd vfmadd312ps vfmadd312pd vfmadd213ps vfmadd213pd vfmadd123ps vfmadd123pd vfmadd231ps vfmadd231pd vfmadd321ps vfmadd321pd vfmaddsub132ps vfmaddsub132pd vfmaddsub312ps vfmaddsub312pd vfmaddsub213ps vfmaddsub213pd vfmaddsub123ps vfmaddsub123pd vfmaddsub231ps vfmaddsub231pd vfmaddsub321ps vfmaddsub321pd vfmsub132ps vfmsub132pd vfmsub312ps vfmsub312pd vfmsub213ps vfmsub213pd vfmsub123ps vfmsub123pd vfmsub231ps vfmsub231pd vfmsub321ps vfmsub321pd vfmsubadd132ps vfmsubadd132pd vfmsubadd312ps vfmsubadd312pd vfmsubadd213ps vfmsubadd213pd vfmsubadd123ps vfmsubadd123pd vfmsubadd231ps vfmsubadd231pd vfmsubadd321ps vfmsubadd321pd vfnmadd132ps vfnmadd132pd vfnmadd312ps vfnmadd312pd vfnmadd213ps vfnmadd213pd vfnmadd123ps vfnmadd123pd vfnmadd231ps vfnmadd231pd vfnmadd321ps vfnmadd321pd vfnmsub132ps vfnmsub132pd vfnmsub312ps vfnmsub312pd vfnmsub213ps vfnmsub213pd vfnmsub123ps vfnmsub123pd vfnmsub231ps vfnmsub231pd vfnmsub321ps vfnmsub321pd vfmadd132ss vfmadd132sd vfmadd312ss vfmadd312sd vfmadd213ss vfmadd213sd vfmadd123ss vfmadd123sd vfmadd231ss vfmadd231sd vfmadd321ss vfmadd321sd vfmsub132ss vfmsub132sd vfmsub312ss vfmsub312sd vfmsub213ss vfmsub213sd vfmsub123ss vfmsub123sd vfmsub231ss vfmsub231sd vfmsub321ss vfmsub321sd vfnmadd132ss vfnmadd132sd vfnmadd312ss vfnmadd312sd vfnmadd213ss vfnmadd213sd vfnmadd123ss vfnmadd123sd vfnmadd231ss vfnmadd231sd vfnmadd321ss vfnmadd321sd vfnmsub132ss vfnmsub132sd vfnmsub312ss vfnmsub312sd vfnmsub213ss vfnmsub213sd vfnmsub123ss vfnmsub123sd vfnmsub231ss vfnmsub231sd vfnmsub321ss vfnmsub321sd rdfsbase rdgsbase rdrand wrfsbase wrgsbase vcvtph2ps vcvtps2ph adcx adox rdseed clac stac xstore xcryptecb xcryptcbc xcryptctr xcryptcfb xcryptofb montmul xsha1 xsha256 llwpcb slwpcb lwpval lwpins vfmaddpd vfmaddps vfmaddsd vfmaddss vfmaddsubpd vfmaddsubps vfmsubaddpd vfmsubaddps vfmsubpd vfmsubps vfmsubsd vfmsubss vfnmaddpd vfnmaddps vfnmaddsd vfnmaddss vfnmsubpd vfnmsubps vfnmsubsd vfnmsubss vfrczpd vfrczps vfrczsd vfrczss vpcmov vpcomb vpcomd vpcomq vpcomub vpcomud vpcomuq vpcomuw vpcomw vphaddbd vphaddbq vphaddbw vphadddq vphaddubd vphaddubq vphaddubw vphaddudq vphadduwd vphadduwq vphaddwd vphaddwq vphsubbw vphsubdq vphsubwd vpmacsdd vpmacsdqh vpmacsdql vpmacssdd vpmacssdqh vpmacssdql vpmacsswd vpmacssww vpmacswd vpmacsww vpmadcsswd vpmadcswd vpperm vprotb vprotd vprotq vprotw vpshab vpshad vpshaq vpshaw vpshlb vpshld vpshlq vpshlw vbroadcasti128 vpblendd vpbroadcastb vpbroadcastw vpbroadcastd vpbroadcastq vpermd vpermpd vpermps vpermq vperm2i128 vextracti128 vinserti128 vpmaskmovd vpmaskmovq vpsllvd vpsllvq vpsravd vpsrlvd vpsrlvq vgatherdpd vgatherqpd vgatherdps vgatherqps vpgatherdd vpgatherqd vpgatherdq vpgatherqq xabort xbegin xend xtest andn bextr blci blcic blsi blsic blcfill blsfill blcmsk blsmsk blsr blcs bzhi mulx pdep pext rorx sarx shlx shrx tzcnt tzmsk t1mskc valignd valignq vblendmpd vblendmps vbroadcastf32x4 vbroadcastf64x4 vbroadcasti32x4 vbroadcasti64x4 vcompresspd vcompressps vcvtpd2udq vcvtps2udq vcvtsd2usi vcvtss2usi vcvttpd2udq vcvttps2udq vcvttsd2usi vcvttss2usi vcvtudq2pd vcvtudq2ps vcvtusi2sd vcvtusi2ss vexpandpd vexpandps vextractf32x4 vextractf64x4 vextracti32x4 vextracti64x4 vfixupimmpd vfixupimmps vfixupimmsd vfixupimmss vgetexppd vgetexpps vgetexpsd vgetexpss vgetmantpd vgetmantps vgetmantsd vgetmantss vinsertf32x4 vinsertf64x4 vinserti32x4 vinserti64x4 vmovdqa32 vmovdqa64 vmovdqu32 vmovdqu64 vpabsq vpandd vpandnd vpandnq vpandq vpblendmd vpblendmq vpcmpltd vpcmpled vpcmpneqd vpcmpnltd vpcmpnled vpcmpd vpcmpltq vpcmpleq vpcmpneqq vpcmpnltq vpcmpnleq vpcmpq vpcmpequd vpcmpltud vpcmpleud vpcmpnequd vpcmpnltud vpcmpnleud vpcmpud vpcmpequq vpcmpltuq vpcmpleuq vpcmpnequq vpcmpnltuq vpcmpnleuq vpcmpuq vpcompressd vpcompressq vpermi2d vpermi2pd vpermi2ps vpermi2q vpermt2d vpermt2pd vpermt2ps vpermt2q vpexpandd vpexpandq vpmaxsq vpmaxuq vpminsq vpminuq vpmovdb vpmovdw vpmovqb vpmovqd vpmovqw vpmovsdb vpmovsdw vpmovsqb vpmovsqd vpmovsqw vpmovusdb vpmovusdw vpmovusqb vpmovusqd vpmovusqw vpord vporq vprold vprolq vprolvd vprolvq vprord vprorq vprorvd vprorvq vpscatterdd vpscatterdq vpscatterqd vpscatterqq vpsraq vpsravq vpternlogd vpternlogq vptestmd vptestmq vptestnmd vptestnmq vpxord vpxorq vrcp14pd vrcp14ps vrcp14sd vrcp14ss vrndscalepd vrndscaleps vrndscalesd vrndscaless vrsqrt14pd vrsqrt14ps vrsqrt14sd vrsqrt14ss vscalefpd vscalefps vscalefsd vscalefss vscatterdpd vscatterdps vscatterqpd vscatterqps vshuff32x4 vshuff64x2 vshufi32x4 vshufi64x2 kandnw kandw kmovw knotw kortestw korw kshiftlw kshiftrw kunpckbw kxnorw kxorw vpbroadcastmb2q vpbroadcastmw2d vpconflictd vpconflictq vplzcntd vplzcntq vexp2pd vexp2ps vrcp28pd vrcp28ps vrcp28sd vrcp28ss vrsqrt28pd vrsqrt28ps vrsqrt28sd vrsqrt28ss vgatherpf0dpd vgatherpf0dps vgatherpf0qpd vgatherpf0qps vgatherpf1dpd vgatherpf1dps vgatherpf1qpd vgatherpf1qps vscatterpf0dpd vscatterpf0dps vscatterpf0qpd vscatterpf0qps vscatterpf1dpd vscatterpf1dps vscatterpf1qpd vscatterpf1qps prefetchwt1 bndmk bndcl bndcu bndcn bndmov bndldx bndstx sha1rnds4 sha1nexte sha1msg1 sha1msg2 sha256rnds2 sha256msg1 sha256msg2 hint_nop0 hint_nop1 hint_nop2 hint_nop3 hint_nop4 hint_nop5 hint_nop6 hint_nop7 hint_nop8 hint_nop9 hint_nop10 hint_nop11 hint_nop12 hint_nop13 hint_nop14 hint_nop15 hint_nop16 hint_nop17 hint_nop18 hint_nop19 hint_nop20 hint_nop21 hint_nop22 hint_nop23 hint_nop24 hint_nop25 hint_nop26 hint_nop27 hint_nop28 hint_nop29 hint_nop30 hint_nop31 hint_nop32 hint_nop33 hint_nop34 hint_nop35 hint_nop36 hint_nop37 hint_nop38 hint_nop39 hint_nop40 hint_nop41 hint_nop42 hint_nop43 hint_nop44 hint_nop45 hint_nop46 hint_nop47 hint_nop48 hint_nop49 hint_nop50 hint_nop51 hint_nop52 hint_nop53 hint_nop54 hint_nop55 hint_nop56 hint_nop57 hint_nop58 hint_nop59 hint_nop60 hint_nop61 hint_nop62 hint_nop63',built_in:'ip eip rip al ah bl bh cl ch dl dh sil dil bpl spl r8b r9b r10b r11b r12b r13b r14b r15b ax bx cx dx si di bp sp r8w r9w r10w r11w r12w r13w r14w r15w eax ebx ecx edx esi edi ebp esp eip r8d r9d r10d r11d r12d r13d r14d r15d rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15 cs ds es fs gs ss st st0 st1 st2 st3 st4 st5 st6 st7 mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 xmm8 xmm9 xmm10 xmm11 xmm12 xmm13 xmm14 xmm15 xmm16 xmm17 xmm18 xmm19 xmm20 xmm21 xmm22 xmm23 xmm24 xmm25 xmm26 xmm27 xmm28 xmm29 xmm30 xmm31 ymm0 ymm1 ymm2 ymm3 ymm4 ymm5 ymm6 ymm7 ymm8 ymm9 ymm10 ymm11 ymm12 ymm13 ymm14 ymm15 ymm16 ymm17 ymm18 ymm19 ymm20 ymm21 ymm22 ymm23 ymm24 ymm25 ymm26 ymm27 ymm28 ymm29 ymm30 ymm31 zmm0 zmm1 zmm2 zmm3 zmm4 zmm5 zmm6 zmm7 zmm8 zmm9 zmm10 zmm11 zmm12 zmm13 zmm14 zmm15 zmm16 zmm17 zmm18 zmm19 zmm20 zmm21 zmm22 zmm23 zmm24 zmm25 zmm26 zmm27 zmm28 zmm29 zmm30 zmm31 k0 k1 k2 k3 k4 k5 k6 k7 bnd0 bnd1 bnd2 bnd3 cr0 cr1 cr2 cr3 cr4 cr8 dr0 dr1 dr2 dr3 dr8 tr3 tr4 tr5 tr6 tr7 r0 r1 r2 r3 r4 r5 r6 r7 r0b r1b r2b r3b r4b r5b r6b r7b r0w r1w r2w r3w r4w r5w r6w r7w r0d r1d r2d r3d r4d r5d r6d r7d r0h r1h r2h r3h r0l r1l r2l r3l r4l r5l r6l r7l r8l r9l r10l r11l r12l r13l r14l r15l db dw dd dq dt ddq do dy dz resb resw resd resq rest resdq reso resy resz incbin equ times byte word dword qword nosplit rel abs seg wrt strict near far a32 ptr',meta:'%define %xdefine %+ %undef %defstr %deftok %assign %strcat %strlen %substr %rotate %elif %else %endif %if %ifmacro %ifctx %ifidn %ifidni %ifid %ifnum %ifstr %iftoken %ifempty %ifenv %error %warning %fatal %rep %endrep %include %push %pop %repl %pathsearch %depend %use %arg %stacksize %local %line %comment %endcomment .nolist __FILE__ __LINE__ __SECT__ __BITS__ __OUTPUT_FORMAT__ __DATE__ __TIME__ __DATE_NUM__ __TIME_NUM__ __UTC_DATE__ __UTC_TIME__ __UTC_DATE_NUM__ __UTC_TIME_NUM__ __PASS__ struc endstruc istruc at iend align alignb sectalign daz nodaz up down zero default option assume public bits use16 use32 use64 default section segment absolute extern global common cpu float __utf16__ __utf16le__ __utf16be__ __utf32__ __utf32le__ __utf32be__ __float8__ __float16__ __float32__ __float64__ __float80m__ __float80e__ __float128l__ __float128h__ __Infinity__ __QNaN__ __SNaN__ Inf NaN QNaN SNaN float8 float16 float32 float64 float80m float80e float128l float128h __FLOAT_DAZ__ __FLOAT_ROUND__ __FLOAT__'},c:[e.C(';','$',{r:0}),{cN:'number',v:[{b:'\\\\b(?:([0-9][0-9_]*)?\\\\.[0-9_]*(?:[eE][+-]?[0-9_]+)?|(0[Xx])?[0-9][0-9_]*\\\\.?[0-9_]*(?:[pP](?:[+-]?[0-9_]+)?)?)\\\\b',r:0},{b:'\\\\$[0-9][0-9A-Fa-f]*',r:0},{b:'\\\\b(?:[0-9A-Fa-f][0-9A-Fa-f_]*[Hh]|[0-9][0-9_]*[DdTt]?|[0-7][0-7_]*[QqOo]|[0-1][0-1_]*[BbYy])\\\\b'},{b:'\\\\b(?:0[Xx][0-9A-Fa-f_]+|0[DdTt][0-9_]+|0[QqOo][0-7_]+|0[BbYy][0-1_]+)\\\\b'}]},e.QSM,{cN:'string',v:[{b:'\\'',e:'[^\\\\\\\\]\\''},{b:'`',e:'[^\\\\\\\\]`'}],r:0},{cN:'symbol',v:[{b:'^\\\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\\\s+label)'},{b:'^\\\\s*%%[A-Za-z0-9_$#@~.?]*:'}],r:0},{cN:'subst',b:'%[0-9]+',r:0},{cN:'subst',b:'%!S+',r:0},{cN:'meta',b:/^\\s*\\.[\\w_-]+/}]}}),r.registerLanguage('powershell',function(e){var t={b:'`[\\\\s\\\\S]',r:0},r={cN:'variable',v:[{b:/\\$[\\w\\d][\\w\\d_:]*/}]},i={cN:'string',v:[{b:/\"/,e:/\"/},{b:/@\"/,e:/^\"@/}],c:[t,r,{cN:'variable',b:/\\$[A-z]/,e:/[^A-z]/}]},a=e.inherit(e.C(null,null),{v:[{b:/#/,e:/$/},{b:/<#/,e:/#>/}],c:[{cN:'doctag',v:[{b:/\\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/},{b:/\\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\\s+\\S+/}]}]});return{aliases:['ps'],l:/-?[A-z\\.\\-]+/,cI:!0,k:{keyword:'if else foreach return function do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catch',built_in:'Add-Computer Add-Content Add-History Add-JobTrigger Add-Member Add-PSSnapin Add-Type Checkpoint-Computer Clear-Content Clear-EventLog Clear-History Clear-Host Clear-Item Clear-ItemProperty Clear-Variable Compare-Object Complete-Transaction Connect-PSSession Connect-WSMan Convert-Path ConvertFrom-Csv ConvertFrom-Json ConvertFrom-SecureString ConvertFrom-StringData ConvertTo-Csv ConvertTo-Html ConvertTo-Json ConvertTo-SecureString ConvertTo-Xml Copy-Item Copy-ItemProperty Debug-Process Disable-ComputerRestore Disable-JobTrigger Disable-PSBreakpoint Disable-PSRemoting Disable-PSSessionConfiguration Disable-WSManCredSSP Disconnect-PSSession Disconnect-WSMan Disable-ScheduledJob Enable-ComputerRestore Enable-JobTrigger Enable-PSBreakpoint Enable-PSRemoting Enable-PSSessionConfiguration Enable-ScheduledJob Enable-WSManCredSSP Enter-PSSession Exit-PSSession Export-Alias Export-Clixml Export-Console Export-Counter Export-Csv Export-FormatData Export-ModuleMember Export-PSSession ForEach-Object Format-Custom Format-List Format-Table Format-Wide Get-Acl Get-Alias Get-AuthenticodeSignature Get-ChildItem Get-Command Get-ComputerRestorePoint Get-Content Get-ControlPanelItem Get-Counter Get-Credential Get-Culture Get-Date Get-Event Get-EventLog Get-EventSubscriber Get-ExecutionPolicy Get-FormatData Get-Host Get-HotFix Get-Help Get-History Get-IseSnippet Get-Item Get-ItemProperty Get-Job Get-JobTrigger Get-Location Get-Member Get-Module Get-PfxCertificate Get-Process Get-PSBreakpoint Get-PSCallStack Get-PSDrive Get-PSProvider Get-PSSession Get-PSSessionConfiguration Get-PSSnapin Get-Random Get-ScheduledJob Get-ScheduledJobOption Get-Service Get-TraceSource Get-Transaction Get-TypeData Get-UICulture Get-Unique Get-Variable Get-Verb Get-WinEvent Get-WmiObject Get-WSManCredSSP Get-WSManInstance Group-Object Import-Alias Import-Clixml Import-Counter Import-Csv Import-IseSnippet Import-LocalizedData Import-PSSession Import-Module Invoke-AsWorkflow Invoke-Command Invoke-Expression Invoke-History Invoke-Item Invoke-RestMethod Invoke-WebRequest Invoke-WmiMethod Invoke-WSManAction Join-Path Limit-EventLog Measure-Command Measure-Object Move-Item Move-ItemProperty New-Alias New-Event New-EventLog New-IseSnippet New-Item New-ItemProperty New-JobTrigger New-Object New-Module New-ModuleManifest New-PSDrive New-PSSession New-PSSessionConfigurationFile New-PSSessionOption New-PSTransportOption New-PSWorkflowExecutionOption New-PSWorkflowSession New-ScheduledJobOption New-Service New-TimeSpan New-Variable New-WebServiceProxy New-WinEvent New-WSManInstance New-WSManSessionOption Out-Default Out-File Out-GridView Out-Host Out-Null Out-Printer Out-String Pop-Location Push-Location Read-Host Receive-Job Register-EngineEvent Register-ObjectEvent Register-PSSessionConfiguration Register-ScheduledJob Register-WmiEvent Remove-Computer Remove-Event Remove-EventLog Remove-Item Remove-ItemProperty Remove-Job Remove-JobTrigger Remove-Module Remove-PSBreakpoint Remove-PSDrive Remove-PSSession Remove-PSSnapin Remove-TypeData Remove-Variable Remove-WmiObject Remove-WSManInstance Rename-Computer Rename-Item Rename-ItemProperty Reset-ComputerMachinePassword Resolve-Path Restart-Computer Restart-Service Restore-Computer Resume-Job Resume-Service Save-Help Select-Object Select-String Select-Xml Send-MailMessage Set-Acl Set-Alias Set-AuthenticodeSignature Set-Content Set-Date Set-ExecutionPolicy Set-Item Set-ItemProperty Set-JobTrigger Set-Location Set-PSBreakpoint Set-PSDebug Set-PSSessionConfiguration Set-ScheduledJob Set-ScheduledJobOption Set-Service Set-StrictMode Set-TraceSource Set-Variable Set-WmiInstance Set-WSManInstance Set-WSManQuickConfig Show-Command Show-ControlPanelItem Show-EventLog Sort-Object Split-Path Start-Job Start-Process Start-Service Start-Sleep Start-Transaction Start-Transcript Stop-Computer Stop-Job Stop-Process Stop-Service Stop-Transcript Suspend-Job Suspend-Service Tee-Object Test-ComputerSecureChannel Test-Connection Test-ModuleManifest Test-Path Test-PSSessionConfigurationFile Trace-Command Unblock-File Undo-Transaction Unregister-Event Unregister-PSSessionConfiguration Unregister-ScheduledJob Update-FormatData Update-Help Update-List Update-TypeData Use-Transaction Wait-Event Wait-Job Wait-Process Where-Object Write-Debug Write-Error Write-EventLog Write-Host Write-Output Write-Progress Write-Verbose Write-Warning Add-MDTPersistentDrive Disable-MDTMonitorService Enable-MDTMonitorService Get-MDTDeploymentShareStatistics Get-MDTMonitorData Get-MDTOperatingSystemCatalog Get-MDTPersistentDrive Import-MDTApplication Import-MDTDriver Import-MDTOperatingSystem Import-MDTPackage Import-MDTTaskSequence New-MDTDatabase Remove-MDTMonitorData Remove-MDTPersistentDrive Restore-MDTPersistentDrive Set-MDTMonitorData Test-MDTDeploymentShare Test-MDTMonitorData Update-MDTDatabaseSchema Update-MDTDeploymentShare Update-MDTLinkedDS Update-MDTMedia Update-MDTMedia Add-VamtProductKey Export-VamtData Find-VamtManagedMachine Get-VamtConfirmationId Get-VamtProduct Get-VamtProductKey Import-VamtData Initialize-VamtData Install-VamtConfirmationId Install-VamtProductActivation Install-VamtProductKey Update-VamtProduct',nomarkup:'-ne -eq -lt -gt -ge -le -not -like -notlike -match -notmatch -contains -notcontains -in -notin -replace'},c:[t,e.NM,i,{cN:'string',v:[{b:/'/,e:/'/},{b:/@'/,e:/^'@/}]},{cN:'literal',b:/\\$(null|true|false)\\b/},r,a]}}),r.registerLanguage('bash',function(e){var t={cN:'variable',v:[{b:/\\$[\\w\\d#@][\\w\\d_]*/},{b:/\\$\\{(.*?)}/}]},r={cN:'string',b:/\"/,e:/\"/,c:[e.BE,t,{cN:'variable',b:/\\$\\(/,e:/\\)/,c:[e.BE]}]};return{aliases:['sh','zsh'],l:/\\b-?[a-z\\._]+\\b/,k:{keyword:'if then else elif fi for while in do done case esac function',literal:'true false',built_in:'break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp',_:'-ne -eq -lt -gt -f -d -e -s -l -a'},c:[{cN:'meta',b:/^#![^\\n]+sh\\s*$/,r:10},{cN:'function',b:/\\w[\\w\\d_]*\\s*\\(\\s*\\)\\s*\\{/,rB:!0,c:[e.inherit(e.TM,{b:/\\w[\\w\\d_]*/})],r:0},e.HCM,r,{cN:'string',b:/'/,e:/'/},t]}}),r.registerLanguage('shell',function(e){return{aliases:['console'],c:[{cN:'meta',b:'^\\\\s{0,3}[\\\\w\\\\d\\\\[\\\\]()@-]*[>%$#]',starts:{e:'$',sL:'bash'}}]}}),r.registerLanguage('css',function(e){var t={b:/[A-Z\\_\\.\\-]+\\s*:/,rB:!0,e:';',eW:!0,c:[{cN:'attribute',b:/\\S/,e:':',eE:!0,starts:{eW:!0,eE:!0,c:[{b:/[\\w-]+\\(/,rB:!0,c:[{cN:'built_in',b:/[\\w-]+/},{b:/\\(/,e:/\\)/,c:[e.ASM,e.QSM]}]},e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:'number',b:'#[0-9A-Fa-f]+'},{cN:'meta',b:'!important'}]}}]};return{cI:!0,i:/[=\\/|'\\$]/,c:[e.CBCM,{cN:'selector-id',b:/#[A-Za-z0-9_-]+/},{cN:'selector-class',b:/\\.[A-Za-z0-9_-]+/},{cN:'selector-attr',b:/\\[/,e:/\\]/,i:'$'},{cN:'selector-pseudo',b:/:(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\"'.]+/},{b:'@(font-face|page)',l:'[a-z-]+',k:'font-face page'},{b:'@',e:'[{;]',i:/:/,c:[{cN:'keyword',b:/\\w+/},{b:/\\s/,eW:!0,eE:!0,r:0,c:[e.ASM,e.QSM,e.CSSNM]}]},{cN:'selector-tag',b:'[a-zA-Z-][a-zA-Z0-9_-]*',r:0},{b:'{',e:'}',i:/\\S/,c:[e.CBCM,t]}]}}),r.registerLanguage('vim',function(e){return{l:/[!#@\\w]+/,k:{keyword:'N|0 P|0 X|0 a|0 ab abc abo al am an|0 ar arga argd arge argdo argg argl argu as au aug aun b|0 bN ba bad bd be bel bf bl bm bn bo bp br brea breaka breakd breakl bro bufdo buffers bun bw c|0 cN cNf ca cabc caddb cad caddf cal cat cb cc ccl cd ce cex cf cfir cgetb cgete cg changes chd che checkt cl cla clo cm cmapc cme cn cnew cnf cno cnorea cnoreme co col colo com comc comp con conf cope cp cpf cq cr cs cst cu cuna cunme cw delm deb debugg delc delf dif diffg diffo diffp diffpu diffs diffthis dig di dl dell dj dli do doautoa dp dr ds dsp e|0 ea ec echoe echoh echom echon el elsei em en endfo endf endt endw ene ex exe exi exu f|0 files filet fin fina fini fir fix fo foldc foldd folddoc foldo for fu go gr grepa gu gv ha helpf helpg helpt hi hid his ia iabc if ij il im imapc ime ino inorea inoreme int is isp iu iuna iunme j|0 ju k|0 keepa kee keepj lN lNf l|0 lad laddb laddf la lan lat lb lc lch lcl lcs le lefta let lex lf lfir lgetb lgete lg lgr lgrepa lh ll lla lli lmak lm lmapc lne lnew lnf ln loadk lo loc lockv lol lope lp lpf lr ls lt lu lua luad luaf lv lvimgrepa lw m|0 ma mak map mapc marks mat me menut mes mk mks mksp mkv mkvie mod mz mzf nbc nb nbs new nm nmapc nme nn nnoreme noa no noh norea noreme norm nu nun nunme ol o|0 om omapc ome on ono onoreme opt ou ounme ow p|0 profd prof pro promptr pc ped pe perld po popu pp pre prev ps pt ptN ptf ptj ptl ptn ptp ptr pts pu pw py3 python3 py3d py3f py pyd pyf quita qa rec red redi redr redraws reg res ret retu rew ri rightb rub rubyd rubyf rund ru rv sN san sa sal sav sb sbN sba sbf sbl sbm sbn sbp sbr scrip scripte scs se setf setg setl sf sfir sh sim sig sil sl sla sm smap smapc sme sn sni sno snor snoreme sor so spelld spe spelli spellr spellu spellw sp spr sre st sta startg startr star stopi stj sts sun sunm sunme sus sv sw sy synti sync tN tabN tabc tabdo tabe tabf tabfir tabl tabm tabnew tabn tabo tabp tabr tabs tab ta tags tc tcld tclf te tf th tj tl tm tn to tp tr try ts tu u|0 undoj undol una unh unl unlo unm unme uns up ve verb vert vim vimgrepa vi viu vie vm vmapc vme vne vn vnoreme vs vu vunme windo w|0 wN wa wh wi winc winp wn wp wq wqa ws wu wv x|0 xa xmapc xm xme xn xnoreme xu xunme y|0 z|0 ~ Next Print append abbreviate abclear aboveleft all amenu anoremenu args argadd argdelete argedit argglobal arglocal argument ascii autocmd augroup aunmenu buffer bNext ball badd bdelete behave belowright bfirst blast bmodified bnext botright bprevious brewind break breakadd breakdel breaklist browse bunload bwipeout change cNext cNfile cabbrev cabclear caddbuffer caddexpr caddfile call catch cbuffer cclose center cexpr cfile cfirst cgetbuffer cgetexpr cgetfile chdir checkpath checktime clist clast close cmap cmapclear cmenu cnext cnewer cnfile cnoremap cnoreabbrev cnoremenu copy colder colorscheme command comclear compiler continue confirm copen cprevious cpfile cquit crewind cscope cstag cunmap cunabbrev cunmenu cwindow delete delmarks debug debuggreedy delcommand delfunction diffupdate diffget diffoff diffpatch diffput diffsplit digraphs display deletel djump dlist doautocmd doautoall deletep drop dsearch dsplit edit earlier echo echoerr echohl echomsg else elseif emenu endif endfor endfunction endtry endwhile enew execute exit exusage file filetype find finally finish first fixdel fold foldclose folddoopen folddoclosed foldopen function global goto grep grepadd gui gvim hardcopy help helpfind helpgrep helptags highlight hide history insert iabbrev iabclear ijump ilist imap imapclear imenu inoremap inoreabbrev inoremenu intro isearch isplit iunmap iunabbrev iunmenu join jumps keepalt keepmarks keepjumps lNext lNfile list laddexpr laddbuffer laddfile last language later lbuffer lcd lchdir lclose lcscope left leftabove lexpr lfile lfirst lgetbuffer lgetexpr lgetfile lgrep lgrepadd lhelpgrep llast llist lmake lmap lmapclear lnext lnewer lnfile lnoremap loadkeymap loadview lockmarks lockvar lolder lopen lprevious lpfile lrewind ltag lunmap luado luafile lvimgrep lvimgrepadd lwindow move mark make mapclear match menu menutranslate messages mkexrc mksession mkspell mkvimrc mkview mode mzscheme mzfile nbclose nbkey nbsart next nmap nmapclear nmenu nnoremap nnoremenu noautocmd noremap nohlsearch noreabbrev noremenu normal number nunmap nunmenu oldfiles open omap omapclear omenu only onoremap onoremenu options ounmap ounmenu ownsyntax print profdel profile promptfind promptrepl pclose pedit perl perldo pop popup ppop preserve previous psearch ptag ptNext ptfirst ptjump ptlast ptnext ptprevious ptrewind ptselect put pwd py3do py3file python pydo pyfile quit quitall qall read recover redo redir redraw redrawstatus registers resize retab return rewind right rightbelow ruby rubydo rubyfile rundo runtime rviminfo substitute sNext sandbox sargument sall saveas sbuffer sbNext sball sbfirst sblast sbmodified sbnext sbprevious sbrewind scriptnames scriptencoding scscope set setfiletype setglobal setlocal sfind sfirst shell simalt sign silent sleep slast smagic smapclear smenu snext sniff snomagic snoremap snoremenu sort source spelldump spellgood spellinfo spellrepall spellundo spellwrong split sprevious srewind stop stag startgreplace startreplace startinsert stopinsert stjump stselect sunhide sunmap sunmenu suspend sview swapname syntax syntime syncbind tNext tabNext tabclose tabedit tabfind tabfirst tablast tabmove tabnext tabonly tabprevious tabrewind tag tcl tcldo tclfile tearoff tfirst throw tjump tlast tmenu tnext topleft tprevious trewind tselect tunmenu undo undojoin undolist unabbreviate unhide unlet unlockvar unmap unmenu unsilent update vglobal version verbose vertical vimgrep vimgrepadd visual viusage view vmap vmapclear vmenu vnew vnoremap vnoremenu vsplit vunmap vunmenu write wNext wall while winsize wincmd winpos wnext wprevious wqall wsverb wundo wviminfo xit xall xmapclear xmap xmenu xnoremap xnoremenu xunmap xunmenu yank',built_in:'synIDtrans atan2 range matcharg did_filetype asin feedkeys xor argv complete_check add getwinposx getqflist getwinposy screencol clearmatches empty extend getcmdpos mzeval garbagecollect setreg ceil sqrt diff_hlID inputsecret get getfperm getpid filewritable shiftwidth max sinh isdirectory synID system inputrestore winline atan visualmode inputlist tabpagewinnr round getregtype mapcheck hasmapto histdel argidx findfile sha256 exists toupper getcmdline taglist string getmatches bufnr strftime winwidth bufexists strtrans tabpagebuflist setcmdpos remote_read printf setloclist getpos getline bufwinnr float2nr len getcmdtype diff_filler luaeval resolve libcallnr foldclosedend reverse filter has_key bufname str2float strlen setline getcharmod setbufvar index searchpos shellescape undofile foldclosed setqflist buflisted strchars str2nr virtcol floor remove undotree remote_expr winheight gettabwinvar reltime cursor tabpagenr finddir localtime acos getloclist search tanh matchend rename gettabvar strdisplaywidth type abs py3eval setwinvar tolower wildmenumode log10 spellsuggest bufloaded synconcealed nextnonblank server2client complete settabwinvar executable input wincol setmatches getftype hlID inputsave searchpair or screenrow line settabvar histadd deepcopy strpart remote_peek and eval getftime submatch screenchar winsaveview matchadd mkdir screenattr getfontname libcall reltimestr getfsize winnr invert pow getbufline byte2line soundfold repeat fnameescape tagfiles sin strwidth spellbadword trunc maparg log lispindent hostname setpos globpath remote_foreground getchar synIDattr fnamemodify cscope_connection stridx winbufnr indent min complete_add nr2char searchpairpos inputdialog values matchlist items hlexists strridx browsedir expand fmod pathshorten line2byte argc count getwinvar glob foldtextresult getreg foreground cosh matchdelete has char2nr simplify histget searchdecl iconv winrestcmd pumvisible writefile foldlevel haslocaldir keys cos matchstr foldtext histnr tan tempname getcwd byteidx getbufvar islocked escape eventhandler remote_send serverlist winrestview synstack pyeval prevnonblank readfile cindent filereadable changenr exp'},i:/;/,c:[e.NM,{cN:'string',b:'\\'',e:'\\'',i:'\\\\n'},{cN:'string',b:/\"(\\\\\"|\\n\\\\|[^\"\\n])*\"/},e.C('\"','$'),{cN:'variable',b:/[bwtglsav]:[\\w\\d_]*/},{cN:'function',bK:'function function!',e:'$',r:0,c:[e.TM,{cN:'params',b:'\\\\(',e:'\\\\)'}]},{cN:'symbol',b:/<[\\w-]+>/}]}}),r.registerLanguage('ruby',function(e){var t='[a-zA-Z_]\\\\w*[!?=]?|[-+~]\\\\@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~`|]|\\\\[\\\\]=?',r={keyword:'and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor',literal:'true false nil'},i={cN:'doctag',b:'@[A-Za-z]+'},a={b:'#<',e:'>'},n=[e.C('#','$',{c:[i]}),e.C('^\\\\=begin','^\\\\=end',{c:[i],r:10}),e.C('^__END__','\\\\n$')],o={cN:'subst',b:'#\\\\{',e:'}',k:r},s={cN:'string',c:[e.BE,o],v:[{b:/'/,e:/'/},{b:/\"/,e:/\"/},{b:/`/,e:/`/},{b:'%[qQwWx]?\\\\(',e:'\\\\)'},{b:'%[qQwWx]?\\\\[',e:'\\\\]'},{b:'%[qQwWx]?{',e:'}'},{b:'%[qQwWx]?<',e:'>'},{b:'%[qQwWx]?/',e:'/'},{b:'%[qQwWx]?%',e:'%'},{b:'%[qQwWx]?-',e:'-'},{b:'%[qQwWx]?\\\\|',e:'\\\\|'},{b:/\\B\\?(\\\\\\d{1,3}|\\\\x[A-Fa-f0-9]{1,2}|\\\\u[A-Fa-f0-9]{4}|\\\\?\\S)\\b/},{b:/<<(-?)\\w+$/,e:/^\\s*\\w+$/}]},i={cN:'params',b:'\\\\(',e:'\\\\)',endsParent:!0,k:r},e=[s,a,{cN:'class',bK:'class module',e:'$|;',i:/=/,c:[e.inherit(e.TM,{b:'[A-Za-z_]\\\\w*(::\\\\w+)*(\\\\?|\\\\!)?'}),{b:'<\\\\s*',c:[{b:'('+e.IR+'::)?'+e.IR}]}].concat(n)},{cN:'function',bK:'def',e:'$|;',c:[e.inherit(e.TM,{b:t}),i].concat(n)},{b:e.IR+'::'},{cN:'symbol',b:e.UIR+'(\\\\!|\\\\?)?:',r:0},{cN:'symbol',b:':(?!\\\\s)',c:[s,{b:t}],r:0},{cN:'number',b:'(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b',r:0},{b:'(\\\\$\\\\W)|((\\\\$|\\\\@\\\\@?)(\\\\w+))'},{cN:'params',b:/\\|/,e:/\\|/,k:r},{b:'('+e.RSR+'|unless)\\\\s*',k:'unless',c:[a,{cN:'regexp',c:[e.BE,o],i:/\\n/,v:[{b:'/',e:'/[a-z]*'},{b:'%r{',e:'}[a-z]*'},{b:'%r\\\\(',e:'\\\\)[a-z]*'},{b:'%r!',e:'![a-z]*'},{b:'%r\\\\[',e:'\\\\][a-z]*'}]}].concat(n),r:0}].concat(n);o.c=e;i=[{b:/^\\s*=>/,starts:{e:'$',c:i.c=e}},{cN:'meta',b:'^([>?]>|[\\\\w#]+\\\\(\\\\w+\\\\):\\\\d+:\\\\d+>|(\\\\w+-)?\\\\d+\\\\.\\\\d+\\\\.\\\\d(p\\\\d+)?[^>]+>)',starts:{e:'$',c:e}}];return{aliases:['rb','gemspec','podspec','thor','irb'],k:r,i:/\\/\\*/,c:n.concat(i).concat(e)}}),r.registerLanguage('yaml',function(e){var t='true false yes no null',r='^[ \\\\-]*',i='[a-zA-Z_][\\\\w\\\\-]*',r={cN:'attr',v:[{b:r+i+':'},{b:r+'\"'+i+'\":'},{b:r+'\\''+i+'\\':'}]},i={cN:'string',r:0,v:[{b:/'/,e:/'/},{b:/\"/,e:/\"/},{b:/\\S+/}],c:[e.BE,{cN:'template-variable',v:[{b:'{{',e:'}}'},{b:'%{',e:'}'}]}]};return{cI:!0,aliases:['yml','YAML','yaml'],c:[r,{cN:'meta',b:'^---s*$',r:10},{cN:'string',b:'[\\\\|>] *$',rE:!0,c:i.c,e:r.v[0].b},{b:'<%[%=-]?',e:'[%-]?%>',sL:'ruby',eB:!0,eE:!0,r:0},{cN:'type',b:'!'+e.UIR},{cN:'type',b:'!!'+e.UIR},{cN:'meta',b:'&'+e.UIR+'$'},{cN:'meta',b:'\\\\*'+e.UIR+'$'},{cN:'bullet',b:'^ *-',r:0},e.HCM,{bK:t,k:{literal:t}},e.CNM,i]}}),r.registerLanguage('fortran',function(e){return{cI:!0,aliases:['f90','f95'],k:{literal:'.False. .True.',keyword:'kind do while private call intrinsic where elsewhere type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. goto save else use module select case access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit continue format pause cycle exit c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg synchronous nopass non_overridable pass protected volatile abstract extends import non_intrinsic value deferred generic final enumerator class associate bind enum c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure integer real character complex logical dimension allocatable|10 parameter external implicit|10 none double precision assign intent optional pointer target in out common equivalence data',built_in:'alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_ofacosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image'},i:/\\/\\*/,c:[e.inherit(e.ASM,{cN:'string',r:0}),e.inherit(e.QSM,{cN:'string',r:0}),{cN:'function',bK:'subroutine function program',i:'[${=\\\\n]',c:[e.UTM,{cN:'params',b:'\\\\(',e:'\\\\)'}]},e.C('!','$',{r:0}),{cN:'number',b:'(?=\\\\b|\\\\+|\\\\-|\\\\.)(?=\\\\.\\\\d|\\\\d)(?:\\\\d+)?(?:\\\\.?\\\\d*)(?:[de][+-]?\\\\d+)?\\\\b\\\\.?',r:0}]}}),r.registerLanguage('erlang',function(e){var t='[a-z\\'][a-zA-Z0-9_\\']*',r='('+t+':'+t+'|'+t+')',i={keyword:'after and andalso|10 band begin bnot bor bsl bzr bxor case catch cond div end fun if let not of orelse|10 query receive rem try when xor',literal:'false true'},a=e.C('%','$'),n={cN:'number',b:'\\\\b(\\\\d+#[a-fA-F0-9]+|\\\\d+(\\\\.\\\\d+)?([eE][-+]?\\\\d+)?)',r:0},o={b:'fun\\\\s+'+t+'/\\\\d+'},s={b:r+'\\\\(',e:'\\\\)',rB:!0,r:0,c:[{b:r,r:0},{b:'\\\\(',e:'\\\\)',eW:!0,rE:!0,r:0}]},l={b:'{',e:'}',r:0},c={b:'\\\\b_([A-Z][A-Za-z0-9_]*)?',r:0},p={b:'[A-Z][a-zA-Z0-9_]*',r:0},d={b:'#'+e.UIR,r:0,rB:!0,c:[{b:'#'+e.UIR,r:0},{b:'{',e:'}',r:0}]},r={bK:'fun receive if try case',e:'end',k:i};r.c=[a,o,e.inherit(e.ASM,{cN:''}),r,s,e.QSM,n,l,c,p,d];r=[a,o,r,s,e.QSM,n,l,c,p,d];s.c[1].c=r,l.c=r;s={cN:'params',b:'\\\\(',e:'\\\\)',c:d.c[1].c=r};return{aliases:['erl'],k:i,i:'(</|\\\\*=|\\\\+=|-=|/\\\\*|\\\\*/|\\\\(\\\\*|\\\\*\\\\))',c:[{cN:'function',b:'^'+t+'\\\\s*\\\\(',e:'->',rB:!0,i:'\\\\(|#|//|/\\\\*|\\\\\\\\|:|;',c:[s,e.inherit(e.TM,{b:t})],starts:{e:';|\\\\.',k:i,c:r}},a,{b:'^-',e:'\\\\.',r:0,eE:!0,rB:!0,l:'-'+e.IR,k:'-module -record -undef -export -ifdef -ifndef -author -copyright -doc -vsn -import -include -include_lib -compile -define -else -endif -file -behaviour -behavior -spec',c:[s]},n,e.QSM,d,c,p,l,{b:/\\.$/}]}}),r.registerLanguage('nginx',function(e){var t={cN:'variable',v:[{b:/\\$\\d+/},{b:/\\$\\{/,e:/}/},{b:'[\\\\$\\\\@]'+e.UIR}]},t={eW:!0,l:'[a-z/_]+',k:{literal:'on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll'},r:0,i:'=>',c:[e.HCM,{cN:'string',c:[e.BE,t],v:[{b:/\"/,e:/\"/},{b:/'/,e:/'/}]},{b:'([a-z]+):/',e:'\\\\s',eW:!0,eE:!0,c:[t]},{cN:'regexp',c:[e.BE,t],v:[{b:'\\\\s\\\\^',e:'\\\\s|{|;',rE:!0},{b:'~\\\\*?\\\\s+',e:'\\\\s|{|;',rE:!0},{b:'\\\\*(\\\\.[a-z\\\\-]+)+'},{b:'([a-z\\\\-]+\\\\.)+\\\\*'}]},{cN:'number',b:'\\\\b\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}(:\\\\d{1,5})?\\\\b'},{cN:'number',b:'\\\\b\\\\d+[kKmMgGdshdwy]*\\\\b',r:0},t]};return{aliases:['nginxconf'],c:[e.HCM,{b:e.UIR+'\\\\s+{',rB:!0,e:'{',c:[{cN:'section',b:e.UIR}],r:0},{b:e.UIR+'\\\\s',e:';|{',rB:!0,c:[{cN:'attribute',b:e.UIR,starts:t}],r:0}],i:'[^\\\\s\\\\}]'}}),r.registerLanguage('makefile',function(e){var t={cN:'variable',v:[{b:'\\\\$\\\\('+e.UIR+'\\\\)',c:[e.BE]},{b:/\\$[@%<?\\^\\+\\*]/}]},r={cN:'string',b:/\"/,e:/\"/,c:[e.BE,t]},i={cN:'variable',b:/\\$\\([\\w-]+\\s/,e:/\\)/,k:{built_in:'subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value'},c:[t]},a={b:'^'+e.UIR+'\\\\s*[:+?]?=',i:'\\\\n',rB:!0,c:[{b:'^'+e.UIR,e:'[:+?]?=',eE:!0}]},n={cN:'section',b:/^[^\\s]+:/,e:/$/,c:[t]};return{aliases:['mk','mak'],k:'define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath',l:/[\\w-]+/,c:[e.HCM,t,r,i,a,{cN:'meta',b:/^\\.PHONY:/,e:/$/,k:{'meta-keyword':'.PHONY'},l:/[\\.\\w]+/},n]}}),r.registerLanguage('ini',function(e){var t={cN:'string',c:[e.BE],v:[{b:'\\'\\'\\'',e:'\\'\\'\\'',r:10},{b:'\"\"\"',e:'\"\"\"',r:10},{b:'\"',e:'\"'},{b:'\\'',e:'\\''}]};return{aliases:['toml'],cI:!0,i:/\\S/,c:[e.C(';','$'),e.HCM,{cN:'section',b:/^\\s*\\[+/,e:/\\]+/},{b:/^[a-z0-9\\[\\]_\\.-]+\\s*=\\s*/,e:'$',rB:!0,c:[{cN:'attr',b:/[a-z0-9\\[\\]_\\.-]+/},{b:/=/,eW:!0,r:0,c:[{cN:'literal',b:/\\bon|off|true|false|yes|no\\b/},{cN:'variable',v:[{b:/\\$[\\w\\d\"][\\w\\d_]*/},{b:/\\$\\{(.*?)}/}]},t,{cN:'number',b:/([\\+\\-]+)?[\\d]+_[\\d_]+/},e.NM]}]}]}}),r.registerLanguage('matlab',function(e){var t='(\\'|\\\\.\\')+',r={r:0,c:[{b:t}]};return{k:{keyword:'break case catch classdef continue else elseif end enumerated events for function global if methods otherwise parfor persistent properties return spmd switch try while',built_in:'sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i inf nan isnan isinf isfinite j why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell '},i:'(//|\"|#|/\\\\*|\\\\s+/\\\\w+)',c:[{cN:'function',bK:'function',e:'$',c:[e.UTM,{cN:'params',v:[{b:'\\\\(',e:'\\\\)'},{b:'\\\\[',e:'\\\\]'}]}]},{cN:'built_in',b:/true|false/,r:0,starts:r},{b:'[a-zA-Z][a-zA-Z_0-9]*'+t,r:0},{cN:'number',b:e.CNR,r:0,starts:r},{cN:'string',b:'\\'',e:'\\'',c:[e.BE,{b:'\\'\\''}]},{b:/\\]|}|\\)/,r:0,starts:r},{cN:'string',b:'\"',e:'\"',c:[e.BE,{b:'\"\"'}],starts:r},e.C('^\\\\s*\\\\%\\\\{\\\\s*$','^\\\\s*\\\\%\\\\}\\\\s*$'),e.C('\\\\%','$')]}}),r.registerLanguage('elixir',function(e){var t='[a-zA-Z_][a-zA-Z0-9_.]*(\\\\!|\\\\?)?',r='and false then defined module in return redo retry end for true self when next until do begin unless nil break not case cond alias while ensure or include use alias fn quote require import with|0',i={cN:'subst',b:'#\\\\{',e:'}',l:t,k:r},a={cN:'string',c:[e.BE,i],v:[{b:/'/,e:/'/},{b:/\"/,e:/\"/}]},n={cN:'function',bK:'def defp defmacro',e:/\\B\\b/,c:[e.inherit(e.TM,{b:t,endsParent:!0})]},o=e.inherit(n,{cN:'class',bK:'defimpl defmodule defprotocol defrecord',e:/\\bdo\\b|$|;/}),e=[a,e.HCM,o,n,{b:'::'},{cN:'symbol',b:':(?![\\\\s:])',c:[a,{b:'[a-zA-Z_]\\\\w*[!?=]?|[-+~]\\\\@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~`|]|\\\\[\\\\]=?'}],r:0},{cN:'symbol',b:t+':(?!:)',r:0},{cN:'number',b:'(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b',r:0},{cN:'variable',b:'(\\\\$\\\\W)|((\\\\$|\\\\@\\\\@?)(\\\\w+))'},{b:'->'},{b:'('+e.RSR+')\\\\s*',c:[e.HCM,{cN:'regexp',i:'\\\\n',c:[e.BE,i],v:[{b:'/',e:'/[a-z]*'},{b:'%r\\\\[',e:'\\\\][a-z]*'}]}],r:0}];return{l:t,k:r,c:i.c=e}}),r.registerLanguage('objectivec',function(e){var t=/[a-zA-Z@][a-zA-Z0-9_]*/,r='@interface @class @protocol @implementation';return{aliases:['mm','objc','obj-c'],k:{keyword:'int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN',literal:'false true FALSE TRUE nil YES NO NULL',built_in:'BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once'},l:t,i:'</',c:[{cN:'built_in',b:'\\\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\\\w+'},e.CLCM,e.CBCM,e.CNM,e.QSM,{cN:'string',v:[{b:'@\"',e:'\"',i:'\\\\n',c:[e.BE]},{b:'\\'',e:'[^\\\\\\\\]\\'',i:'[^\\\\\\\\][^\\']'}]},{cN:'meta',b:'#',e:'$',c:[{cN:'meta-string',v:[{b:'\"',e:'\"'},{b:'<',e:'>'}]}]},{cN:'class',b:'('+r.split(' ').join('|')+')\\\\b',e:'({|$)',eE:!0,k:r,l:t,c:[e.UTM]},{b:'\\\\.'+e.UIR,r:0}]}}),r.registerLanguage('cs',function(e){var t={keyword:'abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long nameof object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let on orderby partial remove select set value var where yield',literal:'null false true'},r={cN:'number',v:[{b:'\\\\b(0b[01\\']+)'},{b:'(-?)\\\\b([\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)(u|U|l|L|ul|UL|f|F|b|B)'},{b:'(-?)(\\\\b0[xX][a-fA-F0-9\\']+|(\\\\b[\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)([eE][-+]?[\\\\d\\']+)?)'}],r:0},i={cN:'string',b:'@\"',e:'\"',c:[{b:'\"\"'}]},a=e.inherit(i,{i:/\\n/}),n={cN:'subst',b:'{',e:'}',k:t},o=e.inherit(n,{i:/\\n/}),s={cN:'string',b:/\\$\"/,e:'\"',i:/\\n/,c:[{b:'{{'},{b:'}}'},e.BE,o]},l={cN:'string',b:/\\$@\"/,e:'\"',c:[{b:'{{'},{b:'}}'},{b:'\"\"'},n]},c=e.inherit(l,{i:/\\n/,c:[{b:'{{'},{b:'}}'},{b:'\"\"'},o]});n.c=[l,s,i,e.ASM,e.QSM,r,e.CBCM],o.c=[c,s,a,e.ASM,e.QSM,r,e.inherit(e.CBCM,{i:/\\n/})];s={v:[l,s,i,e.ASM,e.QSM]},i=e.IR+'(<'+e.IR+'(\\\\s*,\\\\s*'+e.IR+')*>)?(\\\\[\\\\])?';return{aliases:['csharp','c#'],k:t,i:/::/,c:[e.C('///','$',{rB:!0,c:[{cN:'doctag',v:[{b:'///',r:0},{b:'\\x3c!--|--\\x3e'},{b:'</?',e:'>'}]}]}),e.CLCM,e.CBCM,{cN:'meta',b:'#',e:'$',k:{'meta-keyword':'if else elif endif define undef warning error line region endregion pragma checksum'}},s,r,{bK:'class interface',e:/[{;=]/,i:/[^\\s:,]/,c:[e.TM,e.CLCM,e.CBCM]},{bK:'namespace',e:/[{;=]/,i:/[^\\s:]/,c:[e.inherit(e.TM,{b:'[a-zA-Z](\\\\.?\\\\w)*'}),e.CLCM,e.CBCM]},{cN:'meta',b:'^\\\\s*\\\\[',eB:!0,e:'\\\\]',eE:!0,c:[{cN:'meta-string',b:/\"/,e:/\"/}]},{bK:'new return throw await else',r:0},{cN:'function',b:'('+i+'\\\\s+)+'+e.IR+'\\\\s*\\\\(',rB:!0,e:/\\s*[{;=]/,eE:!0,k:t,c:[{b:e.IR+'\\\\s*\\\\(',rB:!0,c:[e.TM],r:0},{cN:'params',b:/\\(/,e:/\\)/,eB:!0,eE:!0,k:t,r:0,c:[s,r,e.CBCM]},e.CLCM,e.CBCM]}]}}),r.registerLanguage('python',function(e){var t={keyword:'and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10',built_in:'Ellipsis NotImplemented',literal:'False None True'},r={cN:'meta',b:/^(>>>|\\.\\.\\.) /},i={cN:'subst',b:/\\{/,e:/\\}/,k:t,i:/#/},a={cN:'string',c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[e.BE,r],r:10},{b:/(u|b)?r?\"\"\"/,e:/\"\"\"/,c:[e.BE,r],r:10},{b:/(fr|rf|f)'''/,e:/'''/,c:[e.BE,r,i]},{b:/(fr|rf|f)\"\"\"/,e:/\"\"\"/,c:[e.BE,r,i]},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)\"/,e:/\"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)\"/,e:/\"/},{b:/(fr|rf|f)'/,e:/'/,c:[e.BE,i]},{b:/(fr|rf|f)\"/,e:/\"/,c:[e.BE,i]},e.ASM,e.QSM]},n={cN:'number',r:0,v:[{b:e.BNR+'[lLjJ]?'},{b:'\\\\b(0o[0-7]+)[lLjJ]?'},{b:e.CNR+'[lLjJ]?'}]},o={cN:'params',b:/\\(/,e:/\\)/,c:['self',r,n,a]};return i.c=[a,n,r],{aliases:['py','gyp','ipython'],k:t,i:/(<\\/|->|\\?)|=>/,c:[r,n,a,e.HCM,{v:[{cN:'function',bK:'def'},{cN:'class',bK:'class'}],e:/:/,i:/[${=;\\n,]/,c:[e.UTM,o,{b:/->/,eW:!0,k:'None'}]},{cN:'meta',b:/^[\\t ]*@/,e:/$/},{b:/\\b(print|exec)\\(/}]}}),r.registerLanguage('javascript',function(e){var t='[A-Za-z$_][0-9A-Za-z$_]*',r={keyword:'in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as',literal:'true false null undefined NaN Infinity',built_in:'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise'},i={cN:'number',v:[{b:'\\\\b(0[bB][01]+)'},{b:'\\\\b(0[oO][0-7]+)'},{b:e.CNR}],r:0},a={cN:'subst',b:'\\\\$\\\\{',e:'\\\\}',k:r,c:[]},n={cN:'string',b:'`',e:'`',c:[e.BE,a]};a.c=[e.ASM,e.QSM,n,i,e.RM];a=a.c.concat([e.CBCM,e.CLCM]);return{aliases:['js','jsx'],k:r,c:[{cN:'meta',r:10,b:/^\\s*['\"]use (strict|asm)['\"]/},{cN:'meta',b:/^#!/,e:/$/},e.ASM,e.QSM,n,e.CLCM,e.CBCM,i,{b:/[{,]\\s*/,r:0,c:[{b:t+'\\\\s*:',rB:!0,r:0,c:[{cN:'attr',b:t,r:0}]}]},{b:'('+e.RSR+'|\\\\b(case|return|throw)\\\\b)\\\\s*',k:'return throw case',c:[e.CLCM,e.CBCM,e.RM,{cN:'function',b:'(\\\\(.*?\\\\)|'+t+')\\\\s*=>',rB:!0,e:'\\\\s*=>',c:[{cN:'params',v:[{b:t},{b:/\\(\\s*\\)/},{b:/\\(/,e:/\\)/,eB:!0,eE:!0,k:r,c:a}]}]},{b:/</,e:/(\\/\\w+|\\w+\\/)>/,sL:'xml',c:[{b:/<\\w+\\s*\\/>/,skip:!0},{b:/<\\w+/,e:/(\\/\\w+|\\w+\\/)>/,skip:!0,c:[{b:/<\\w+\\s*\\/>/,skip:!0},'self']}]}],r:0},{cN:'function',bK:'function',e:/\\{/,eE:!0,c:[e.inherit(e.TM,{b:t}),{cN:'params',b:/\\(/,e:/\\)/,eB:!0,eE:!0,c:a}],i:/\\[|%/},{b:/\\$[(.]/},e.METHOD_GUARD,{cN:'class',bK:'class',e:/[{;=]/,eE:!0,i:/[:\"\\[\\]]/,c:[{bK:'extends'},e.UTM]},{bK:'constructor get set',e:/\\{/,eE:!0}],i:/#(?!!)/}}),r.registerLanguage('dockerfile',function(e){return{aliases:['docker'],cI:!0,k:'from maintainer expose env arg user onbuild stopsignal',c:[e.HCM,e.ASM,e.QSM,e.NM,{bK:'run cmd entrypoint volume add copy workdir label healthcheck shell',starts:{e:/[^\\\\]$/,sL:'bash'}}],i:'</'}}),r.registerLanguage('r',function(e){var t='([a-zA-Z]|\\\\.[a-zA-Z.])[a-zA-Z0-9._]*';return{c:[e.HCM,{b:t,l:t,k:{keyword:'function if in break next repeat else for return switch while try tryCatch stop warning require library attach detach source setMethod setGeneric setGroupGeneric setClass ...',literal:'NULL NA TRUE FALSE T F Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10'},r:0},{cN:'number',b:'0[xX][0-9a-fA-F]+[Li]?\\\\b',r:0},{cN:'number',b:'\\\\d+(?:[eE][+\\\\-]?\\\\d*)?L\\\\b',r:0},{cN:'number',b:'\\\\d+\\\\.(?!\\\\d)(?:i\\\\b)?',r:0},{cN:'number',b:'\\\\d+(?:\\\\.\\\\d*)?(?:[eE][+\\\\-]?\\\\d*)?i?\\\\b',r:0},{cN:'number',b:'\\\\.\\\\d+(?:[eE][+\\\\-]?\\\\d*)?i?\\\\b',r:0},{b:'`',e:'`',r:0},{cN:'string',c:[e.BE],v:[{b:'\"',e:'\"'},{b:'\\'',e:'\\''}]}]}}),r.registerLanguage('awk',function(e){return{k:{keyword:'BEGIN END if else while do for in break continue delete next nextfile function func exit|10'},c:[{cN:'variable',v:[{b:/\\$[\\w\\d#@][\\w\\d_]*/},{b:/\\$\\{(.*?)}/}]},{cN:'string',c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,r:10},{b:/(u|b)?r?\"\"\"/,e:/\"\"\"/,r:10},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)\"/,e:/\"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)\"/,e:/\"/},e.ASM,e.QSM]},e.RM,e.HCM,e.NM]}}),exports.hljs=r;","type":"application/javascript","module-type":"library"},"$:/plugins/tiddlywiki/highlight/highlight.css":{"text":"/*\n\nOriginal highlight.js style (c) Ivan Sagalaev <maniac@softwaremaniacs.org>\n\n*/\n\n.hljs {\n display: block;\n overflow-x: auto;\n padding: 0.5em;\n background: #F0F0F0;\n}\n\n\n/* Base color: saturation 0; */\n\n.hljs,\n.hljs-subst {\n color: #444;\n}\n\n.hljs-comment {\n color: #888888;\n}\n\n.hljs-keyword,\n.hljs-attribute,\n.hljs-selector-tag,\n.hljs-meta-keyword,\n.hljs-doctag,\n.hljs-name {\n font-weight: bold;\n}\n\n\n/* User color: hue: 0 */\n\n.hljs-type,\n.hljs-string,\n.hljs-number,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-quote,\n.hljs-template-tag,\n.hljs-deletion {\n color: #880000;\n}\n\n.hljs-title,\n.hljs-section {\n color: #880000;\n font-weight: bold;\n}\n\n.hljs-regexp,\n.hljs-symbol,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-link,\n.hljs-selector-attr,\n.hljs-selector-pseudo {\n color: #BC6060;\n}\n\n\n/* Language color: hue: 90; */\n\n.hljs-literal {\n color: #78A960;\n}\n\n.hljs-built_in,\n.hljs-bullet,\n.hljs-code,\n.hljs-addition {\n color: #397300;\n}\n\n\n/* Meta color: hue: 200 */\n\n.hljs-meta {\n color: #1f7199;\n}\n\n.hljs-meta-string {\n color: #4d99bf;\n}\n\n\n/* Misc effects */\n\n.hljs-emphasis {\n font-style: italic;\n}\n\n.hljs-strong {\n font-weight: bold;\n}\n","type":"text/css","tags":"[[$:/tags/Stylesheet]]"},"$:/plugins/tiddlywiki/highlight/highlightblock.js":{"text":"!function(){'use strict';var i=require('$:/core/modules/widgets/codeblock.js').codeblock,l=require('$:/plugins/tiddlywiki/highlight/highlight.js');l.configure({tabReplace:' '}),i.prototype.postRender=function(){var i=this.domNodes[0],e=this.language,t=this.wiki.getTiddler('$:/config/HighlightPlugin/TypeMappings/'+e);t&&(e=t.fields.text||''),e&&l.getLanguage(e)&&(i.className=e.toLowerCase()+' hljs',$tw.browser&&!i.isTiddlyWikiFakeDom?l.highlightBlock(i):(t=i.textContent,i.children[0].innerHTML=l.fixMarkup(l.highlight(e,t).value),i.isTiddlyWikiFakeDom&&(i.children[0].textInnerHTML=t)))}}();","type":"application/javascript","module-type":"widget"},"$:/plugins/tiddlywiki/highlight/howto":{"text":"! Supporting Additional Languages\n \nThe [[highlight.js|https://github.com/highlightjs/highlight.js]] project supports many languages. Only a subset of these languages are supported by the plugin. It is possible for users to change the set of languages supported by the plugin by following these steps:\n \n# Go to the highlight.js project [[download page|https://highlightjs.org/download/]], select the language definitions to include, and press the Download button to download a zip archive containing customised support files for a highlight.js syntax highlighting server.\n# Locate the `highlight.pack.js` file in the highlight plugin -- on a stock Debian 8 system running Tiddlywiki5 under node-js it is located at `/usr/local/lib/node_modules/tiddlywiki/plugins/tiddlywiki/highlight/files/highlight.pack.js`.\n# Replace the plugin `highlight.pack.js` file located in step 2 with the one from the downloaded archive obtained in step 1.\n# Restart the Tiddlywiki server.\n"},"$:/plugins/tiddlywiki/highlight/license":{"type":"text/plain","text":"Copyright (c) 2006, Ivan Sagalaev\nAll rights reserved.\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n * Neither the name of highlight.js nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY\nEXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY\nDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"},"$:/plugins/tiddlywiki/highlight/readme":{"text":"This plugin provides syntax highlighting of code blocks using v9.15.6 of [[highlight.js|https://github.com/isagalaev/highlight.js]] from Ivan Sagalaev.\n\n! Usage\n\nWhen the plugin is installed it automatically applies highlighting to all codeblocks defined with triple backticks or with the CodeBlockWidget.\n\nThe language can optionally be specified after the opening triple braces:\n\n<$codeblock code=\"\"\"```css\n * { margin: 0; padding: 0; } /* micro reset */\n\nhtml { font-size: 62.5%; }\nbody { font-size: 14px; font-size: 1.4rem; } /* =14px */\nh1 { font-size: 24px; font-size: 2.4rem; } /* =24px */\n```\"\"\"/>\n\nIf no language is specified highlight.js will attempt to automatically detect the language.\n\n! Built-in Language Brushes\n\nThe plugin includes support for the following languages (referred to as \"brushes\" by highlight.js):\n\n* apache\n* arduino\n* arm assembly\n* asciidoc\n* autohotkey\n* awk\n* bash\n* cmake\n* coffeescript\n* cpp\n* cs\n* css\n* diff\n* dockerfile\n* erlang\n* fortran\n* go\n* gradle\n* haskell\n* html\n* http\n* ini\n* intel x86 assembly\n* java\n* javascript\n* json\n* kotlin\n* makefile\n* markdown\n* mathematica\n* matlab\n* nginx\n* objectivec\n* perl\n* php\n* powershell\n* python\n* R\n* ruby\n* rust\n* sql\n* typescript\n* vim script\n* xml\n* yaml\n\nYou can also specify the language as a MIME content type (eg `text/html` or `text/css`). The mapping is accomplished via mapping tiddlers whose titles start with `$:/config/HighlightPlugin/TypeMappings/`.\n"},"$:/plugins/tiddlywiki/highlight/styles":{"tags":"[[$:/tags/Stylesheet]]","text":".hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8;-webkit-text-size-adjust:none}.hljs-comment,.diff .hljs-header,.hljs-javadoc{color:#998;font-style:italic}.hljs-keyword,.css .rule .hljs-keyword,.hljs-winutils,.nginx .hljs-title,.hljs-subst,.hljs-request,.hljs-status{color:#333;font-weight:bold}.hljs-number,.hljs-hexcolor,.ruby .hljs-constant{color:teal}.hljs-string,.hljs-tag .hljs-value,.hljs-phpdoc,.hljs-dartdoc,.tex .hljs-formula{color:#d14}.hljs-title,.hljs-id,.scss .hljs-preprocessor{color:#900;font-weight:bold}.hljs-list .hljs-keyword,.hljs-subst{font-weight:normal}.hljs-class .hljs-title,.hljs-type,.vhdl .hljs-literal,.tex .hljs-command{color:#458;font-weight:bold}.hljs-tag,.hljs-tag .hljs-title,.hljs-rule .hljs-property,.django .hljs-tag .hljs-keyword{color:navy;font-weight:normal}.hljs-attribute,.hljs-variable,.lisp .hljs-body,.hljs-name{color:teal}.hljs-regexp{color:#009926}.hljs-symbol,.ruby .hljs-symbol .hljs-string,.lisp .hljs-keyword,.clojure .hljs-keyword,.scheme .hljs-keyword,.tex .hljs-special,.hljs-prompt{color:#990073}.hljs-built_in{color:#0086b3}.hljs-preprocessor,.hljs-pragma,.hljs-pi,.hljs-doctype,.hljs-shebang,.hljs-cdata{color:#999;font-weight:bold}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.diff .hljs-change{background:#0086b3}.hljs-chunk{color:#aaa}"},"$:/plugins/tiddlywiki/highlight/usage":{"text":"! Usage\n\nFenced code blocks can have a language specifier added to trigger highlighting in a specific language. Otherwise heuristics are used to detect the language.\n\n```\n ```js\n var a = b + c; // Highlighted as JavaScript\n ```\n```\n! Adding Themes\n\nYou can add themes from highlight.js by copying the CSS to a new tiddler and tagging it with [[$:/tags/Stylesheet]]. The available themes can be found on GitHub:\n\nhttps://github.com/isagalaev/highlight.js/tree/master/src/styles\n"}}}
{"tiddlers":{"$:/plugins/HackSearch/Buttons/ViewToolbar":{"created":"20210302003456567","text":"\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/ViewToolbarButtons/Visibility/\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/ViewToolbar\" itemTemplate=\"$:/plugins/HackSearch/Buttons/ItemTemplate\"/>\n\n</$set>\n\n</$set>","tags":"$:/HackSearch","modified":"20210413002447299","caption":"{{$:/language/ControlPanel/Toolbars/ViewToolbar/Caption}}","list-before":""},"$:/plugins/HackSearch/Stylesheet":{"created":"20210305010503948","text":"<pre>\n/* SearchDictionary functionality in main /tab */\n.hs-dic-editor { width:100%;\n}\n.hs-searchbar { float:right; margin-top:calc(3px - 1em); text-align:right; opacity:.4;\n}\n.hs-searchbar:hover { opacity:1; \n}\n.hs-searchfield { outline:0; border:1px solid silver; \n}\n.hs-searchbar:hover .hs-searchfield::placeholder { opacity:1; \n}\n.hs-btn svg { opacity:.0;\n}\n.hs-btn-red svg { fill:crimson; opacity:1;\n}\n.hs-searchbar:hover .hs-btn svg { opacity:1;\n}\n.hs-searcheditor { width:100%; min-width:20em !important;\n}\n.hs-dic-syntax { outline:1px solid crimson; padding:0 3px; \n}\n.hs-dropdown { \n position:absolute; \n right:3em;\n margin-top:1em;\n border-radius: 4px;\n -webkit-box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.5);\n -moz-box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.5);\n box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.5);\n background: white;\n}\n.hs-dropdown-item { \n min-width: 227px;\n white-space: nowrap;\n padding:2px 7px;\n}\n.hs-dropdown-item:last-of-type {\n padding-bottom:5px; \n}\n\n/* Tables */\n\n.hacksearch-table {\n max-width:100%;\n width:100%;\n display:block; /* enables overflow:hidden */\n overflow-x:hidden;\n background-color:<<colour background>>;\n}\n.hacksearch-table td {\n vertical-align:top;\n border-top:0; /* prevent double border */\n width:50%;\n}\n.hacksearch-table .hs-margin { margin-left:2em;\n}\n.hacksearch-table span.hs-decode > code {\n display:inline;\n font-style:normal;\n background:white;\n border:0;\n color:#5778d8; \n margin-right:-5px;\n margin-left:-5px;\n}\n.hacksearch-table .hs-smaller {\n font-size:80%;\n margin-left:1em;\n line-height:140%;\n}\n\n/* tab/Fields */\n.hacksearch-fieldseditor { width:100%; }\n.hacksearch-fieldstable td { font-size:90%; vertical-align:top; }\n.hacksearch-separator a:not(:last-of-type):after { content:\" ◆\"; color:black; }\n\n/* tab/CtrlPanel */\n.hacksearch-ctrl-table {\n display:block;\n white-space:nowrap;\n font-size:90%;\n border-left:1px solid gray;\n padding-left:5px;\n margin-left:1px;\n}\n\n/* $:/plugins/HackSearch/Buttons/ItemTemplate */\n.hacksearch-icon svg {\n max-width:1em;\n max-height:1em;\n vertical-align:middle;\n margin:0 4px;\n}\n.hacksearch-icontemplate {\n display:inline;\n padding:0;\n margin:0;\n}\n.hacksearch-icontemplate svg {\n fill:orange;\n height:.8em;\n width:.8em;\n vertical-align:middle;\n}\n.hacksearch-buttons .hacksearch-buttons-cbx {\n min-width:2em;\n}\n.hacksearch-buttons * {\n display:inline-block;\n white-space:nowrap;\n}\n\n/* $:/plugins/HackSearch/tab/Icons */\n.hacksearch-iconlist svg {\n max-width:30px;\n}\n\n/* Floating tablink */\n.hacksearch-tablink {\n float:right;\n outline:1px solid silver;\n padding:0 5px;\n margin-left:5em;\n font-size:90%;\n} \n</pre>","type":"text/vnd.tiddlywiki","tags":"$:/tags/Stylesheet $:/HackSearch","modified":"20210413004024115"},"$:/plugins/HackSearch/tab/ControlPanel":{"created":"20210305014514109","text":"\\define rec(tid)\n<$vars tag={{{ [[$tid$]removeprefix[$:/core/ui]addprefix[$:/tags]] }}} >\n<$list filter=\"\"\"[all[shadows+tiddlers]tag<tag>!has[draft.of]]\"\"\" variable=curr>\n <div class=\"hacksearch-ctrl-table\">\n <$link to=<<curr>>>\n <$transclude tiddler=<<curr>> field=caption>\n <$view tiddler=<<curr>> field=title/></$transclude>\n </$link>\n <$macrocall $name=rec tid=<<curr>>/>\n </div>\n</$list> \n</$vars> \n\\end\n\n''The [[$:/ControlPanel]] tab structure.''\n<div style=\"font-size:90%\">\nThe [[plugins|$:/core/ui/ControlPanel/Plugins]] tab is omitted because its subtabs are //not// tagged with its parents name.<br>\nThe [[Keyboard Shortcuts|$:/core/ui/ControlPanel/KeyboardShortcuts]] tab is omitted because it has no subtabs.</div>\n\n<table class=\"hacksearch-table\">\n<tr>\n<$list filter=\"\"\"[all[tiddlers+shadows]tag[$:/tags/ControlPanel]] -$:/core/ui/ControlPanel/Plugins -$:/core/ui/ControlPanel/KeyboardShortcuts -$:/plugins/ahahn/tinka/controlPanelExtension\"\"\">\n <td style=\"vertical-align:top;\">\n <$link to=<<currentTiddler>> >\n <$transclude tiddler=<<curr>> field=caption>\n <$view tiddler=<<curr>> field=title/>\n </$transclude>\n </$link>\n <$macrocall $name=rec tid=<<currentTiddler>>/>\n </td>\n</$list>\n</tr>\n</table>","tags":"$:/HackSearch","modified":"20210412234531221","caption":"CtrlPanel"},"$:/plugins/HackSearch/tab/PageTemplates":{"created":"20210303140741501","text":"Tiddlers tagged [[$:/tags/PageTemplate]]. Drag links to rearrange.\n<table class=\"hacksearch-table\">\n<tr>\n<td>\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/PageTemplate\" itemTemplate=\"$:/plugins/HackSearch/Templates/Template\" />\n</td>\n<td>\n<$list filter=\"[[$:/tags/PageTemplate]tagging[]]\">\n<$text text={{!!title}}/><br>\n</$list>\n</td>\n</tr>\n</table>\n\n!!!Details for some of the page templates\n\n@@.hacksearch-table\n|>| Topbar |h\n|$:/core/ui/PageTemplate/topleftbar<br>[class: ''tc-topbar tc-topbar-left''<br> add by tag: <<tag \"$:/tags/TopLeftBar\">><br>]|$:/core/ui/PageTemplate/toprightbar<br>[class: ''tc-topbar tc-topbar-right''<br> add by tag: <<tag \"$:/tags/TopRightBar\">><br>]|\n| Story river | Sidebar |h\n|$:/core/ui/PageTemplate/story<br>[class: ''tc-story-river''<br> [class: ''story-backdrop''<br> add by tag: <<tag \"$:/tags/AboveStory\">><br> ]<br> list[$:/StoryList]<br> [class: ''story-frontdrop''<br> add by tag: <<tag \"$:/tags/BelowStory\">><br> ]<br>]|$:/core/ui/PageTemplate/sidebar<br>[class: ''tc-sidebar-scrollable''<br> [class: ''tc-sidebar-header''<br> add by tag: <<tag \"$:/tags/SideBarSegment\">><br><div class=\"hs-margin\"><span class=\"hs-decode\">`$:/core/ui/SideBarSegments/`</span>...<br><div class=\"hs-smaller\">[class: ''tc-site-title''<br>... [[site-title|$:/core/ui/SideBarSegments/site-title]] ]<br>[class: ''tc-site-subtitle''<br>... [[site-subtitle|$:/core/ui/SideBarSegments/site-subtitle]] ]<br>[class: ''tc-page-controls''<br>... [[page-controls|$:/core/ui/SideBarSegments/page-controls]] <br><span class=\"hs-smaller\">add by tag: <<tag \"$:/tags/PageControls\">></span> ]<br>[class: ''tc-sidebar-lists tc-sidebar-search''<br>... [[search|$:/core/ui/SideBarSegments/search]] ]<br>[class: ''tc-sidebar-lists tc-sidebar-tabs''<br>... [[tabs|$:/core/ui/SideBarSegments/tabs]]<br><span class=\"hs-smaller\">add by tag: <<tag \"$:/tags/SideBar\">></span> ]</div></div> ]<br>]|\n@@","tags":"$:/HackSearch","modified":"20210413000415338","caption":"Page"},"$:/plugins/HackSearch/tab/ViewTemplates":{"created":"20210303141020770","text":"Tiddlers tagged [[$:/tags/ViewTemplate]]. Drag links to rearrange.\n<table class=\"hacksearch-table\">\n<tr>\n<td>\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/ViewTemplate\" itemTemplate=\"$:/plugins/HackSearch/Templates/Template\" />\n</td>\n<td>\n<$list filter=\"[[$:/tags/ViewTemplate]tagging[]]\">\n<$text text={{!!title}}/><br>\n</$list>\n</td>\n</tr>\n</table>\n\n!!!Details for some viewtemplates\n\n@@.hacksearch-table\n| Field | ~ViewTemplate tiddlers |h\n|icon, title|$:/core/ui/ViewTemplate/title<br>[class: ''tc-tiddler-title''<br> [class: ''tc-titlebar''<br> [class: ''tc-tiddler-controls''<br> add by tag: <<tag \"$:/tags/ViewToolbar\">><br> ]<br> [class: ''tc-tiddler-title-icon''<br> !!icon<br> ]<br> [''h2'' class: ''tc-title''<br> !!title<br> ]<br> ]<br>]|\n|modifier, modified|$:/core/ui/ViewTemplate/subtitle<br>[class: ''tc-subtitle''<br> !!modifier<br> !!modified via $:/language/Tiddler/DateFormat<br>]|\n|tags|$:/core/ui/ViewTemplate/tags<br>[class: ''tc-tags-wrapper''<br> !!tags via $:/core/ui/TagTemplate<br>]|\n|text|$:/core/ui/ViewTemplate/body<br>[class: ''tc-tiddler-body''<br> !!text<br>]|\n@@","tags":"$:/HackSearch","modified":"20210412235801665","caption":"View"},"$:/plugins/HackSearch/tab/Stylesheets":{"created":"20210227230450712","text":"Tiddlers tagged [[$:/tags/Stylesheet]].<br>\nDrag links to rearrange. If there's a styling conflict \"lower in the list wins.\"\n<table class=\"hacksearch-table\">\n<tr>\n<td>\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/Stylesheet\" itemTemplate=\"$:/plugins/HackSearch/Templates/Template\" />\n</td>\n<td>\n<$list filter=\"[[$:/tags/Stylesheet]tagging[]]\">\n<$text text={{!!title}}/><br>\n</$list>\n</td>\n</tr>\n</table>\n\n!!!All tiddlers containing `<style>` blocks\n<$list filter=\"[all[tiddlers+shadows]contains:text[<style>]]\">\n\n</$list>","tags":"$:/HackSearch","modified":"20210413001718319","caption":"Stylesheets"},"$:/plugins/HackSearch/searchdic":{"created":"20210408065901040","text":"This is a (missing) tiddler: type e.g apfelstrudel into the search field to test\n$:/core/ui/ViewTemplate/body: body text [[text field]]\n$:/HistoryList: history river story\n$:/StoryList: history story river","type":"application/x-tiddler-dictionary","tags":"$:/HackSearch","modified":"20210413002109304"},"$:/plugins/HackSearch/Buttons/EditorTools":{"created":"20210302003654164","text":"\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditorToolbarButtons/Visibility/\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditorToolbar\" itemTemplate=\"$:/plugins/HackSearch/Buttons/ItemTemplate\"/>","tags":"$:/HackSearch","modified":"20210413002210401","caption":"{{$:/language/ControlPanel/Toolbars/EditorToolbar/Caption}}"},"$:/plugins/HackSearch/Buttons/EditTools":{"created":"20210302003632961","text":"\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditToolbarButtons/Visibility/\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditToolbar\" itemTemplate=\"$:/plugins/HackSearch/Buttons/ItemTemplate\"/>\n\n</$set>\n\n</$set>","tags":"$:/HackSearch","modified":"20210413002219146","caption":"{{$:/language/ControlPanel/Toolbars/EditToolbar/Caption}}"},"$:/plugins/HackSearch/Buttons/ItemTemplate":{"created":"20210302004414599","text":"\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<div class=\"hacksearch-buttons\">\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\" class=\"hacksearch-buttons-cbx\"/>\n<span class=\"tc-icon-wrapper hacksearch-icon\">\n <$transclude tiddler={{!!icon}}/>\n <$link to={{!!title}}>\n <$transclude field=\"caption\"><$view field=title/></$transclude>\n </$link>\n</span>\n</div>\n</$draggable>","tags":"$:/HackSearch","modified":"20210413002251673"},"$:/plugins/HackSearch/Buttons/PageTools":{"created":"20210302003715313","text":"\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/PageControlButtons/Visibility/\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/PageControls\" itemTemplate=\"$:/plugins/HackSearch/Buttons/ItemTemplate\"/>\n\n</$set>\n\n</$set>","tags":"$:/HackSearch","modified":"20210413002436674","caption":"{{$:/language/ControlPanel/Toolbars/PageControls/Caption}}"},"$:/plugins/HackSearch/search":{"created":"20210408145122536","text":"","tags":"$:/HackSearch","modified":"20210413002456427"},"$:/fields":{"created":"20210305131718992","text":"created creator modified title tags text caption","tags":"$:/HackSearch","modified":"20210413002503566","description":"A modifiable tiddler for quick access to specific field names."},"$:/plugins/HackSearch/SystemTags/favs":{"created":"20210307112359808","text":"Macro \nStylesheet \n--\nViewTemplate ViewToolbar\nEditTemplate EditorToolbar EditToolbar \n---\nPageTemplate \nSideBarSegment \nPageControls\nSideBar\nAboveStory BelowStory \nTopLeftBar TopRightBar \n----\nControlPanel\nImage KeyboardShortcut","tags":"$:/HackSearch","modified":"20210413002516451"},"$:/plugins/HackSearch/tab":{"created":"20210227225341836","text":"\\define hacksearch-inner()\n<$vars myfilter=\"\"\"[enlist-input[]match[$(val)$]]\"\"\">\n<$list filter=\"\"\"[[$:/plugins/HackSearch/searchdic]get[text]splitregexp[\\n]prefix<candidate>filter<myfilter>then<candidate>]\"\"\">\n <div class=\"hs-dropdown-item\">\n <$link/>\n </div>\n</$list>\n</$vars>\n\\end\n\n<div class=\"hs-searchbar\">\n<$reveal type=\"nomatch\" state=\"$:/state/HackSearch/dic\" text=\"show\">\n <$button set=\"$:/state/HackSearch/dic\" setTo=\"show\"\n class=\"tc-btn-invisible hs-btn hs-btn-left\">\n {{$:/core/images/options-button}}\n </$button>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/state/HackSearch/dic\" text=\"show\">\n <$button set=\"$:/state/HackSearch/dic\" setTo=\"hide\"\n class=\"tc-btn-invisible hs-btn hs-btn-red\">\n {{$:/core/images/options-button}}\n </$button>\n</$reveal>\n<$edit-text tiddler=\"$:/plugins/HackSearch/search\" tag=input size=40 placeholder=\"search in SearchDictionary\" class=\"hs-searchfield\"\n/>\n<$button class=\"tc-btn-invisible hs-btn hs-btn-right\">\n <$action-setfield $tiddler=\"$:/plugins/HackSearch/search\" text=\"\"/>\n {{$:/core/images/close-button}}\n</$button>\n</div>\n\n<div class=\"hs-dropdown\">\n<$vars val={{$:/plugins/HackSearch/search}} >\n<$list filter=\"\"\"[[$:/plugins/HackSearch/searchdic]get[text]splitregexp[\\n]regexp<val>splitbefore[: ]removesuffix[: ]]\"\"\" variable=candidate>\n<<hacksearch-inner>>\n</$list>\n</$vars>\n</div>\n\n<$reveal type=\"match\" state=\"$:/state/HackSearch/dic\" text=\"show\">\n <span style=\"font-size:90%;\">\n ''~SearchDictionary''\n </span>\n <$reveal type=\"nomatch\" state=\"$:/state/HackSearch/dic/syntax\" text=\"show\">\n <$button set=\"$:/state/HackSearch/dic/syntax\" setTo=\"show\"\n class=\"tc-btn-invisible hs-dic-syntax hs-btn-open\">\n ?\n </$button>\n </$reveal>\n <$reveal type=\"match\" state=\"$:/state/HackSearch/dic/syntax\" text=\"show\">\n <$button set=\"$:/state/HackSearch/dic/syntax\" setTo=\"hide\"\n class=\"tc-btn-invisible hs-dic-syntax hs-btn-closed\">\n ?\n </$button>\n <div>\n\nNote down search terms for those annoying tids that you never find.<br>\nBasic syntax in dictionary: `<tiddler title>``: ``<search terms>`<br>\n- Separate tiddler title and search terms with ''colon and space'' character.<br>\n- Tiddler titles are typed \"as is\" but search terms with space chars are [[in brackets]]\n<br>Examples:\n\n```\n$:/SystemTiddler: These are some search terms\nThis is a tiddler title: Only [[search terms]] need brackets if spaced \n```\n </div>\n </$reveal>\n\n <$edit-text tiddler=\"$:/plugins/HackSearch/searchdic\" class=\"hs-dic-editor\"/>\n</$reveal>\n\n\n<$macrocall $name=tabs \ntabsList=\"[tag[$:/HackTab]]\n[enlist{$:/plugins/HackSearch/tab!!list}addprefix[$:/plugins/HackSearch/tab/]]\n\" \ndefault=\"$:/plugins/HackSearch/tab/ViewTemplates\" \nstate=\"$:/state/HackSearch/tab\"\ntemplate=\"$:/plugins/HackSearch/tab/template\"\n/>","tags":"$:/tags/AdvancedSearch $:/HackSearch","modified":"20210413002609751","list":"SystemTags ViewTemplates EditTemplates PageTemplates Stylesheets Overwrites Fields Icons Buttons ControlPanel","caption":"Hack"},"$:/plugins/HackSearch/tab/Buttons":{"created":"20210302002843699","text":"<div style=\"margin-left:7em; margin-bottom:-1em;\">Check for visibility. Drag to reorder.</div>\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[tiddlers+shadows]prefix[$:/plugins/HackSearch/Buttons/]!has[draft.of]] -$:/plugins/HackSearch/Buttons/ItemTemplate\" default=\"$:/plugins/HackSearch/Buttons/ViewToolbar\" class=\"tc-vertical\" explicitState=\"$:/state/tabs/controlpanel/toolbars-1345989671\"/>\n</div>","tags":"$:/HackSearch","modified":"20210413002636882","caption":"Buttons"},"$:/plugins/HackSearch/tab/EditTemplates":{"created":"20210227230336811","text":"Tiddlers tagged [[$:/tags/EditTemplate]]. Drag links to rearrange.\n<table class=\"hacksearch-table\">\n<tr>\n<td>\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditTemplate\" itemTemplate=\"$:/plugins/HackSearch/Templates/Template\" />\n</td>\n<td>\n<$list filter=\"[[$:/tags/EditTemplate]tagging[]]\">\n<$text text={{!!title}}/><br>\n</$list>\n</td>\n</tr>\n</table>","tags":"$:/HackSearch","modified":"20210413002645463","caption":"Edit"},"$:/plugins/HackSearch/tab/Icons":{"created":"20170112101142498","text":"Hover to see title. Click to open.\n\n^^`tag[$:/tags/Image]`^^\n\n<div class=\"hacksearch-iconlist\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/Image]prefix[$:/core]]\">\n<$link tooltip=\"{{!!title}}\"><$transclude/></$link>\n</$list>\n\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/Image]!prefix[$:/core]]\">\n<$link tooltip=\"{{!!title}}\"><$transclude/></$link>\n</$list>\n</div>","tags":"$:/HackSearch","modifier":"Mat von TWaddle","modified":"20210413003058940","creator":"twMat","caption":"Icons"},"$:/plugins/HackSearch/tab/Overwrites":{"created":"20210301122849889","text":"\\define has-overwrite()\n<$list filter=\"\"\"[<currentTiddler>plugintiddlers[]is[tiddler]first[]]\"\"\">\n{{$:/core/images/star-filled||$:/plugins/HackSearch/Template/IconTemplate}}\n</$list>\n\\end\n\n\\define list-shadows()\n<div style=\"margin-left:1.3em; border-left:1px solid silver; padding-left:3px; font-size:95%;\">\n<$list filter=\"[<currentTiddler>plugintiddlers[]is[tiddler]]\">\n<$link/> {{$:/core/images/star-filled||$:/plugins/HackSearch/Template/IconTemplate}}<br>\n</$list>\n<$list filter=\"[<currentTiddler>plugintiddlers[]!is[tiddler]]\">\n<$link/><br>\n</$list>\n</div>\n\\end\n\n{{$:/core/images/star-filled||$:/plugins/HackSearch/Template/IconTemplate}} = overwritten shadow tiddlers\n\n<$list filter=\"[plugin-type[plugin]sort[]] -$:/core +[reverse[]] $:/core +[reverse[]]\">\n<$vars state={{{ [{!!title}split[/]last[]addprefix[$:/state/systemics/reveal/plugin/]] }}}>\n<$reveal type=\"nomatch\" state=<<state>> text=\"show\">\n <$button set=<<state>> setTo=\"show\"\n class=\"tc-btn-invisible tc-tiddlylink\">\n {{$:/core/images/chevron-right}}\n </$button>\n</$reveal>\n<$reveal type=\"match\" state=<<state>> text=\"show\">\n <$button set=<<state>> setTo=\"hide\"\n class=\"tc-btn-invisible tc-tiddlylink\">\n {{$:/core/images/chevron-down}}\n </$button>\n</$reveal>\n<$link/>\n<<has-overwrite>>\n<$reveal type=\"match\" state=<<state>> text=\"show\">\n<<list-shadows>>\n</$reveal>\n</$vars>\n<br>\n</$list>","tags":"$:/HackSearch","modified":"20210413003502887","caption":"Overwrites"},"$:/plugins/HackSearch/tab/SystemTags":{"created":"20130822080600000","text":"''Favourite system tags''\n<$reveal state=\"$:/state/HackSearch/SystemTags/favs\" type=\"nomatch\" text=\"show\">\n<$button set=\"$:/state/HackSearch/SystemTags/favs\" setTo=\"show\">edit</$button>\n</$reveal><$reveal state=\"$:/state/HackSearch/SystemTags/favs\" type=\"match\" text=\"show\">\n<$button set=\"$:/state/HackSearch/SystemTags/favs\" setTo=\"hide\">edit</$button>\n</$reveal>\n\n<$reveal state=\"$:/state/HackSearch/SystemTags/favs\" type=\"match\" text=\"show\">\n<table style=\"border:0;\">\n<tr>\n<td style=\"border:0;\"><$edit tiddler=\"$:/plugins/HackSearch/SystemTags/favs\"/></td>\n<td style=\"vertical-align:top; border:0; padding-top:2em;\">\nAdd system tag names - the part after `$:/tags/`<br><br>Separate groups with `--` ''but'' each separator much have different number of `-` characters. I don't have time to explain why ;-)\n</td>\n</tr>\n</table>\n</$reveal>\n\n<table style=\"width:100%;\">\n<$list filter=\"[enlist{$:/plugins/HackSearch/SystemTags/favs}addprefix[$:/tags/]]\">\n<$list filter=\"[{!!title}suffix[--]]\">\n<tr><th colspan=\"3\" style=\"height:4px;\"></th></tr>\n</$list>\n<$list filter=\"[{!!title}!suffix[--]]\">\n<tr>\n<td><$view field=title/></td>\n<td><$link/></td>\n<td><$macrocall $name=\"tag\" tag={{!!caption}}/></td>\n</tr>\n</$list>\n</$list>\n</table>\n\n<div style=\"font-weight:500;font-size:110%;margin-top:1.5em;\">All ~$:/tags/... that are used in this wiki</div>\n(For a //complete// list of system tags in TW, see [[docs|https://tiddlywiki.com/#SystemTags]].)\n\n<$reveal type=\"nomatch\" state=\"$:/state/HackSearch/SystemTags\" text=\"show\">\n\n<$button set=\"$:/state/HackSearch/SystemTags\" setTo=\"show\">Show list</$button>\n\n</$reveal>\n<$reveal type=\"match\" state=\"$:/state/HackSearch/SystemTags\" text=\"show\">\n\n<$button set=\"$:/state/HackSearch/SystemTags\" setTo=\"hide\">Hide list</$button>\n\n<table>\n<$list filter=\"[all[tiddlers+shadows]tags[]prefix[$:/tags/]]\">\n<tr>\n<td><$link/></td>\n<td><$macrocall $name=\"tag\" tag={{!!caption}}/></td>\n<td><$link> {{!!description}}</$link></td>\n</tr>\n</$list>\n</table>\n\n</$reveal>","type":"text/vnd.tiddlywiki","tags":"$:/HackSearch","modified":"20210413003808983","list":"AboveStory BelowStory ControlPanel EditorToolbar EditTemplate EditToolbar Image KeyboardShortcut Macro PageControls PageTemplate SideBar SideBarSegment Stylesheet TopLeftBar TopRightBar ViewTemplate ViewToolbar","caption":"SysTags"},"$:/plugins/HackSearch/tab/template":{"created":"20210307115104681","text":"<div class=\"hacksearch-tablink\"><$link to=<<currentTab>>>tablink</$link></div>\n<$transclude tiddler=<<currentTab>> mode=block/>","tags":"$:/HackSearch","modified":"20210413003910275"},"$:/plugins/HackSearch/Template/IconTemplate":{"created":"20210301132346036","text":"<div class=\"hacksearch-icontemplate\"><$transclude/></div>","tags":"$:/HackSearch","modified":"20210413004111148"},"$:/plugins/HackSearch/Templates/Template":{"created":"20210304220518933","text":"<$draggable tiddler=<<currentTiddler>>>\n<$link/> {{!!description}}\n</$draggable>\n","tags":"$:/HackSearch","modified":"20210413004123646"},"$:/plugins/TWaddle/HackSearch/readme":{"created":"20210305204142158","text":"''~HackSearch'' appears as an extra tab in the <div class=\"hacksearch-icon\" style=\"display:inline; margin:0 -9px 0 0; \">{{$:/core/images/advanced-search-button}}</div> $:/AdvancedSearch tiddler.\n\nIt is a collection of tools, most useful ''when hacking TW itself'', to gain quick access to the components that TW consists of.\n\nThe ~HackSearch tools are arbitrary both in number and design, so do come with ideas for improvements and additions in the [[discussion group|https://groups.google.com/g/tiddlywiki]].\n\nAdd your own \"subtabs\" by tagging tiddlers with `$:/HackTab`. If you want a short and snappy tab name, then add a `caption` field for it.","tags":"$:/HackSearch","modified":"20210413004306941"},"$:/plugins/HackSearch/tab/Fields":{"created":"20210303150800344","text":"!!!Names of common fields in @@font-size:70%;margin-top:3px;position:absolute; `{{$:/fields}}`@@\n\n<$tiddler tiddler=dummy>\n<$edit-text tiddler=\"$:/fields\" class=hacksearch-fieldseditor tag=input/>\n</$tiddler>\n\n!!!Fields in use (other than the common fields above)\n\n<table class=\"hacksearch-fieldstable\">\n<tr><th></th><th>Used in</th></tr>\n<$list filter=\"[fields[]sort[]] +[!enlist{$:/fields}]\">\n<tr>\n<td><$view field=title/></td>\n<td class=\"hacksearch-separator\">\n<$list filter=\"\"\"[has:field<currentTiddler>]\"\"\"><$link/> </$list>\n</td>\n</tr>\n</$list>\n</table>","throttle.refresh":"","tags":"$:/HackSearch","modified":"20210413004345038","fields":"created creator modified title tags text caption","caption":"Fields"}}}
{"tiddlers":{"$:/config/field-search/data/Any Field":{"text":"{\n \"*\": \"any field\"\n}","type":"application/json","caption":"Any Field","tags":"$:/tags/field-search/data"},"$:/config/field-search/exclude":{"type":"text/vnd.tiddlywiki","text":"bag revision exclude draft.of draft.title"},"$:/config/field-search/sortby":{"type":"text/vnd.tiddlywiki","text":"title text tags caption subtitle creator modifier created modified type"},"$:/config/field-search/tab/Any Field":{"caption":"Any Field","opt-checked":"[all[]]","opt-unchecked":"[!is[system]]","search-set":"[!is[system]]","search-sort":"[sort[title]limit[250]]","tags":"$:/tags/SearchResults","type":"text/vnd.tiddlywiki","text":"\\define searchTerm() [search:$(field)$<userInput>]\n\n<$list filter=\"[[$:/config/field-search/data/Any Field]indexes[]sortby{$:/config/field-search/sortby}]\" variable=field emptyMessage=\"[[- configuration needed -|$:/plugins/wikilabs/field-search/readme]]\">\n{{||$:/plugins/wikilabs/field-search/templates/Results}}\n</$list>"},"$:/plugins/wikilabs/field-search/css/column-styles":{"text":"/* columns responsive*/\n.c2, .c3, .columns2, .columns3 {\n column-rule: 1px solid #ccc;\n column-gap: 2em;\n}\n\n.c2, .columns2 { column-count:2;}\n.c3, .columns3 { column-count:3;}\n\n.-gap { column-gap: initial;}\n.-cr { column-rule: initial;}\n\n.wltc-max-width {\n width: 100%;\n}","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/wikilabs/field-search/styles":{"tags":"$:/tags/Stylesheet","text":".wltc-show-system {\n float: right;\n cursor: pointer;\n}\n\n.wltc-show-system input {\n visibility: hidden;\n margin-left: -1em;\n width: initial;\n}\n\n.wltc-show-system input[checked] + span{\n color: blue;\n font-weight: bold;\n}"},"$:/plugins/wikilabs/field-search/history":{"text":"V 0.4.1 - 2021-03-28\n\n* add match counter into field-search dropdown\n\nV 0.3.0 - 2021-03-06\n\n* \"+system\" is more visible if selected\n** shows a \"pointer cursor\" now\n* show field-names in \"all Fields\" tab\n* complete redesign\n\nV 0.2.4 - 2020-12-25\n\n* update license\n\nV 0.2.3 - 2020.01.19\n\n* Update license link/text\n\nV 0.2.2 - 2019.02.27\n\n* add \"include system tiddlers\" option per tab\n* work with a single template instead of duplicated code\n* Adjust minimum TW version to V5.1.18 because of \"subfilter\" usage\n\nV 0.1.0 - 2019.02.19\n\n* Make it more \"update-friendly\"\n** wrappers are tagged instead of \"search-list\" tiddlers\n\nV 0.0.1 - 2019.02.19\n\n* Initial release\n* Add \"Field Search\" tab to search results\n* Basic configuration options\n"},"$:/plugins/wikilabs/field-search/icon":{"text":"<svg width=\"22pt\" height=\"22pt\" version=\"1.1\" viewBox=\"0 0 128 128\">\n<path transform=\"scale(4.36)\" d=\"m18.6 0-14.5 7.33-3.93 14.7 10.5 7.33 14.5-7.33 3.93-14.7-10.5-7.33zm-5.84 4.81c2.22 0 4.16 1.21 5.2 3h0.34v0.00195c0.277-0.0114 0.548 0.0881 0.744 0.273l2.8 2.64c0.182 0.171 0.287 0.402 0.291 0.645h0.00391v10.5c0 0.516-0.443 0.936-0.99 0.936h-9.91c-0.547 0-0.99-0.419-0.99-0.936v-5.56c-0.285-0.132-0.561-0.282-0.82-0.455l-4.3 4.3c-0.462 0.462-1.21 0.462-1.67 0-0.462-0.462-0.462-1.21 0-1.67l4.3-4.3c-0.656-0.985-1.01-2.14-1-3.33 0-3.32 2.69-6.01 6.01-6.01zm0 1.6c-2.07 0.0138-4.32 1.67-4.32 4.41 0 1.57 0.662 2.9 1.81 3.67v-5.73c0-0.516 0.443-0.936 0.99-0.936h4.71c-0.873-0.893-2.07-1.41-3.19-1.41zm-1.14 2.82v5.83c0.358 0.0841 0.734 0.143 1.14 0.143 2.36 0 4.44-1.74 4.44-4.38 0-0.577-0.115-1.11-0.309-1.59h-5.27zm1.26 1.45h3.12c0.508 0 0.916 0.443 0.916 0.992v0.0273c0 0.549-0.408 0.99-0.916 0.99h-3.12c-0.508 0-0.918-0.441-0.918-0.99v-0.0273c0-0.549 0.41-0.992 0.918-0.992zm5.86 0.531c-0.2 3.14-2.8 5.62-5.99 5.62-0.391 0-0.77-0.0497-1.14-0.121v4.62h9.05v-9.94h-1.38c-0.204 0-0.382-0.0727-0.539-0.172z\" style=\"stroke-width:.229\"/>\n</svg>"},"$:/plugins/wikilabs/field-search/license":{"text":"[[Field Search-Plugin|https://wikilabs.github.io/#field-search]] (c) Mario Pietsch - 2019-2021\n\nhttps://opensource.org/licenses/BSD-3-Clause\n"},"$:/plugins/wikilabs/field-search/readme":{"text":"This plugin adds a \"Field Search\" tab to the search results\n\n{{$:/plugins/wikilabs/field-search/CP/Settings/field-search}}\n\n!! This plugin replaces the following system modules\n\n<$list filter=\"[[$:/plugins/wikilabs/field-search]plugintiddlers[]prefix[$:/core/]]\"><$link to=<<currentTiddler>>><<currentTiddler>><br></$link></$list>"},"$:/core/ui/DefaultSearchResultList":{"caption":"{{$:/language/Search/DefaultResults/Caption}}","first-search-filter":"[!is[system]search:title<userInput>sort[title]limit[250]]","second-search-filter":"[!is[system]search<userInput>sort[title]limit[250]]","tags":"$:/tags/SearchResults","type":"text/vnd.tiddlywiki","text":"//<small>{{$:/language/Search/Matches/Title}}</small>//\n<$list filter=\"[<userInput>minlength[1]]\" variable=\"ignore\">\n<$list filter={{{ [<configTiddler>get[first-search-filter]] ~[{$:/config/SearchResults/Default}get[first-search-filter]] }}}>\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[<searchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span></$list></$list>\n\n//<small>{{$:/language/Search/Matches/All}}</small>//\n<$list filter=\"[<userInput>minlength[1]]\" variable=\"ignore\">\n<$list filter={{{ [<configTiddler>get[second-search-filter]] ~[{$:/config/SearchResults/Default}get[second-search-filter]] }}}>\n<span class={{{[<currentTiddler>addsuffix[-secondaryList]] -[<searchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n</$list>\n"},"$:/plugins/wikilabs/field-search/templates/ItemTemplate":{"type":"text/vnd.tiddlywiki","text":"<span title=\"Drag & Drop sort\">:::</span> <$link />"},"$:/plugins/wikilabs/field-search/templates/ListItemTemplate":{"type":"text/vnd.tiddlywiki","text":"<div class=\"tc-menu-list-item tc-small-gap-left\">\n<$link />\n</div>"},"$:/plugins/wikilabs/field-search/templates/Results":{"modified":"20210328092315108","type":"text/vnd.tiddlywiki","text":"\\define showAll()\n<small><$checkbox field=\"search-set\" checked={{!!opt-checked}} unchecked={{!!opt-unchecked}} class=\"wltc-show-system\">+ system</$checkbox></small>\n\\end\n<$tiddler tiddler=<<currentTab>>>\n<$set name=lst filter=\"[subfilter{!!search-set}] +[subfilter<searchTerm>] +[subfilter{!!search-sort}]\">\n//Field: ''<<field>>'' (<$count filter=\"\"\"[enlist<lst>]\"\"\"/>) <<showAll>>//\n\n<$list filter=\"[enlist<lst>]\" template=\"$:/core/ui/ListItemTemplate\" emptyMessage=\"\"\"<div class=\"tc-menu-list-item tc-small-gap-left\">n/a</div>\"\"\"/>\n</$set>\n</$tiddler>"},"$:/plugins/wikilabs/field-search/templates/WrapperTemplate":{"caption":"Fields","opt-checked":"[all[]]","opt-unchecked":"[!is[system]]","search-set":"[!is[system]]","search-sort":"[sort[title]limit[250]]","type":"text/vnd.tiddlywiki","text":"`\\define searchTerm() [search:$(field)$<userInput>]\n\\define openConfig() \n<$button>\n <$action-setfield $tiddler=\"$:/state/tab-1749438307\" text=\"$:/plugins/wikilabs/field-search/CP/Settings/field-search\"/>\n <$action-navigate $to=\"$:/ControlPanel\"/>\n- configuration needed -\n</$button>\n\\end\n\n<$list filter=\"[[`<<newConfigName>>`]indexes[]sortby{$:/config/field-search/sortby}]\" variable=field emptyMessage=\"<<openConfig>>\">\n{{||$:/plugins/wikilabs/field-search/templates/Results}}\n</$list>`\n"},"$:/plugins/wikilabs/field-search/CP/Settings/field-search":{"caption":"Field-Search","tags":"$:/tags/ControlPanel","text":"\\define setDefault()\n<$action-deletetiddler $tiddler=\"$:/plugins/wikilabs/field-search/ui/fieldWrapper\"/>\n<$action-deletetiddler $tiddler=\"$:/plugins/wikilabs/field-search/ui/aliasWrapper\"/>\n<$action-deletetiddler $tiddler=\"$:/plugins/wikilabs/field-search/ui/captionWrapper\"/>\n<$action-deletetiddler $tiddler=\"$:/plugins/wikilabs/field-search/ui/textWrapper\"/>\n<$action-deletetiddler $tiddler=\"$:/plugins/wikilabs/field-search/ui/titleWrapper\"/>\n<$action-deletetiddler $tiddler=\"$:/core/ui/DefaultSearchResultList\"/>\n\\end\n\n{{$:/plugins/wikilabs/field-search/ui/TabConfigurator}}\n\n!! Return to Default\n\nThe following shaddow tiddlers have been modified: \n\n<<list-links filter:\"[tag[$:/tags/SearchResults]is[tiddler]is[shadow]sort[title]]\">>\n\n<$button actions=<<setDefault>> >\nReturn to: Default Settings!\n</$button>\n\n"},"$:/plugins/wikilabs/field-search/ui/edit/exclude":{"type":"text/vnd.tiddlywiki","text":"!! [[Exclude Fields|$:/plugins/wikilabs/field-search/ui/edit/exclude]]\n<<<\nThe following fields are excluded: ''{{$:/config/field-search/exclude}}'' \n\nExclude from field list: \n<$edit-text class=\"wltc-max-width\" tiddler=\"$:/config/field-search/exclude\" tag=\"input\"/>\n<<<"},"$:/plugins/wikilabs/field-search/ui/edit/sortby":{"type":"text/vnd.tiddlywiki","text":"!! [[Field Sort order|$:/plugins/wikilabs/field-search/ui/edit/sortby]]\n<<<\nSort order: [[$:/config/field-search/sortby]]\n\n<$edit-text class=\"wltc-max-width\" tiddler=\"$:/config/field-search/sortby\" tag=\"input\"/>\n<<<"},"$:/plugins/wikilabs/field-search/ui/ExistingTabs":{"type":"text/vnd.tiddlywiki","text":"\\define getTempName() $:/temp/field-search/tabName\n\\define getCurrentDataName() $:/config/field-search/data/$(currentCaption)$\n\\define getCurrentTabName() $:/config/field-search/tab/$(currentCaption)$\n\n\\define editConfig()\n<$action-createtiddler $basetitle=<<getTempName>> $overwrite=yes $template=<<getCurrentDataName>> tags=\"\"/>\n<$action-setfield $tiddler=\"$:/temp/field-search/select\" text=<<getCurrentDataName>>/>\n\\end\n\n\\define editConfigButton()\n<$button tooltip=\"Load Configuration\" class=\"tc-btn-invisible\" actions=<<editConfig>>>{{$:/core/images/copy-clipboard}} Edit</$button>\n\\end\n\n\\define deleteConfig()\n<$action-sendmessage $message=\"tm-delete-tiddler\" $param=<<getCurrentTabName>>/>\n<$action-sendmessage $message=\"tm-delete-tiddler\" $param=<<getCurrentDataName>>/>\n\\end\n\n\\define deleteButton()\n<$button tooltip=\"Load Configuration\" class=\"tc-btn-invisible\" actions=<<deleteConfig>>>{{$:/core/images/delete-button}} Delete</$button>\n\\end\n\n\\define checkbox()\n<$checkbox tiddler=<<currentTiddler>> tag=\"$:/tags/SearchResults\" checked=\"$:/tags/SearchResults\" unchecked=\"\" default=\"\"/>\n\\end\n\n!! [[Custom Search Configurations|$:/plugins/wikilabs/field-search/ui/ExistingTabs]]\n<<<\nIf the element is checked, the configuration will be used:\n\n<table><tbody>\n<$list filter=\"[prefix[$:/config/field-search/tab/]]\" emptyMessage=\"n/a\">\n<tr>\n<$vars currentCaption={{!!caption}}>\n<td><<checkbox>></td><td><$link to=<<currentTiddler>>><<currentCaption>></$link> - used <$link to=<<getCurrentDataName>>> fields</$link>: ''<$list filter=\"[<getCurrentDataName>indexes[]sortby{$:/config/field-search/sortby}]\" variable=field><<field>>, </$list>'' </td><td><<deleteButton>></td><td><<editConfigButton>></td>\n</$vars>\n</tr>\n</$list>\n</tbody></table>\n\n<<<"},"$:/plugins/wikilabs/field-search/ui/TabConfigurator":{"type":"text/vnd.tiddlywiki","text":"\\define getTabName() $:/config/field-search/tab/$(tabName)$\n\\define getConfigName() $:/config/field-search/data/$(tabName)$\n\\define getTempName() $:/temp/field-search/tabName\n\\define getTempSelect() $:/temp/field-search/select\n\n\\define clearTemp()\n\\whitespace trim\n<$button class=\"tc-btn-invisible\">\n <$action-deletetiddler $tiddler=<<getTempName>>/>\n <$action-deletetiddler $tiddler=<<getTempSelect>>/>\n {{$:/core/images/close-button}}\n</$button>\n\\end\n\n\\define createTab()\n<$set name=newConfigName value=<<getConfigName>> >\n <$wikify name=aa text={{$:/plugins/wikilabs/field-search/templates/WrapperTemplate}} output=text>\n <$action-createtiddler $basetitle=<<getTabName>> $overwrite=yes $template=\"$:/plugins/wikilabs/field-search/templates/WrapperTemplate\" caption={{{ [<getTempName>get[caption]] }}} text=<<aa>> tags=\"$:/tags/SearchResults\"/>\n <$action-createtiddler $basetitle=<<getConfigName>> $template=<<getTempName>> $overwrite=yes tags=\"$:/tags/field-search/data\"/>\n </$wikify>\n</$set>\n\\end\n\n\\define selectActions()\n<$action-createtiddler $basetitle=<<getTempName>> $overwrite=yes $template={{{ [<getTempSelect>get[text]] }}} tags=\"\"/>\n\\end\n\n\\define selectData()\n<$select tiddler=<<getTempSelect>> default=\"\" actions=<<selectActions>> >\n <option value=\"\">---</option>\n <$list filter=\"[tag[$:/tags/field-search/data]]\" >\n <option value=<<currentTiddler>> >{{!!caption}}</option>\n </$list>\n</$select>\n\\end\n\n!! Default Setting\n<<<\n* <$checkbox tiddler=\"$:/core/ui/DefaultSearchResultList\" tag=\"$:/tags/SearchResults\" checked=\"$:/tags/SearchResults\" unchecked=\"\" default=\"$:/tags/SearchResults\"> Add ''Default Search'' tab to the search dropdown!</$checkbox>\n* <$checkbox tiddler=\"$:/config/field-search/tab/Any Field\" tag=\"$:/tags/SearchResults\" checked=\"$:/tags/SearchResults\" unchecked=\"\" default=\"$:/tags/SearchResults\"> Add ''Any Field'' tab to the search dropdown!</$checkbox>\n<<<\n\n{{$:/plugins/wikilabs/field-search/ui/ExistingTabs}}\n\n!! [[Create / Modify Configuration|$:/plugins/wikilabs/field-search/ui/TabConfigurator]]\n<<<\nNew caption: <$edit-text tiddler=<<getTempName>> field=\"caption\"/> <<clearTemp>> <!-- Load config: <<selectData>> -->\n\nUsed fields: ''<$list filter=\"[<getTempName>indexes[]sortby{$:/config/field-search/sortby}]\" variable=field><<field>>, </$list>''\n\n---\n\n<$vars tabName={{{ [<getTempName>get[caption]] }}}>\n\n@@.columns3.j\n<$list filter=\"[all[]!is[system]fields:exclude{$:/config/field-search/exclude}sort[]sortby{$:/config/field-search/sortby}]\" variable=\"field\">\n<$checkbox tiddler=<<getTempName>> index=<<field>> checked=\"comment\" default=\"closed\" > <<field>><br></$checkbox>\n</$list>\n@@\n\n<table class=\"wltc-max-width\"><tbody>\n<$list filter=\"[<getTempName>indexes[]sortby{$:/config/field-search/sortby}]\" variable=field>\n<tr>\n<td><<field>></td><td><$edit-text class=\"wltc-max-width\" tiddler=<<getTempName>> index=<<field>> tag=input/> </td>\n</tr>\n</$list>\n</tbody></table>\n\n---\n\n<$list filter=\"[<getTabName>get[caption]match<tabName>addprefix[Update ]else[Create]]\" variable=\"buttonText\" >\n<$button actions=<<createTab>> disabled={{{[<getTempName>get[caption]then[no]else[yes]]}}}>\n<<buttonText>>\n</$button>\n</$list>\n</$vars>\n<<<\n\n!! Tab Order\n<<<\nYou can use ''drag&drop to sort'' the list:\n\n<<list-tagged-draggable tag:\"$:/tags/SearchResults\" itemTemplate:\"$:/plugins/wikilabs/field-search/templates/ItemTemplate\">>\n<<<\n\n{{$:/plugins/wikilabs/field-search/ui/edit/exclude}}\n\n{{$:/plugins/wikilabs/field-search/ui/edit/sortby}}\n"}}}
{"tiddlers":{"$:/core/macros/tabs":{"tags":"$:/tags/Macro","text":"\\define tabs(tabsList,default,state:\"$:/state/tab\",class,template,buttonTemplate,retain,actions,explicitState)\n<$set name=\"qualifiedState\" value=<<qualify \"$state$\">>>\n<$set name=\"tabsState\" filter=\"[<__explicitState__>minlength[1]] ~[<qualifiedState>]\">\n<div class=\"tc-tab-set $class$\">\n<div class=\"tc-tab-buttons $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\" storyview=\"pop\"><$set name=\"save-currentTiddler\" value=<<currentTiddler>>><$tiddler tiddler=<<currentTab>>><$button set=<<tabsState>> setTo=<<currentTab>> default=\"$default$\" selectedClass=\"tc-tab-selected\" tooltip={{!!tooltip}}>\n<$tiddler tiddler=<<save-currentTiddler>>>\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude tiddler=\"$buttonTemplate$\" mode=\"inline\">\n<$transclude tiddler=<<currentTab>> field=\"caption\">\n<$macrocall $name=\"currentTab\" $type=\"text/plain\" $output=\"text/plain\"/>\n</$transclude>\n</$transclude>\n</$set></$tiddler>$actions$</$button><span class=\"wltc-link-to-tab\"><$link overrideClass=\"\" to=<<currentTiddler>> >{{$:/core/images/link}}</$link></span></$tiddler></$set></$list>\n</div>\n<div class=\"tc-tab-divider $class$\"/>\n<div class=\"tc-tab-content $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\">\n\n<$reveal type=\"match\" state=<<tabsState>> text=<<currentTab>> default=\"$default$\" retain=\"\"\"$retain$\"\"\">\n\n<$transclude tiddler=\"$template$\" mode=\"block\">\n\n<$transclude tiddler=<<currentTab>> mode=\"block\"/>\n\n</$transclude>\n\n</$reveal>\n\n</$list>\n</div>\n</div>\n</$set>\n</$set>\n\\end\n"},"$:/core/ui/ControlPanel/Settings/link-to-tabs":{"caption":"Link-to-Tabs plugin","created":"20190712133607244","modified":"20190714104631250","tags":"$:/tags/ControlPanel/Settings","type":"text/vnd.tiddlywiki","text":"<$checkbox tiddler=\"$:/plugins/wikilabs/link-to-tabs/config\" field=\"show-all-links\" checked=\"inline-block\" unchecked=\"none\" default=\"none\"> Show internal tab link for ''all tabs''</$checkbox>\n\n<$checkbox tiddler=\"$:/plugins/wikilabs/link-to-tabs/config\" field=\"show-single-link\" checked=\"inline-block\" unchecked=\"none\" default=\"inline-block\"> Show internal tab link for ''selected tabs''</$checkbox>\n\n<$checkbox tiddler=\"$:/plugins/wikilabs/link-to-tabs/config\" field=\"initial-opacity\" checked=\"0\" unchecked=\"0.7\" default=\"0.7\"> Tab links are initially hidden and need mouse hover to become visible.</$checkbox> The transition time in seconds is: <$edit-text tiddler=\"$:/plugins/wikilabs/link-to-tabs/config\" field=\"transition\" default=\"0.3\"/>\n\n<$button message=\"tm-delete-tiddler\" param=\"$:/plugins/wikilabs/link-to-tabs/config\">\nReset to Default!\n</$button>"},"$:/plugins/wikilabs/link-to-tabs/config":{"created":"20190712133008077","initial-opacity":"0.7","modified":"20190714104541701","show-all-links":"none","show-single-link":"inline-block","transition":"0.3","type":"text/vnd.tiddlywiki","text":"This tiddler is used to configure the \"Link-to-tabs\" plugin behaviour. \n\nThere are 4 fields, which are used by [[$:/plugins/wikilabs/link-to-tabs/styles]] enable and disable the internal links. \n\n* show-all-links: {{!!show-all-links}}\n* show-single-link: {{!!show-single-link}}\n* initial-opacity: {{!!initial-opacity}}\n* transition time in seconds: {{!!transition}}\n"},"$:/plugins/wikilabs/link-to-tabs/history":{"text":"V 2.0.1 - 2020-12-25\n\n* update license\n\nV 2.0.0 - 2020.12.05\n\n* Update $:/core/macros/tabs to V5.1.23\n\nV 1.1.1 - 2020.01.19\n\n* Update license link/text\n\nV 1.1.0 - 2019.07.14\n\n* Add new option: Initially hide link\n** Transition time from hidden to visible is adjustable\n* Added: \"Reset to Default\" button\n\nV 1.0.1 - 2019.02.18\n\n* link-to-tabs works in drop-down elements now.\n\nV 1.0.0 - 2019.02.14\n\n* Use core tabs-macro from TW 5.1.19\n\nV <1.0.0\n\n* Use core tabs-macro from TW 5.1.15\n"},"$:/plugins/wikilabs/link-to-tabs/icon":{"text":"<svg width=\"22pt\" height=\"22pt\" version=\"1.1\" viewBox=\"0 0 128 128\">\n<path transform=\"scale(4.36)\" d=\"m18.6 0-14.5 7.33-3.93 14.7 10.5 7.33 14.5-7.33 3.93-14.7-10.5-7.33zm0.0371 4.98c1.26-7.68e-5 2.52 0.479 3.48 1.44 1.92 1.92 1.92 5.03 0 6.96l-3.48 3.48c-1.92 1.92-5.03 1.92-6.96 0a4.9 4.9 0 0 1-1.05-1.56l0.943-0.943a1.84 1.84 0 0 1 1.17-0.535 2.45 2.45 0 0 0 0.68 1.3c0.96 0.96 2.52 0.958 3.48-0.00195l3.47-3.47c0.962-0.962 0.962-2.52 0.00195-3.48-0.96-0.96-2.52-0.958-3.48 0.00195l-2.25 2.25a5.56 5.56 0 0 0-3.37-0.0508 4.97 4.97 0 0 1 0.41-0.465l3.48-3.48c0.96-0.96 2.22-1.44 3.48-1.44zm-5.76 5.76c1.26-5.8e-5 2.52 0.481 3.48 1.44a4.9 4.9 0 0 1 1.05 1.56l-0.941 0.943a1.84 1.84 0 0 1-1.17 0.533 2.45 2.45 0 0 0-0.68-1.29c-0.96-0.96-2.52-0.96-3.48 0l-3.48 3.48c-0.962 0.962-0.96 2.52 0 3.48 0.96 0.96 2.52 0.96 3.48 0l2.25-2.25a5.56 5.56 0 0 0 3.37 0.0527 4.97 4.97 0 0 1-0.41 0.463l-3.48 3.48c-1.92 1.92-5.03 1.92-6.96 0-1.92-1.92-1.92-5.03 0-6.95l3.48-3.48c0.96-0.96 2.22-1.44 3.48-1.44z\" style=\"stroke-width:.229\"/>\n</svg>\n\n\n\n"},"$:/plugins/wikilabs/link-to-tabs/license":{"text":"[[Link-to-Tabs-Macro|https://wikilabs.github.io/#link-to-tabs]] (c) Mario Pietsch - 2016-2021\n\nhttps://opensource.org/licenses/BSD-3-Clause\n"},"$:/plugins/wikilabs/link-to-tabs/styles":{"created":"20190712133348541","modified":"20190714104306483","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":"<pre>\n\n.wltc-link-to-tab {\n display: {{$:/plugins/wikilabs/link-to-tabs/config!!show-all-links}};\n position: relative;\n top: -1em;\n left: -1.3em;\n font-size: 0.7em;\n opacity: {{$:/plugins/wikilabs/link-to-tabs/config!!initial-opacity}};\n margin-right: -1em;\n}\n\n.wltc-link-to-tab svg{\n width: 1.4em;\n height: 1.4em;\n}\n\n.wltc-link-to-tab:hover {\n opacity: 1;\n transition:opacity {{$:/plugins/wikilabs/link-to-tabs/config!!transition}}s;\n transition-timing-function: cubic-bezier(1,-0.06,.39,.89);\n}\n\n.tc-tab-selected + .wltc-link-to-tab {\n display: {{$:/plugins/wikilabs/link-to-tabs/config!!show-single-link}};\n}\n\n.tc-vertical > .wltc-link-to-tab {\n top: -1.9em;\n left: 0;\n height: 0;\n float: right;\n}\n\n.tc-search-results .wltc-link-to-tab a {\n display: contents;\n padding: 0;\n}\n\n</pre>"},"$:/plugins/wikilabs/link-to-tabs/readme":{"text":"This plugin adds a little link icon to every tab.\n\n''Important:'' This plugin changes the core tabs macro.\n\n! Lint-to-Tabs Settings\n\n{{$:/core/ui/ControlPanel/Settings/link-to-tabs}}"}}}
codes, macros, and solutions in TW
<$edit-text tiddler=<<currentTiddler>> class="tc-spell-check-preview"/>
<style>
.tc-spell-check-preview {width:100%;}
</style>
$:/plugins/kookma/solution/ui/search-in-fields
$:/config/field-search/tab/Authors
$:/temp/commander/logs/tid-2
$:/core/ui/DefaultSearchResultList
$:/plugins/kookma/solution/ui/search-in-fields
$:/core/ui/ControlPanel/Plugins
$:/plugins/kookma/commander/tiddler/uicomp/delete-tiddlers
$:/core/ui/MoreSideBar/All
$:/config/field-search/tab/Authors
$:/core/ui/DefaultSearchResultList
{"tiddlers":{"$:/themes/tiddlywiki/snowwhite/base":{"tags":"[[$:/tags/Stylesheet]]","text":"\\define sidebarbreakpoint-minus-one()\n<$text text={{{ [{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}removesuffix[px]subtract[1]addsuffix[px]] ~[{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}] }}}/>\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n.tc-sidebar-header {\n\ttext-shadow: 0 1px 0 <<colour sidebar-foreground-shadow>>;\n}\n\n.tc-tiddler-info {\n\t<<box-shadow \"inset 1px 2px 3px rgba(0,0,0,0.1)\">>\n}\n\n@media screen {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow \"1px 1px 5px rgba(0, 0, 0, 0.3)\">>\n\t}\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow none>>\n\t}\n}\n\n.tc-page-controls button svg, .tc-tiddler-controls button svg, .tc-topbar button svg {\n\t<<transition \"fill 150ms ease-in-out\">>\n}\n\n.tc-tiddler-controls button.tc-selected,\n.tc-page-controls button.tc-selected {\n\t<<filter \"drop-shadow(0px -1px 2px rgba(0,0,0,0.25))\">>\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-edit-tags {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-tiddler-frame .tc-edit-tags input.tc-edit-texteditor {\n\t<<box-shadow \"none\">>\n\tborder: none;\n\toutline: none;\n}\n\ntextarea.tc-edit-texteditor {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\n}\n\ncanvas.tc-edit-bitmapeditor {\n\t<<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-drop-down {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-block-dropdown {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-modal {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n}\n\n.tc-modal-footer {\n\tborder-radius: 0 0 6px 6px;\n\t<<box-shadow \"inset 0 1px 0 #fff\">>;\n}\n\n\n.tc-alert {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.6)\">>\n}\n\n.tc-notification {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n\ttext-shadow: 0 1px 0 rgba(255,255,255, 0.8);\n}\n\n.tc-sidebar-lists .tc-tab-set .tc-tab-divider {\n\tborder-top: none;\n\theight: 1px;\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.0) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.01) 0%, rgba(0,0,0,0.1) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.05) 0%, rgba(255,255,255,0.05) 100%\">>\n}\n\n.tc-message-box img {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n\n.tc-plugin-info {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n"}}}
{"tiddlers":{"$:/themes/tiddlywiki/vanilla/themetweaks":{"tags":"$:/tags/ControlPanel/Appearance","caption":"{{$:/language/ThemeTweaks/ThemeTweaks}}","text":"\\define lingo-base() $:/language/ThemeTweaks/\n\n\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n\\define backgroundimage-dropdown()\n<div class=\"tc-drop-down-wrapper\">\n<$button popup=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"\n\t$value=<<imageTitle>>\n/>\n\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n\\end\n\n\\define backgroundimageattachment-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\" default=\"scroll\">\n<option value=\"scroll\"><<lingo Settings/BackgroundImageAttachment/Scroll>></option>\n<option value=\"fixed\"><<lingo Settings/BackgroundImageAttachment/Fixed>></option>\n</$select>\n\\end\n\n\\define backgroundimagesize-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\" default=\"scroll\">\n<option value=\"auto\"><<lingo Settings/BackgroundImageSize/Auto>></option>\n<option value=\"cover\"><<lingo Settings/BackgroundImageSize/Cover>></option>\n<option value=\"contain\"><<lingo Settings/BackgroundImageSize/Contain>></option>\n</$select>\n\\end\n\n<<lingo ThemeTweaks/Hint>>\n\n! <<lingo Options>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><<lingo Options/SidebarLayout>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><option value=\"fixed-fluid\"><<lingo Options/SidebarLayout/Fixed-Fluid>></option><option value=\"fluid-fixed\"><<lingo Options/SidebarLayout/Fluid-Fixed>></option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><<lingo Options/StickyTitles>></$link><br>//<<lingo Options/StickyTitles/Hint>>// |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><option value=\"no\">{{$:/language/No}}</option><option value=\"yes\">{{$:/language/Yes}}</option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><<lingo Options/CodeWrapping>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><option value=\"pre\">{{$:/language/No}}</option><option value=\"pre-wrap\">{{$:/language/Yes}}</option></$select> |\n\n! <<lingo Settings>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"><<lingo Settings/FontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\"><<lingo Settings/CodeFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\"><<lingo Settings/EditorFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"><<lingo Settings/BackgroundImage>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" default=\"\" tag=\"input\"/> |<<backgroundimage-dropdown>> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\"><<lingo Settings/BackgroundImageAttachment>></$link> |<<backgroundimageattachment-dropdown>> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\"><<lingo Settings/BackgroundImageSize>></$link> |<<backgroundimagesize-dropdown>> | |\n\n! <<lingo Metrics>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\"><<lingo Metrics/FontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\"><<lingo Metrics/LineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\"><<lingo Metrics/BodyFontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\"><<lingo Metrics/BodyLineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\"><<lingo Metrics/StoryLeft>></$link><br>//<<lingo Metrics/StoryLeft/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\"><<lingo Metrics/StoryTop>></$link><br>//<<lingo Metrics/StoryTop/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\"><<lingo Metrics/StoryRight>></$link><br>//<<lingo Metrics/StoryRight/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\"><<lingo Metrics/StoryWidth>></$link><br>//<<lingo Metrics/StoryWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"><<lingo Metrics/TiddlerWidth>></$link><br>//<<lingo Metrics/TiddlerWidth/Hint>>//<br> |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\"><<lingo Metrics/SidebarBreakpoint>></$link><br>//<<lingo Metrics/SidebarBreakpoint/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\"><<lingo Metrics/SidebarWidth>></$link><br>//<<lingo Metrics/SidebarWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\" default=\"\" tag=\"input\"/> |\n"},"$:/themes/tiddlywiki/vanilla/base":{"tags":"[[$:/tags/Stylesheet]]","text":"\\define custom-background-datauri()\n<$set name=\"background\" value={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}>\n<$list filter=\"[<background>is[image]]\">\n`background: url(`\n<$list filter=\"[<background>!has[_canonical_uri]]\">\n`\"`<$macrocall $name=\"datauri\" title={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}/>`\"`\n</$list>\n<$list filter=\"[<background>has[_canonical_uri]]\">\n`\"`<$view tiddler={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}} field=\"_canonical_uri\"/>`\"`\n</$list>\n`) center center;`\n`background-attachment: `{{$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment}}`;\n-webkit-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-moz-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-o-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\nbackground-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;`\n</$list>\n</$set>\n\\end\n\n\\define sidebarbreakpoint()\n<$text text={{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}/>\n\\end\n\n\\define sidebarbreakpoint-minus-one()\n<$text text={{{ [{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}removesuffix[px]subtract[1]addsuffix[px]] ~[{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}] }}}/>\n\\end\n\n\\define if-fluid-fixed(text,hiddenSidebarText)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" type=\"match\" text=\"fluid-fixed\">\n$text$\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">\n$hiddenSidebarText$\n</$reveal>\n</$reveal>\n\\end\n\n\\define if-editor-height-fixed(then,else)\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n$then$\n</$reveal>\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n$else$\n</$reveal>\n\\end\n\n\\define set-type-selector-min-width()\n<$set name=\"typeLength\" value={{{ [all[shadows+tiddlers]prefix[$:/language/Docs/Types/]get[name]length[]maxall[]] }}}>\n\n\t.tc-type-selector-dropdown-wrapper {\n\t\tmin-width: calc(<<typeLength>>ch + 4em);\n\t}\n\n\t.tc-type-selector-dropdown-wrapper input.tc-edit-typeeditor {\n\t\tmin-width: <<typeLength>>ch;\n\t}\n\n</$set>\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\n\n/*\n** Start with the normalize CSS reset, and then belay some of its effects\n*/\n\n{{$:/themes/tiddlywiki/vanilla/reset}}\n\n*, input[type=\"search\"] {\n\tbox-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n}\n\ninput[type=\"search\"] {\n outline-offset: initial;\n}\n\nhtml button {\n\tline-height: 1.2;\n\tcolor: <<colour button-foreground>>;\n\tfill: <<colour button-foreground>>;\n\tbackground: <<colour button-background>>;\n\tborder-color: <<colour button-border>>;\n}\n\n/*\n** Basic element styles\n*/\n\nhtml, body {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/fontfamily}};\n\ttext-rendering: optimizeLegibility; /* Enables kerning and ligatures etc. */\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\nhtml:-webkit-full-screen {\n\tbackground-color: <<colour page-background>>;\n}\n\nbody.tc-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/lineheight}};\n\tword-wrap: break-word;\n\t<<custom-background-datauri>>\n\tcolor: <<colour foreground>>;\n\tbackground-color: <<colour page-background>>;\n\tfill: <<colour foreground>>;\n}\n\n<<if-background-attachment \"\"\"\n\nbody.tc-body {\n background-color: transparent;\n}\n\n\"\"\">>\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n\tfont-size: 2em;\n}\n\nh1, h2, h3, h4, h5, h6 {\n\tline-height: 1.2;\n\tfont-weight: 300;\n}\n\npre {\n\tdisplay: block;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n\tword-break: normal;\n\tword-wrap: break-word;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tbackground-color: <<colour pre-background>>;\n\tborder: 1px solid <<colour pre-border>>;\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\ncode {\n\tcolor: <<colour code-foreground>>;\n\tbackground-color: <<colour code-background>>;\n\tborder: 1px solid <<colour code-border>>;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\nblockquote {\n\tborder-left: 5px solid <<colour blockquote-bar>>;\n\tmargin-left: 25px;\n\tpadding-left: 10px;\n\tquotes: \"\\201C\"\"\\201D\"\"\\2018\"\"\\2019\";\n}\n\nblockquote > div {\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n}\n\nblockquote.tc-big-quote {\n\tfont-family: Georgia, serif;\n\tposition: relative;\n\tbackground: <<colour pre-background>>;\n\tborder-left: none;\n\tmargin-left: 50px;\n\tmargin-right: 50px;\n\tpadding: 10px;\n border-radius: 8px;\n}\n\nblockquote.tc-big-quote cite:before {\n\tcontent: \"\\2014 \\2009\";\n}\n\nblockquote.tc-big-quote:before {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: open-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n left: -50px;\n top: 42px;\n}\n\nblockquote.tc-big-quote:after {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: close-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n right: -80px;\n bottom: -20px;\n}\n\ndl dt {\n\tfont-weight: bold;\n\tmargin-top: 6px;\n}\n\nbutton, textarea, input, select {\n\toutline-color: <<colour primary>>;\n}\n\ntextarea,\ninput[type=text],\ninput[type=search],\ninput[type=\"\"],\ninput:not([type]) {\n\tcolor: <<colour foreground>>;\n\tbackground: <<colour background>>;\n}\n\ninput[type=\"checkbox\"] {\n vertical-align: middle;\n}\n\ninput[type=\"search\"]::-webkit-search-decoration,\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-results-button,\ninput[type=\"search\"]::-webkit-search-results-decoration {\n\t-webkit-appearance:none;\n}\n\n.tc-muted {\n\tcolor: <<colour muted-foreground>>;\n}\n\nsvg.tc-image-button {\n\tpadding: 0px 1px 1px 0px;\n}\n\n.tc-icon-wrapper > svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\nkbd {\n\tdisplay: inline-block;\n\tpadding: 3px 5px;\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tcolor: <<colour foreground>>;\n\tvertical-align: middle;\n\tbackground-color: <<colour background>>;\n\tborder: solid 1px <<colour muted-foreground>>;\n\tborder-bottom-color: <<colour muted-foreground>>;\n\tborder-radius: 3px;\n\tbox-shadow: inset 0 -1px 0 <<colour muted-foreground>>;\n}\n\n::selection {\n\tbackground-color: Highlight;\n\tcolor: HighlightText;\n\tbackground-color: <<colour selection-background>>;\n\tcolor: <<colour selection-foreground>>;\n}\n\n/*\nMarkdown likes putting code elements inside pre elements\n*/\npre > code {\n\tpadding: 0;\n\tborder: none;\n\tbackground-color: inherit;\n\tcolor: inherit;\n}\n\ntable {\n\tborder: 1px solid <<colour table-border>>;\n\twidth: auto;\n\tmax-width: 100%;\n\tcaption-side: bottom;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n\t/* next 2 elements needed, since normalize 8.0.1 */\n\tborder-collapse: collapse;\n\tborder-spacing: 0;\n}\n\ntable th, table td {\n\tpadding: 0 7px 0 7px;\n\tborder-top: 1px solid <<colour table-border>>;\n\tborder-left: 1px solid <<colour table-border>>;\n}\n\ntable thead tr td, table th {\n\tbackground-color: <<colour table-header-background>>;\n\tfont-weight: bold;\n}\n\ntable tfoot tr td {\n\tbackground-color: <<colour table-footer-background>>;\n}\n\n.tc-csv-table {\n\twhite-space: nowrap;\n}\n\n.tc-tiddler-frame img,\n.tc-tiddler-frame svg,\n.tc-tiddler-frame canvas,\n.tc-tiddler-frame embed,\n.tc-tiddler-frame iframe {\n\tmax-width: 100%;\n}\n\n.tc-tiddler-body > embed,\n.tc-tiddler-body > iframe {\n\twidth: 100%;\n\theight: 600px;\n}\n\n/*\n** Links\n*/\n\nbutton.tc-tiddlylink,\na.tc-tiddlylink {\n\ttext-decoration: none;\n\tfont-weight: 500;\n\tcolor: <<colour tiddler-link-foreground>>;\n\t-webkit-user-select: inherit; /* Otherwise the draggable attribute makes links impossible to select */\n}\n\n.tc-sidebar-lists a.tc-tiddlylink {\n\tcolor: <<colour sidebar-tiddler-link-foreground>>;\n}\n\n.tc-sidebar-lists a.tc-tiddlylink:hover {\n\tcolor: <<colour sidebar-tiddler-link-foreground-hover>>;\n}\n\nbutton.tc-tiddlylink:hover,\na.tc-tiddlylink:hover {\n\ttext-decoration: underline;\n}\n\na.tc-tiddlylink-resolves {\n}\n\na.tc-tiddlylink-shadow {\n\tfont-weight: bold;\n}\n\na.tc-tiddlylink-shadow.tc-tiddlylink-resolves {\n\tfont-weight: normal;\n}\n\na.tc-tiddlylink-missing {\n\tfont-style: italic;\n}\n\na.tc-tiddlylink-external {\n\ttext-decoration: underline;\n\tcolor: <<colour external-link-foreground>>;\n\tbackground-color: <<colour external-link-background>>;\n}\n\na.tc-tiddlylink-external:visited {\n\tcolor: <<colour external-link-foreground-visited>>;\n\tbackground-color: <<colour external-link-background-visited>>;\n}\n\na.tc-tiddlylink-external:hover {\n\tcolor: <<colour external-link-foreground-hover>>;\n\tbackground-color: <<colour external-link-background-hover>>;\n}\n\n.tc-drop-down a.tc-tiddlylink:hover {\n\tcolor: <<colour tiddler-link-background>>;\n}\n\n/*\n** Drag and drop styles\n*/\n\n.tc-tiddler-dragger {\n\tposition: relative;\n\tz-index: -10000;\n}\n\n.tc-tiddler-dragger-inner {\n\tposition: absolute;\n\ttop: -1000px;\n\tleft: -1000px;\n\tdisplay: inline-block;\n\tpadding: 8px 20px;\n\tfont-size: 16.9px;\n\tfont-weight: bold;\n\tline-height: 20px;\n\tcolor: <<colour dragger-foreground>>;\n\ttext-shadow: 0 1px 0 rgba(0, 0, 0, 1);\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour dragger-background>>;\n\tborder-radius: 20px;\n}\n\n.tc-tiddler-dragger-cover {\n\tposition: absolute;\n\tbackground-color: <<colour page-background>>;\n}\n\n.tc-page-container > .tc-dropzone {\n\tmin-height: 100vh;\n}\n\n.tc-dropzone {\n\tposition: relative;\n}\n\n.tc-dropzone.tc-dragover:before {\n\tz-index: 10000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour dropzone-background>>;\n\ttext-align: center;\n\tcontent: \"<<lingo DropMessage>>\";\n}\n\n.tc-droppable > .tc-droppable-placeholder {\n\tdisplay: none;\n}\n\n.tc-droppable.tc-dragover > .tc-droppable-placeholder {\n\tdisplay: block;\n\tborder: 2px dashed <<colour dropzone-background>>;\n}\n\n.tc-draggable {\n\tcursor: move;\n}\n\n.tc-sidebar-tab-open .tc-droppable-placeholder, .tc-tagged-draggable-list .tc-droppable-placeholder,\n.tc-links-draggable-list .tc-droppable-placeholder {\n\tline-height: 2em;\n\theight: 2em;\n}\n\n.tc-sidebar-tab-open-item {\n\tposition: relative;\n}\n\n.tc-sidebar-tab-open .tc-btn-invisible.tc-btn-mini svg {\n\tfont-size: 0.7em;\n\tfill: <<colour muted-foreground>>;\n}\n\n/*\n** Plugin reload warning\n*/\n\n.tc-plugin-reload-warning {\n\tz-index: 1000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour alert-background>>;\n\ttext-align: center;\n}\n\n/*\n** Buttons\n*/\n\nbutton svg, button img, label svg, label img {\n\tvertical-align: middle;\n}\n\n.tc-btn-invisible {\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\tcursor: pointer;\n\tcolor: <<colour foreground>>;\n\tfill: <<colour foreground>>;\n}\n\n.tc-btn-boxed {\n\tfont-size: 0.6em;\n\tpadding: 0.2em;\n\tmargin: 1px;\n\tbackground: none;\n\tborder: 1px solid <<colour tiddler-controls-foreground>>;\n\tborder-radius: 0.25em;\n}\n\nhtml body.tc-body .tc-btn-boxed svg {\n\tfont-size: 1.6666em;\n}\n\n.tc-btn-boxed:hover {\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n}\n\nhtml body.tc-body .tc-btn-boxed:hover svg {\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded {\n\tfont-size: 0.5em;\n\tline-height: 2;\n\tpadding: 0em 0.3em 0.2em 0.4em;\n\tmargin: 1px;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n\tborder-radius: 2em;\n}\n\nhtml body.tc-body .tc-btn-rounded svg {\n\tfont-size: 1.6666em;\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded:hover {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour background>>;\n\tcolor: <<colour muted-foreground>>;\n}\n\nhtml body.tc-body .tc-btn-rounded:hover svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-icon svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-text {\n\tpadding: 0;\n\tmargin: 0;\n}\n\n/* used for documentation \"fake\" buttons */\n.tc-btn-standard {\n\tline-height: 1.8;\n\tcolor: #667;\n\tbackground-color: #e0e0e0;\n\tborder: 1px solid #888;\n\tpadding: 2px 1px 2px 1px;\n\tmargin: 1px 4px 1px 4px;\n}\n\n.tc-btn-big-green {\n\tdisplay: inline-block;\n\tpadding: 8px;\n\tmargin: 4px 8px 4px 8px;\n\tbackground: <<colour download-background>>;\n\tcolor: <<colour download-foreground>>;\n\tfill: <<colour download-foreground>>;\n\tborder: none;\n\tborder-radius: 2px;\n\tfont-size: 1.2em;\n\tline-height: 1.4em;\n\ttext-decoration: none;\n}\n\n.tc-btn-big-green svg,\n.tc-btn-big-green img {\n\theight: 2em;\n\twidth: 2em;\n\tvertical-align: middle;\n\tfill: <<colour download-foreground>>;\n}\n\n.tc-primary-btn {\n \tbackground: <<colour primary>>;\n}\n\n.tc-sidebar-lists input {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-sidebar-lists button {\n\tcolor: <<colour sidebar-button-foreground>>;\n\tfill: <<colour sidebar-button-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini {\n\tcolor: <<colour sidebar-muted-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini:hover {\n\tcolor: <<colour sidebar-muted-foreground-hover>>;\n}\n\n.tc-sidebar-lists button small {\n\tcolor: <<colour foreground>>;\n}\n\nbutton svg.tc-image-button, button .tc-image-button img {\n\theight: 1em;\n\twidth: 1em;\n}\n\n.tc-unfold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 100%;\n\twidth: calc(100% + 2px);\n\tmargin-left: -43px;\n\ttext-align: center;\n\tborder-top: 2px solid <<colour tiddler-info-background>>;\n\tmargin-top: 4px;\n}\n\n.tc-unfold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n\tborder-top: 2px solid <<colour tiddler-info-border>>;\n}\n\n.tc-unfold-banner svg, .tc-fold-banner svg {\n\theight: 0.75em;\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-unfold-banner:hover svg, .tc-fold-banner:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n.tc-fold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 23px;\n\ttext-align: center;\n\tmargin-left: -35px;\n\ttop: 6px;\n\tbottom: 6px;\n}\n\n.tc-fold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-unfold-banner {\n\t\tposition: static;\n\t\twidth: calc(100% + 59px);\n\t}\n\n\t.tc-fold-banner {\n\t\twidth: 16px;\n\t\tmargin-left: -16px;\n\t\tfont-size: 0.75em;\n\t}\n\n}\n\n/*\n** Tags and missing tiddlers\n*/\n\n.tc-tag-list-item {\n\tposition: relative;\n\tdisplay: inline-block;\n}\n\n.tc-tags-wrapper {\n\tmargin: 4px 0 14px 0;\n}\n\n.tc-tags-wrapper .tc-tag-list-item {\n\tmargin-right: 7px;\n}\n\n.tc-missing-tiddler-label {\n\tfont-style: italic;\n\tfont-weight: normal;\n\tdisplay: inline-block;\n\tfont-size: 11.844px;\n\tline-height: 14px;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n}\n\n.tc-block-tags-dropdown > .tc-btn-invisible:hover {\n\tbackground-color: <<colour primary>>;\n}\n\nbutton.tc-tag-label, span.tc-tag-label {\n\tdisplay: inline-block;\n\tpadding: 0.16em 0.7em;\n\tfont-size: 0.9em;\n\tfont-weight: 400;\n\tline-height: 1.2em;\n\tcolor: <<colour tag-foreground>>;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour tag-background>>;\n\tborder-radius: 1em;\n}\n\n.tc-sidebar-scrollable .tc-tag-label {\n\ttext-shadow: none;\n}\n\n.tc-untagged-separator {\n\twidth: 10em;\n\tleft: 0;\n\tmargin-left: 0;\n\tborder: 0;\n\theight: 1px;\n\tbackground: <<colour tab-divider>>;\n}\n\nbutton.tc-untagged-label {\n\tbackground-color: <<colour untagged-background>>;\n}\n\n.tc-tag-label svg, .tc-tag-label img {\n\theight: 1em;\n\twidth: 1em;\n\tmargin-right: 3px; \n\tmargin-bottom: 1px;\n\tvertical-align: bottom;\n}\n\n.tc-edit-tags button.tc-remove-tag-button svg {\n\tfont-size: 0.7em;\n\tvertical-align: middle;\n}\n\n.tc-tag-manager-table .tc-tag-label {\n\twhite-space: normal;\n}\n\n.tc-tag-manager-tag {\n\twidth: 100%;\n}\n\nbutton.tc-btn-invisible.tc-remove-tag-button {\n\toutline: none;\n}\n\n.tc-tag-button-selected,\n.tc-list-item-selected a.tc-tiddlylink, a.tc-list-item-selected {\n\tbackground-color: <<colour primary>>;\n\tcolor: <<colour tiddler-background>>;\n}\n\n/*\n** Page layout\n*/\n\n.tc-topbar {\n\tposition: fixed;\n\tz-index: 1200;\n}\n\n.tc-topbar-left {\n\tleft: 29px;\n\ttop: 5px;\n}\n\n.tc-topbar-right {\n\ttop: 5px;\n\tright: 29px;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-topbar-right {\n\t\tright: 10px;\n\t}\n\n}\n\n.tc-topbar button {\n\tpadding: 8px;\n}\n\n.tc-topbar svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-topbar button:hover svg {\n\tfill: <<colour foreground>>;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-show-sidebar-btn svg.tc-image-chevron-left, .tc-hide-sidebar-btn svg.tc-image-chevron-right {\n\t\ttransform: rotate(-90deg);\n\t}\n\n}\n\n.tc-sidebar-header {\n\tcolor: <<colour sidebar-foreground>>;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-sidebar-header .tc-title a.tc-tiddlylink-resolves {\n\tfont-weight: 300;\n}\n\n.tc-sidebar-header .tc-sidebar-lists p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-sidebar-header .tc-missing-tiddler-label {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-advanced-search input {\n\twidth: 60%;\n}\n\n.tc-search a svg {\n\twidth: 1.2em;\n\theight: 1.2em;\n\tvertical-align: middle;\n}\n\n.tc-page-controls {\n\tmargin-top: 14px;\n\tfont-size: 1.5em;\n}\n\n.tc-page-controls .tc-drop-down {\n font-size: 1rem;\n}\n\n.tc-page-controls button {\n\tmargin-right: 0.5em;\n}\n\n.tc-page-controls a.tc-tiddlylink:hover {\n\ttext-decoration: none;\n}\n\n.tc-page-controls img {\n\twidth: 1em;\n}\n\n.tc-page-controls svg {\n\tfill: <<colour sidebar-controls-foreground>>;\n}\n\n.tc-page-controls button:hover svg, .tc-page-controls a:hover svg {\n\tfill: <<colour sidebar-controls-foreground-hover>>;\n}\n\n.tc-sidebar-lists .tc-menu-list-item {\n\twhite-space: nowrap;\n}\n\n.tc-menu-list-count {\n\tfont-weight: bold;\n}\n\n.tc-menu-list-subitem {\n\tpadding-left: 7px;\n}\n\n.tc-story-river {\n\tposition: relative;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-sidebar-header {\n\t\tpadding: 14px;\n\t\tmin-height: 32px;\n\t\tmargin-top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\ttransition: min-height {{$:/config/AnimationDuration}}ms ease-in-out, padding-top {{$:/config/AnimationDuration}}ms ease-in-out, padding-bottom {{$:/config/AnimationDuration}}ms ease-in-out;\n\t}\n\t\n\t<<if-no-sidebar \"\"\"\n\n\t\t.tc-sidebar-header {\n\t\t\tmin-height: 0;\n\t\t\tpadding-top: 0;\n\t\t\tpadding-bottom: 0;\n\t\t}\n\n\t\"\"\">>\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tpadding: 0;\n\t}\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n\t.tc-message-box {\n\t\tmargin: 21px -21px 21px -21px;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tposition: fixed;\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t\tbottom: 0;\n\t\tright: 0;\n\t\toverflow-y: auto;\n\t\toverflow-x: auto;\n\t\t-webkit-overflow-scrolling: touch;\n\t\tmargin: 0 0 0 -42px;\n\t\tpadding: 71px 0 28px 42px;\n\t}\n\n\thtml[dir=\"rtl\"] .tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tright: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t}\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/storywidth}};\n\t\tpadding: 42px 42px 42px 42px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-story-river {\n\t\twidth: calc(100% - {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}});\n\t}\n\n\">>\n\n\t.tc-story-river.tc-static-story-river {\n\t\tmargin-right: 0;\n\t\tpadding-right: 42px;\n\t}\n\n}\n\n@media print {\n\n\tbody.tc-body {\n\t\tbackground-color: transparent;\n\t}\n\n\t.tc-sidebar-header, .tc-topbar {\n\t\tdisplay: none;\n\t}\n\n\t.tc-story-river {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t}\n\n\t.tc-story-river .tc-tiddler-frame {\n\t\tmargin: 0;\n\t\tborder: none;\n\t\tpadding: 0;\n\t}\n}\n\n/*\n** Tiddler styles\n*/\n\n.tc-tiddler-frame {\n\tposition: relative;\n\tmargin-bottom: 28px;\n\tbackground-color: <<colour tiddler-background>>;\n\tborder: 1px solid <<colour tiddler-border>>;\n}\n\n{{$:/themes/tiddlywiki/vanilla/sticky}}\n\n.tc-tiddler-info {\n\toverflow: hidden;\n\tpadding: 14px 42px 14px 42px;\n\tbackground-color: <<colour tiddler-info-background>>;\n\tborder-top: 1px solid <<colour tiddler-info-border>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-border>>;\n}\n\n.tc-tiddler-info p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-tiddler-info .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour tiddler-info-tab-background>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-tab-background>>;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-tiddler-info {\n\t\tpadding: 14px 14px 14px 14px;\n\t}\n\n}\n\n.tc-view-field-table {\n\twidth: 100%;\n}\n\n.tc-view-field-name {\n\twidth: 1%; /* Makes this column be as narrow as possible */\n\ttext-align: right;\n\tfont-style: italic;\n\tfont-weight: 200;\n}\n\n.tc-view-field-value {\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\t.tc-tiddler-frame {\n\t\tpadding: 14px 14px 14px 14px;\n\t\tmargin-bottom: .5em;\n\t}\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -14px 0 -14px;\n\t}\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\t.tc-tiddler-frame {\n\t\tpadding: 28px 42px 42px 42px;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}};\n\t\tborder-radius: 2px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\">>\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -42px 0 -42px;\n\t}\n}\n\n.tc-site-title,\n.tc-titlebar {\n\tfont-weight: 300;\n\tfont-size: 2.35em;\n\tline-height: 1.35em;\n\tcolor: <<colour tiddler-title-foreground>>;\n\tmargin: 0;\n}\n\n.tc-site-title {\n\tcolor: <<colour site-title-foreground>>;\n}\n\n.tc-tiddler-title-icon {\n\tvertical-align: middle;\n\tmargin-right: .1em;\n}\n\n.tc-system-title-prefix {\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-titlebar h2 {\n\tfont-size: 1em;\n\tdisplay: inline;\n}\n\n.tc-titlebar img {\n\theight: 1em;\n}\n\n.tc-subtitle {\n\tfont-size: 0.9em;\n\tcolor: <<colour tiddler-subtitle-foreground>>;\n\tfont-weight: 300;\n}\n\n.tc-subtitle .tc-tiddlylink {\n\tmargin-right: .3em;\n}\n\n.tc-tiddler-missing .tc-title {\n font-style: italic;\n font-weight: normal;\n}\n\n.tc-tiddler-frame .tc-tiddler-controls {\n\tfloat: right;\n}\n\n.tc-tiddler-controls .tc-drop-down {\n\tfont-size: 0.6em;\n}\n\n.tc-tiddler-controls .tc-drop-down .tc-drop-down {\n\tfont-size: 1em;\n}\n\n.tc-tiddler-controls > span > button,\n.tc-tiddler-controls > span > span > button,\n.tc-tiddler-controls > span > span > span > button {\n\tvertical-align: baseline;\n\tmargin-left:5px;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img,\n.tc-search button svg, .tc-search a svg {\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img {\n\theight: 0.75em;\n}\n\n.tc-search button svg, .tc-search a svg {\n height: 1.2em;\n width: 1.2em;\n margin: 0 0.25em;\n}\n\n.tc-tiddler-controls button.tc-selected svg,\n.tc-page-controls button.tc-selected svg {\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n}\n\n.tc-tiddler-controls button.tc-btn-invisible:hover svg,\n.tc-search button:hover svg, .tc-search a:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n@media print {\n\t.tc-tiddler-controls {\n\t\tdisplay: none;\n\t}\n}\n\n.tc-tiddler-help { /* Help prompts within tiddler template */\n\tcolor: <<colour muted-foreground>>;\n\tmargin-top: 14px;\n}\n\n.tc-tiddler-help a.tc-tiddlylink {\n\tcolor: <<colour very-muted-foreground>>;\n}\n\n.tc-tiddler-frame .tc-edit-texteditor {\n\twidth: 100%;\n\tmargin: 4px 0 4px 0;\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor,\n.tc-tiddler-frame textarea.tc-edit-texteditor,\n.tc-tiddler-frame iframe.tc-edit-texteditor {\n\tpadding: 3px 3px 3px 3px;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tline-height: 1.3em;\n\t-webkit-appearance: none;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor,\n.tc-tiddler-frame textarea.tc-edit-texteditor {\n\tbackground-color: <<colour tiddler-editor-background>>;\n}\n\n.tc-tiddler-frame iframe.tc-edit-texteditor {\n\tbackground-color: <<colour tiddler-background>>;\n}\n\n.tc-tiddler-frame .tc-binary-warning {\n\twidth: 100%;\n\theight: 5em;\n\ttext-align: center;\n\tpadding: 3em 3em 6em 3em;\n\tbackground: <<colour alert-background>>;\n\tborder: 1px solid <<colour alert-border>>;\n}\n\ncanvas.tc-edit-bitmapeditor {\n\tborder: 6px solid <<colour tiddler-editor-border-image>>;\n\tcursor: crosshair;\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tmargin-top: 6px;\n\tmargin-bottom: 6px;\n}\n\n.tc-edit-bitmapeditor-width {\n\tdisplay: block;\n}\n\n.tc-edit-bitmapeditor-height {\n\tdisplay: block;\n}\n\n.tc-tiddler-body {\n\tclear: both;\n}\n\n.tc-tiddler-frame .tc-tiddler-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/bodylineheight}};\n}\n\n.tc-titlebar, .tc-tiddler-edit-title {\n\toverflow: hidden; /* https://github.com/Jermolene/TiddlyWiki5/issues/282 */\n}\n\nhtml body.tc-body.tc-single-tiddler-window {\n\tmargin: 1em;\n\tbackground: <<colour tiddler-background>>;\n}\n\n.tc-single-tiddler-window img,\n.tc-single-tiddler-window svg,\n.tc-single-tiddler-window canvas,\n.tc-single-tiddler-window embed,\n.tc-single-tiddler-window iframe {\n\tmax-width: 100%;\n}\n\n/*\n** Editor\n*/\n\n.tc-editor-toolbar {\n\tmargin-top: 8px;\n}\n\n.tc-editor-toolbar button {\n\tvertical-align: middle;\n\tbackground-color: <<colour tiddler-controls-foreground>>;\n\tcolor: <<colour tiddler-controls-foreground-selected>>;\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n\tborder-radius: 4px;\n\tpadding: 3px;\n\tmargin: 2px 0 2px 4px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-adjunct {\n\tmargin-left: 1px;\n\twidth: 1em;\n\tborder-radius: 8px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-start-group {\n\tmargin-left: 11px;\n}\n\n.tc-editor-toolbar button.tc-selected {\n\tbackground-color: <<colour primary>>;\n}\n\n.tc-editor-toolbar button svg {\n\twidth: 1.6em;\n\theight: 1.2em;\n}\n\n.tc-editor-toolbar button:hover {\n\tbackground-color: <<colour tiddler-controls-foreground-selected>>;\n\tfill: <<colour background>>;\n\tcolor: <<colour background>>;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more {\n\twhite-space: normal;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more button {\n\tdisplay: inline-block;\n\tpadding: 3px;\n\twidth: auto;\n}\n\n.tc-editor-toolbar .tc-search-results {\n\tpadding: 0;\n}\n\n/*\n** Adjustments for fluid-fixed mode\n*/\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n<<if-fluid-fixed text:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 0;\n\t\tposition: relative;\n\t\twidth: auto;\n\t\tleft: 0;\n\t\tmargin-left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\tmargin-right: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tbottom: 0;\n\t\tright: 0;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 42px);\n\t}\n\n\"\"\" hiddenSidebarText:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 3em;\n\t\tmargin-right: 0;\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 84px);\n\t}\n\n\"\"\">>\n\n}\n\n/*\n** Toolbar buttons\n*/\n\n.tc-page-controls svg.tc-image-new-button {\n fill: <<colour toolbar-new-button>>;\n}\n\n.tc-page-controls svg.tc-image-options-button {\n fill: <<colour toolbar-options-button>>;\n}\n\n.tc-page-controls svg.tc-image-save-button {\n fill: <<colour toolbar-save-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-info-button {\n fill: <<colour toolbar-info-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-edit-button {\n fill: <<colour toolbar-edit-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-close-button {\n fill: <<colour toolbar-close-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-delete-button {\n fill: <<colour toolbar-delete-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-cancel-button {\n fill: <<colour toolbar-cancel-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-done-button {\n fill: <<colour toolbar-done-button>>;\n}\n\n/*\n** Tiddler edit mode\n*/\n\n.tc-tiddler-edit-frame em.tc-edit {\n\tcolor: <<colour muted-foreground>>;\n\tfont-style: normal;\n}\n\n.tc-edit-type-dropdown a.tc-tiddlylink-missing {\n\tfont-style: normal;\n}\n\n.tc-type-selector .tc-edit-typeeditor {\n\twidth: auto;\n}\n\n.tc-type-selector-dropdown-wrapper {\n\tdisplay: inline-block;\n}\n\n<<set-type-selector-min-width>>\n\n.tc-edit-tags {\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tpadding: 4px 8px 4px 8px;\n}\n\n.tc-edit-add-tag {\n\tdisplay: inline-block;\n}\n\n.tc-edit-add-tag .tc-add-tag-name input {\n\twidth: 50%;\n}\n\n.tc-edit-add-tag .tc-keyboard {\n\tdisplay:inline;\n}\n\n.tc-edit-tags .tc-tag-label {\n\tdisplay: inline-block;\n}\n\n.tc-edit-tags-list {\n\tmargin: 14px 0 14px 0;\n}\n\n.tc-remove-tag-button {\n\tpadding-left: 4px;\n}\n\n.tc-tiddler-preview {\n\toverflow: auto;\n}\n\n.tc-tiddler-preview-preview {\n\tfloat: right;\n\twidth: 49%;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tmargin: 4px 0 3px 3px;\n\tpadding: 3px 3px 3px 3px;\n}\n\n<<if-editor-height-fixed then:\"\"\"\n\n.tc-tiddler-preview-preview {\n\toverflow-y: scroll;\n\theight: {{$:/config/TextEditor/EditorHeight/Height}};\n}\n\n\"\"\">>\n\n.tc-tiddler-frame .tc-tiddler-preview .tc-edit-texteditor {\n\twidth: 49%;\n}\n\n.tc-tiddler-frame .tc-tiddler-preview canvas.tc-edit-bitmapeditor {\n\tmax-width: 49%;\n}\n\n.tc-edit-fields {\n\twidth: 100%;\n}\n\n.tc-edit-fields.tc-edit-fields-small {\n\tmargin-top: 0;\n\tmargin-bottom: 0;\n}\n\n.tc-edit-fields table, .tc-edit-fields tr, .tc-edit-fields td {\n\tborder: none;\n\tpadding: 4px;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(odd) {\n\tbackground-color: <<colour tiddler-editor-fields-odd>>;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(even) {\n\tbackground-color: <<colour tiddler-editor-fields-even>>;\n}\n\n.tc-edit-field-name {\n\ttext-align: right;\n}\n\n.tc-edit-field-value input {\n\twidth: 100%;\n}\n\n.tc-edit-field-remove {\n}\n\n.tc-edit-field-remove svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n\tvertical-align: middle;\n}\n\n.tc-edit-field-add-name-wrapper input.tc-edit-texteditor {\n\twidth: auto;\n}\n\n.tc-edit-field-add-name-wrapper {\n\tdisplay: inline-block;\n}\n\n.tc-edit-field-add-value {\n\tdisplay: inline-block;\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n\t.tc-edit-field-add-value {\n\t\twidth: 35%;\n\t}\n\n}\n\n.tc-edit-field-add-button {\n\tdisplay: inline-block;\n\twidth: 10%;\n}\n\n/*\n** Storyview Classes\n*/\n\n.tc-viewswitcher .tc-image-button {\n\tmargin-right: .3em;\n}\n\n.tc-storyview-zoomin-tiddler {\n\tposition: absolute;\n\tdisplay: block;\n\twidth: 100%;\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n\t.tc-storyview-zoomin-tiddler {\n\t\twidth: calc(100% - 84px);\n\t}\n\n}\n\n/*\n** Dropdowns\n*/\n\n.tc-btn-dropdown {\n\ttext-align: left;\n}\n\n.tc-btn-dropdown svg, .tc-btn-dropdown img {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-drop-down-wrapper {\n\tposition: relative;\n}\n\n.tc-drop-down {\n\tmin-width: 380px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\ttext-shadow: none;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-drop-down {\n\tmargin-left: 14px;\n}\n\n.tc-drop-down button svg, .tc-drop-down a svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-drop-down button.tc-btn-invisible:hover svg {\n\tfill: <<colour background>>;\n}\n\n.tc-drop-down .tc-drop-down-info {\n\tpadding-left: 14px;\n}\n\n.tc-drop-down p {\n\tpadding: 0 14px 0 14px;\n}\n\n.tc-drop-down svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-drop-down img {\n\twidth: 1em;\n}\n\n.tc-drop-down a, .tc-drop-down button {\n\tdisplay: block;\n\tpadding: 0 14px 0 14px;\n\twidth: 100%;\n\ttext-align: left;\n\tcolor: <<colour foreground>>;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-tab-set .tc-tab-buttons button {\n\tdisplay: inline-block;\n width: auto;\n margin-bottom: 0px;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.tc-drop-down .tc-prompt {\n\tpadding: 0 14px;\n}\n\n.tc-drop-down .tc-chooser {\n\tborder: none;\n}\n\n.tc-drop-down .tc-chooser .tc-swatches-horiz {\n\tfont-size: 0.4em;\n\tpadding-left: 1.2em;\n}\n\n.tc-drop-down .tc-file-input-wrapper {\n\twidth: 100%;\n}\n\n.tc-drop-down .tc-file-input-wrapper button {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-drop-down a:hover, .tc-drop-down button:hover, .tc-drop-down .tc-file-input-wrapper:hover button {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-drop-down .tc-tab-buttons button {\n\tbackground-color: <<colour dropdown-tab-background>>;\n}\n\n.tc-drop-down .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour dropdown-tab-background-selected>>;\n\tborder-bottom: 1px solid <<colour dropdown-tab-background-selected>>;\n}\n\n.tc-drop-down-bullet {\n\tdisplay: inline-block;\n\twidth: 0.5em;\n}\n\n.tc-drop-down .tc-tab-contents a {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-block-dropdown-wrapper {\n\tposition: relative;\n}\n\n.tc-block-dropdown {\n\tposition: absolute;\n\tmin-width: 220px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\tz-index: 1000;\n\ttext-shadow: none;\n}\n\n.tc-block-dropdown.tc-search-drop-down {\n\tmargin-left: -12px;\n}\n\n.tc-block-dropdown a {\n\tdisplay: block;\n\tpadding: 4px 14px 4px 14px;\n}\n\n.tc-block-dropdown.tc-search-drop-down a {\n\tdisplay: block;\n\tpadding: 0px 10px 0px 10px;\n}\n\n.tc-drop-down .tc-dropdown-item-plain,\n.tc-block-dropdown .tc-dropdown-item-plain {\n\tpadding: 4px 14px 4px 7px;\n}\n\n.tc-drop-down .tc-dropdown-item,\n.tc-block-dropdown .tc-dropdown-item {\n\tpadding: 4px 14px 4px 7px;\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-block-dropdown a.tc-tiddlylink:hover {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-search-results {\n\tpadding: 0 7px 0 7px;\n}\n\n.tc-image-chooser, .tc-colour-chooser {\n\twhite-space: normal;\n}\n\n.tc-image-chooser a,\n.tc-colour-chooser a {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\ttext-align: center;\n\tposition: relative;\n}\n\n.tc-image-chooser a {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 2px;\n\tmargin: 2px;\n\twidth: 4em;\n\theight: 4em;\n}\n\n.tc-colour-chooser a {\n\tpadding: 3px;\n\twidth: 2em;\n\theight: 2em;\n\tvertical-align: middle;\n}\n\n.tc-image-chooser a:hover,\n.tc-colour-chooser a:hover {\n\tbackground: <<colour primary>>;\n\tpadding: 0px;\n\tborder: 3px solid <<colour primary>>;\n}\n\n.tc-image-chooser a svg,\n.tc-image-chooser a img {\n\tdisplay: inline-block;\n\twidth: auto;\n\theight: auto;\n\tmax-width: 3.5em;\n\tmax-height: 3.5em;\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tleft: 0;\n\tright: 0;\n\tmargin: auto;\n}\n\n/*\n** Modals\n*/\n\n.tc-modal-wrapper {\n\tposition: fixed;\n\toverflow: auto;\n\toverflow-y: scroll;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 900;\n}\n\n.tc-modal-backdrop {\n\tposition: fixed;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 1000;\n\tbackground-color: <<colour modal-backdrop>>;\n}\n\n.tc-modal {\n\tz-index: 1100;\n\tbackground-color: <<colour modal-background>>;\n\tborder: 1px solid <<colour modal-border>>;\n}\n\n@media (max-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 1em;\n\t\tleft: 1em;\n\t\tright: 1em;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n@media (min-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 2em;\n\t\tleft: 25%;\n\t\twidth: 50%;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n.tc-modal-header {\n\tpadding: 9px 15px;\n\tborder-bottom: 1px solid <<colour modal-header-border>>;\n}\n\n.tc-modal-header h3 {\n\tmargin: 0;\n\tline-height: 30px;\n}\n\n.tc-modal-header img, .tc-modal-header svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-modal-body {\n\tpadding: 15px;\n}\n\n.tc-modal-footer {\n\tpadding: 14px 15px 15px;\n\tmargin-bottom: 0;\n\ttext-align: right;\n\tbackground-color: <<colour modal-footer-background>>;\n\tborder-top: 1px solid <<colour modal-footer-border>>;\n}\n\n\n/*\n** Centered modals\n*/\n.tc-modal-centered .tc-modal {\n\twidth: auto;\n\ttop: 50%;\n\tleft: 50%;\n\ttransform: translate(-50%, -50%) !important;\n}\n\n/*\n** Notifications\n*/\n\n.tc-notification {\n\tposition: fixed;\n\ttop: 14px;\n\tright: 42px;\n\tz-index: 1300;\n\tmax-width: 280px;\n\tpadding: 0 14px 0 14px;\n\tbackground-color: <<colour notification-background>>;\n\tborder: 1px solid <<colour notification-border>>;\n}\n\n/*\n** Tabs\n*/\n\n.tc-tab-set.tc-vertical {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tab-buttons {\n\tfont-size: 0.85em;\n\tpadding-top: 1em;\n\tmargin-bottom: -2px;\n}\n\n.tc-tab-buttons.tc-vertical {\n\tz-index: 100;\n\tdisplay: block;\n\tpadding-top: 14px;\n\tvertical-align: top;\n\ttext-align: right;\n\tmargin-bottom: inherit;\n\tmargin-right: -1px;\n\tmax-width: 33%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n}\n\n.tc-tab-buttons button.tc-tab-selected {\n\tcolor: <<colour tab-foreground-selected>>;\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-left: 1px solid <<colour tab-border-selected>>;\n\tborder-top: 1px solid <<colour tab-border-selected>>;\n\tborder-right: 1px solid <<colour tab-border-selected>>;\n}\n\n.tc-tab-buttons button {\n\tcolor: <<colour tab-foreground>>;\n\tpadding: 3px 5px 3px 5px;\n\tmargin-right: 0.3em;\n\tfont-weight: 300;\n\tborder: none;\n\tbackground: inherit;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-right: 1px solid <<colour tab-border>>;\n\tborder-top-left-radius: 2px;\n\tborder-top-right-radius: 2px;\n\tborder-bottom-left-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.tc-tab-buttons.tc-vertical button {\n\tdisplay: block;\n\twidth: 100%;\n\tmargin-top: 3px;\n\tmargin-right: 0;\n\ttext-align: right;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tborder-right: none;\n\tborder-top-left-radius: 2px;\n\tborder-bottom-left-radius: 2px;\n\tborder-top-right-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.tc-tab-buttons.tc-vertical button.tc-tab-selected {\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-right: 1px solid <<colour tab-background-selected>>;\n}\n\n.tc-tab-divider {\n\tborder-top: 1px solid <<colour tab-divider>>;\n}\n\n.tc-tab-divider.tc-vertical {\n\tdisplay: none;\n}\n\n.tc-tab-content {\n\tmargin-top: 14px;\n}\n\n.tc-tab-content.tc-vertical {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-top: 0;\n\tpadding-left: 14px;\n\tborder-left: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 70%;\n\tflex: 1 0 70%;\n\toverflow: auto;\n}\n\n.tc-sidebar-lists .tc-tab-buttons {\n\tmargin-bottom: -1px;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tcolor: <<colour sidebar-tab-foreground-selected>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border-selected>>;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button {\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tcolor: <<colour sidebar-tab-foreground>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border>>;\n}\n\n.tc-sidebar-lists .tc-tab-divider {\n\tborder-top: 1px solid <<colour sidebar-tab-divider>>;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\tdisplay: block;\n\twidth: 100%;\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tborder-top: none;\n\tborder-left: none;\n\tborder-bottom: none;\n\tborder-right: 1px solid #ccc;\n\tmargin-bottom: inherit;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tborder: none;\n}\n\n/*\n** Manager\n*/\n\n.tc-manager-wrapper {\n\t\n}\n\n.tc-manager-controls {\n\t\n}\n\n.tc-manager-control {\n\tmargin: 0.5em 0;\n}\n\n.tc-manager-list {\n\twidth: 100%;\n\tborder-top: 1px solid <<colour muted-foreground>>;\n\tborder-left: 1px solid <<colour muted-foreground>>;\n\tborder-right: 1px solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item {\n\n}\n\n.tc-manager-list-item-heading {\n display: block;\n width: 100%;\n text-align: left;\t\n\tborder-bottom: 1px solid <<colour muted-foreground>>;\n\tpadding: 3px;\n}\n\n.tc-manager-list-item-heading-selected {\n\tfont-weight: bold;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n\tbackground-color: <<colour foreground>>;\n}\n\n.tc-manager-list-item-heading:hover {\n\tbackground: <<colour primary>>;\n\tcolor: <<colour background>>;\n}\n\n.tc-manager-list-item-content {\n\tdisplay: flex;\n}\n\n.tc-manager-list-item-content-sidebar {\n flex: 1 0;\n background: <<colour tiddler-editor-background>>;\n border-right: 0.5em solid <<colour muted-foreground>>;\n border-bottom: 0.5em solid <<colour muted-foreground>>;\n white-space: nowrap;\n}\n\n.tc-manager-list-item-content-item-heading {\n\tdisplay: block;\n\twidth: 100%;\n\ttext-align: left;\n background: <<colour muted-foreground>>;\n\ttext-transform: uppercase;\n\tfont-size: 0.6em;\n\tfont-weight: bold;\n padding: 0.5em 0 0.5em 0;\n}\n\n.tc-manager-list-item-content-item-body {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-manager-list-item-content-item-body > pre {\n\tmargin: 0.5em 0 0.5em 0;\n\tborder: none;\n\tbackground: inherit;\n}\n\n.tc-manager-list-item-content-tiddler {\n flex: 3 1;\n border-left: 0.5em solid <<colour muted-foreground>>;\n border-right: 0.5em solid <<colour muted-foreground>>;\n border-bottom: 0.5em solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item-content-item-body > table {\n\tborder: none;\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.tc-manager-list-item-content-item-body > table td {\n\tborder: none;\n}\n\n.tc-manager-icon-editor > button {\n\twidth: 100%;\n}\n\n.tc-manager-icon-editor > button > svg,\n.tc-manager-icon-editor > button > button {\n\twidth: 100%;\n\theight: auto;\n}\n\n/*\n** Import table\n*/\n\n.tc-import-table {\n\twidth: 100%;\n}\n\n.tc-import-table svg.tc-image-edit-button {\n\tmax-width: unset;\n}\n\n.tc-import-table th:first-of-type {\n\twidth: 10%;\n}\n\n.tc-import-table th:last-of-type {\n\twidth: 30%;\n}\n\n.tc-import-table .tc-row-disabled {\n\tbackground: <<colour very-muted-foreground>>10;\n\topacity: 0.8;\n}\n\n.tc-import-table .tc-row-warning {\n\tbackground: <<colour diff-delete-background>>50;\n}\n\n/*\n** Alerts\n*/\n\n.tc-alerts {\n\tposition: fixed;\n\ttop: 28px;\n\tleft: 0;\n\tright: 0;\n\tmax-width: 50%;\n\tz-index: 20000;\n}\n\n.tc-alert {\n\tposition: relative;\n\tmargin: 14px;\n\tpadding: 7px;\n\tborder: 1px solid <<colour alert-border>>;\n\tbackground-color: <<colour alert-background>>;\n}\n\n.tc-alert-toolbar {\n\tposition: absolute;\n\ttop: 7px;\n\tright: 7px;\n line-height: 0;\n}\n\n.tc-alert-toolbar svg {\n\tfill: <<colour alert-muted-foreground>>;\n}\n\n.tc-alert-subtitle {\n\tcolor: <<colour alert-muted-foreground>>;\n\tfont-weight: bold;\n font-size: 0.8em;\n margin-bottom: 0.5em;\n}\n\n.tc-alert-body > p {\n\tmargin: 0;\n}\n\n.tc-alert-highlight {\n\tcolor: <<colour alert-highlight>>;\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n\t.tc-static-alert {\n\t\tposition: relative;\n\t}\n\n\t.tc-static-alert-inner {\n\t\tposition: absolute;\n\t\tz-index: 100;\n\t}\n\n}\n\n.tc-static-alert-inner {\n\tpadding: 0 2px 2px 42px;\n\tcolor: <<colour static-alert-foreground>>;\n}\n\n/*\n** Floating drafts list\n*/\n\n.tc-drafts-list {\n\tz-index: 2000;\n\tposition: fixed;\n\tfont-size: 0.8em;\n\tleft: 0;\n\tbottom: 0;\n}\n\n.tc-drafts-list a {\n\tmargin: 0 0.5em;\n\tpadding: 4px 4px;\n\tborder-top-left-radius: 4px;\n\tborder-top-right-radius: 4px;\n\tborder: 1px solid <<colour background>>;\n\tborder-bottom-none;\n\tbackground: <<colour dirty-indicator>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n}\n\n.tc-drafts-list a:hover {\n\ttext-decoration: none;\n\tbackground: <<colour foreground>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n}\n\n.tc-drafts-list a svg {\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: text-bottom;\n}\n\n/*\n** Control panel\n*/\n\n.tc-control-panel td {\n\tpadding: 4px;\n}\n\n.tc-control-panel table, .tc-control-panel table input, .tc-control-panel table textarea {\n\twidth: 100%;\n}\n\n.tc-plugin-info {\n\tdisplay: flex;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tfill: <<colour muted-foreground>>;\n\tbackground-color: <<colour background>>;\n\tmargin: 0.5em 0 0.5em 0;\n\tpadding: 4px;\n align-items: center;\n}\n\n.tc-plugin-info-sub-plugins .tc-plugin-info {\n margin: 0.5em;\n\tbackground: <<colour background>>;\n}\n\n.tc-plugin-info-sub-plugin-indicator {\n\tmargin: -16px 1em 0 2em;\n}\n\n.tc-plugin-info-sub-plugin-indicator button {\n\tcolor: <<colour background>>;\n\tbackground: <<colour foreground>>;\n\tborder-radius: 8px;\n padding: 2px 7px;\n font-size: 0.75em;\n}\n\n.tc-plugin-info-sub-plugins .tc-plugin-info-dropdown {\n\tmargin-left: 1em;\n\tmargin-right: 1em;\n}\n\n.tc-plugin-info-disabled {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n\tbackground: repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n}\n\n.tc-plugin-info-disabled:hover {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n\tbackground: repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n}\n\na.tc-tiddlylink.tc-plugin-info:hover {\n\ttext-decoration: none;\n\tbackground-color: <<colour primary>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour foreground>>;\n}\n\na.tc-tiddlylink.tc-plugin-info:hover > .tc-plugin-info-chunk > svg {\n\tfill: <<colour background>>;\n}\n\n.tc-plugin-info-chunk {\n margin: 2px;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-toggle {\n\tflex-grow: 0;\n\tflex-shrink: 0;\n\tline-height: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-icon {\n\tflex-grow: 0;\n\tflex-shrink: 0;\n\tline-height: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description {\n\tflex-grow: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-buttons {\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tflex-grow: 0;\n\tflex-shrink: 0;\n text-align: right;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description h1 {\n\tfont-size: 1em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description h2 {\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description div {\n\tfont-size: 0.7em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-toggle img, .tc-plugin-info-chunk.tc-plugin-info-toggle svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-icon img, .tc-plugin-info-chunk.tc-plugin-info-icon svg {\n\twidth: 2em;\n\theight: 2em;\n}\n\n.tc-plugin-info-dropdown {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour background>>;\n\tmargin-top: -8px;\n}\n\n.tc-plugin-info-dropdown-message {\n\tbackground: <<colour message-background>>;\n\tpadding: 0.5em 1em 0.5em 1em;\n\tfont-weight: bold;\n\tfont-size: 0.8em;\n}\n\n.tc-plugin-info-dropdown-body {\n\tpadding: 1em 1em 0 1em;\n\tbackground: <<colour background>>;\n}\n\n.tc-plugin-info-sub-plugins {\n\tpadding: 0.5em;\n margin: 0 1em 1em 1em;\n\tbackground: <<colour notification-background>>;\n}\n\n.tc-install-plugin {\n\tfont-weight: bold;\n\tbackground: green;\n\tcolor: white;\n\tfill: white;\n\tborder-radius: 4px;\n\tpadding: 3px;\n}\n\n.tc-install-plugin.tc-reinstall-downgrade {\n\tbackground: red;\n}\n\n.tc-install-plugin.tc-reinstall {\n\tbackground: blue;\n}\n\n.tc-install-plugin.tc-reinstall-upgrade {\n\tbackground: orange;\n}\n\n.tc-check-list {\n\tline-height: 2em;\n}\n\n.tc-check-list .tc-image-button {\n\theight: 1.5em;\n}\n\n/*\n** Message boxes\n*/\n\n.tc-message-box {\n\tborder: 1px solid <<colour message-border>>;\n\tbackground: <<colour message-background>>;\n\tpadding: 0px 21px 0px 21px;\n\tfont-size: 12px;\n\tline-height: 18px;\n\tcolor: <<colour message-foreground>>;\n}\n\n.tc-message-box svg {\n\twidth: 1em;\n\theight: 1em;\n vertical-align: text-bottom;\n}\n\n/*\n** Pictures\n*/\n\n.tc-bordered-image {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 5px;\n\tmargin: 5px;\n}\n\n/*\n** Floats\n*/\n\n.tc-float-right {\n\tfloat: right;\n}\n\n/*\n** Chooser\n*/\n\n.tc-chooser {\n\tborder-right: 1px solid <<colour table-header-background>>;\n\tborder-left: 1px solid <<colour table-header-background>>;\n}\n\n\n.tc-chooser-item {\n\tborder-bottom: 1px solid <<colour table-header-background>>;\n\tborder-top: 1px solid <<colour table-header-background>>;\n\tpadding: 2px 4px 2px 14px;\n}\n\n.tc-drop-down .tc-chooser-item {\n\tpadding: 2px;\n}\n\n.tc-chosen,\n.tc-chooser-item:hover {\n\tbackground-color: <<colour table-header-background>>;\n\tborder-color: <<colour table-footer-background>>;\n}\n\n.tc-chosen .tc-tiddlylink {\n\tcursor:default;\n}\n\n.tc-chooser-item .tc-tiddlylink {\n\tdisplay: block;\n\ttext-decoration: none;\n\tbackground-color: transparent;\n}\n\n.tc-chooser-item:hover .tc-tiddlylink:hover {\n\ttext-decoration: none;\n}\n\n.tc-drop-down .tc-chosen .tc-tiddlylink,\n.tc-drop-down .tc-chooser-item .tc-tiddlylink:hover {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-chosen > .tc-tiddlylink:before {\n\tmargin-left: -10px;\n\tposition: relative;\n\tcontent: \"» \";\n}\n\n.tc-chooser-item svg,\n.tc-chooser-item img{\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: middle;\n}\n\n.tc-language-chooser .tc-image-button img {\n\twidth: 2em;\n\tvertical-align: -0.15em;\n}\n\n/*\n** Palette swatches\n*/\n\n.tc-swatches-horiz {\n}\n\n.tc-swatches-horiz .tc-swatch {\n\tdisplay: inline-block;\n}\n\n.tc-swatch {\n\twidth: 2em;\n\theight: 2em;\n\tmargin: 0.4em;\n\tborder: 1px solid #888;\n}\n\ninput.tc-palette-manager-colour-input {\n\twidth: 100%;\n\tpadding: 0;\n}\n\n/*\n** Table of contents\n*/\n\n.tc-sidebar-lists .tc-table-of-contents {\n\twhite-space: nowrap;\n}\n\n.tc-table-of-contents button {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents svg {\n\twidth: 0.7em;\n\theight: 0.7em;\n\tvertical-align: middle;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents ol {\n\tlist-style-type: none;\n\tpadding-left: 0;\n}\n\n.tc-table-of-contents ol ol {\n\tpadding-left: 1em;\n}\n\n.tc-table-of-contents li {\n\tfont-size: 1.0em;\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li a {\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li li {\n\tfont-size: 0.95em;\n\tfont-weight: normal;\n\tline-height: 1.4;\n}\n\n.tc-table-of-contents li li a {\n\tfont-weight: normal;\n}\n\n.tc-table-of-contents li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n\tline-height: 1.5;\n}\n\n.tc-table-of-contents li li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n}\n\n.tc-tabbed-table-of-contents {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents {\n\tz-index: 100;\n\tdisplay: inline-block;\n\tpadding-left: 1em;\n\tmax-width: 50%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n\tbackground: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a,\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tdisplay: block;\n\tpadding: 0.12em 1em 0.12em 0.25em;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a {\n\tborder-top: 1px solid <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-background>>;\n\tborder-bottom: 1px solid <<colour tab-background>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a:hover {\n\ttext-decoration: none;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour background>>;\n\tmargin-right: -1px;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a:hover {\n\ttext-decoration: none;\n}\n\n.tc-tabbed-table-of-contents .tc-tabbed-table-of-contents-content {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-left: 1.5em;\n\tpadding-right: 1.5em;\n\tborder: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 50%;\n\tflex: 1 0 50%;\n}\n\n/*\n** Dirty indicator\n*/\n\nbody.tc-dirty span.tc-dirty-indicator, body.tc-dirty span.tc-dirty-indicator svg {\n\tfill: <<colour dirty-indicator>>;\n\tcolor: <<colour dirty-indicator>>;\n}\n\n/*\n** File inputs\n*/\n\n.tc-file-input-wrapper {\n\tposition: relative;\n\toverflow: hidden;\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.tc-file-input-wrapper input[type=file] {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tfont-size: 999px;\n\tmax-width: 100%;\n\tmax-height: 100%;\n\tfilter: alpha(opacity=0);\n\topacity: 0;\n\toutline: none;\n\tbackground: white;\n\tcursor: pointer;\n\tdisplay: inline-block;\n}\n\n::-webkit-file-upload-button {\n\tcursor:pointer;\n}\n\n/*\n** Thumbnail macros\n*/\n\n.tc-thumbnail-wrapper {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin: 6px;\n\tvertical-align: top;\n}\n\n.tc-thumbnail-right-wrapper {\n\tfloat:right;\n\tmargin: 0.5em 0 0.5em 0.5em;\n}\n\n.tc-thumbnail-image {\n\ttext-align: center;\n\toverflow: hidden;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-image svg,\n.tc-thumbnail-image img {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n\tmin-width: 100%;\n\tmin-height: 100%;\n\tmax-width: 100%;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image img {\n\tfilter: alpha(opacity=0.8);\n\topacity: 0.8;\n}\n\n.tc-thumbnail-background {\n\tposition: absolute;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-icon svg,\n.tc-thumbnail-icon img {\n\twidth: 3em;\n\theight: 3em;\n\t<<filter \"drop-shadow(2px 2px 4px rgba(0,0,0,0.3))\">>\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon img {\n\tfill: #fff;\n\t<<filter \"drop-shadow(3px 3px 4px rgba(0,0,0,0.6))\">>\n}\n\n.tc-thumbnail-icon {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tdisplay: -webkit-flex;\n\t-webkit-align-items: center;\n\t-webkit-justify-content: center;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.tc-thumbnail-caption {\n\tposition: absolute;\n\tbackground-color: #777;\n\tcolor: #fff;\n\ttext-align: center;\n\tbottom: 0;\n\twidth: 100%;\n\tfilter: alpha(opacity=0.9);\n\topacity: 0.9;\n\tline-height: 1.4;\n\tborder-bottom-left-radius: 3px;\n\tborder-bottom-right-radius: 3px;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-caption {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n}\n\n/*\n** Diffs\n*/\n\n.tc-diff-equal {\n\tbackground-color: <<colour diff-equal-background>>;\n\tcolor: <<colour diff-equal-foreground>>;\n}\n\n.tc-diff-insert {\n\tbackground-color: <<colour diff-insert-background>>;\n\tcolor: <<colour diff-insert-foreground>>;\n}\n\n.tc-diff-delete {\n\tbackground-color: <<colour diff-delete-background>>;\n\tcolor: <<colour diff-delete-foreground>>;\n}\n\n.tc-diff-invisible {\n\tbackground-color: <<colour diff-invisible-background>>;\n\tcolor: <<colour diff-invisible-foreground>>;\n}\n\n.tc-diff-tiddlers th {\n\ttext-align: right;\n\tbackground: <<colour background>>;\n\tfont-weight: normal;\n\tfont-style: italic;\n}\n\n.tc-diff-tiddlers pre {\n margin: 0;\n padding: 0;\n border: none;\n background: none;\n}\n\n/*\n** Errors\n*/\n\n.tc-error {\n\tbackground: #f00;\n\tcolor: #fff;\n}\n\n/*\n** Tree macro\n*/\n\n.tc-tree div {\n \tpadding-left: 14px;\n}\n\n.tc-tree ol {\n \tlist-style-type: none;\n \tpadding-left: 0;\n \tmargin-top: 0;\n}\n\n.tc-tree ol ol {\n \tpadding-left: 1em; \n}\n\n.tc-tree button { \n \tcolor: #acacac;\n}\n\n.tc-tree svg {\n \tfill: #acacac;\n}\n\n.tc-tree span svg {\n \twidth: 1em;\n \theight: 1em;\n \tvertical-align: baseline;\n}\n\n.tc-tree li span {\n \tcolor: lightgray;\n}\n\nselect {\n color: <<colour select-tag-foreground>>;\n background: <<colour select-tag-background>>;\n}\n\n/*\n** Utility classes for SVG icons\n*/\n\n.tc-fill-background {\n\tfill: <<colour background>>;\n}\n\n/*\n** Flexbox utility classes\n*/\n\n.tc-flex {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-flex-column {\n\tflex-direction: column;\n}\n\n.tc-flex-row {\n\tflex-direction: row;\n}\n\n.tc-flex-grow-1 {\n\tflex-grow: 1;\n}\n\n.tc-flex-grow-2 {\n\tflex-grow: 2;\n}\n\n/*\n** Other utility classes\n*/\n\n.tc-tiny-gap {\n\tmargin-left: .25em;\n\tmargin-right: .25em;\n}\n\n.tc-tiny-gap-left {\n\tmargin-left: .25em;\n}\n\n.tc-tiny-gap-right {\n\tmargin-right: .25em;\n}\n\n.tc-small-gap {\n\tmargin-left: .5em;\n\tmargin-right: .5em;\n}\n\n.tc-small-gap-left {\n\tmargin-left: .5em;\n}\n\n.tc-small-gap-right {\n\tmargin-right: .5em;\n}\n\n.tc-big-gap {\n\tmargin-left: 1em;\n\tmargin-right: 1em;\n}\n\n.tc-big-gap-left {\n\tmargin-left: 1em;\n}\n\n.tc-big-gap-right {\n\tmargin-right: 1em;\n}\n\n.tc-word-break {\n\tword-break: break-all;\n}\n"},"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize":{"text":"15px"},"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight":{"text":"22px"},"$:/themes/tiddlywiki/vanilla/metrics/fontsize":{"text":"14px"},"$:/themes/tiddlywiki/vanilla/metrics/lineheight":{"text":"20px"},"$:/themes/tiddlywiki/vanilla/metrics/storyleft":{"text":"0px"},"$:/themes/tiddlywiki/vanilla/metrics/storytop":{"text":"0px"},"$:/themes/tiddlywiki/vanilla/metrics/storyright":{"text":"770px"},"$:/themes/tiddlywiki/vanilla/metrics/storywidth":{"text":"770px"},"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth":{"text":"686px"},"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint":{"text":"960px"},"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth":{"text":"350px"},"$:/themes/tiddlywiki/vanilla/options/stickytitles":{"text":"no"},"$:/themes/tiddlywiki/vanilla/options/sidebarlayout":{"text":"fixed-fluid"},"$:/themes/tiddlywiki/vanilla/options/codewrapping":{"text":"pre-wrap"},"$:/themes/tiddlywiki/vanilla/reset":{"type":"text/plain","text":"/*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */\n\n/*\nDocument\n========\n*/\n\n/**\nUse a better box model (opinionated).\n*/\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n/**\nUse a more readable tab size (opinionated).\n*/\n\n:root {\n -moz-tab-size: 4;\n tab-size: 4;\n}\n\n/**\n1. Correct the line height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n*/\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/*\nSections\n========\n*/\n\n/**\nRemove the margin in all browsers.\n*/\n\nbody {\n margin: 0;\n}\n\n/**\nImprove consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)\n*/\n\nbody {\n font-family:\n system-ui,\n -apple-system, /* Firefox supports this but not yet `system-ui` */\n 'Segoe UI',\n Roboto,\n Helvetica,\n Arial,\n sans-serif,\n 'Apple Color Emoji',\n 'Segoe UI Emoji';\n}\n\n/*\nGrouping content\n================\n*/\n\n/**\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n*/\n\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n}\n\n/*\nText-level semantics\n====================\n*/\n\n/**\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr[title] {\n text-decoration: underline dotted;\n}\n\n/**\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)\n2. Correct the odd 'em' font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family:\n ui-monospace,\n SFMono-Regular,\n Consolas,\n 'Liberation Mono',\n Menlo,\n monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n font-size: 80%;\n}\n\n/**\nPrevent 'sub' and 'sup' elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/*\nTabular data\n============\n*/\n\n/**\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n*/\n\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n}\n\n/*\nForms\n=====\n*/\n\n/**\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\nRemove the inheritance of text transform in Edge and Firefox.\n1. Remove the inheritance of text transform in Firefox.\n*/\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\nCorrect the inability to style clickable types in iOS and Safari.\n*/\n\nbutton,\n[type='button'],\n[type='reset'],\n[type='submit'] {\n -webkit-appearance: button;\n}\n\n/**\nRemove the inner border and padding in Firefox.\n*/\n\n::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\nRestore the focus styles unset by the previous rule.\n*/\n\n:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\nRemove the additional ':invalid' styles in Firefox.\nSee: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737\n*/\n\n:-moz-ui-invalid {\n box-shadow: none;\n}\n\n/**\nRemove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers.\n*/\n\nlegend {\n padding: 0;\n}\n\n/**\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n[type='search'] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to 'inherit' in Safari.\n*/\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/*\nInteractive\n===========\n*/\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n display: list-item;\n}\n"},"$:/themes/tiddlywiki/vanilla/settings/fontfamily":{"text":"system-ui, -apple-system, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\""},"$:/themes/tiddlywiki/vanilla/settings/codefontfamily":{"text":"\"SFMono-Regular\",Consolas,\"Liberation Mono\",Menlo,Courier,monospace"},"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment":{"text":"fixed"},"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize":{"text":"auto"},"$:/themes/tiddlywiki/vanilla/sticky":{"text":"<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\" type=\"match\" text=\"yes\">\n``\n.tc-tiddler-title {\n\tposition: -webkit-sticky;\n\tposition: -moz-sticky;\n\tposition: -o-sticky;\n\tposition: -ms-sticky;\n\tposition: sticky;\n\ttop: 0px;\n\tbackground: ``<<colour tiddler-background>>``;\n\tz-index: 500;\n}\n\n``\n<$list filter=\"[range[100]]\">\n`.tc-story-river .tc-tiddler-frame:nth-child(100n+`<$text text=<<currentTiddler>>/>`) {\nz-index: `<$text text={{{ [[200]subtract<currentTiddler>] }}}/>`;\n}\n`\n</$list>\n</$reveal>\n"}}}
/*LeftBar*/ calc({{$:/plugins/TWaddle/LeftBar/Stylesheet!!width}} + {{$:/plugins/TWaddle/LeftBar/temp!!storyleft}})
/*LeftBar*/ calc({{$:/plugins/TWaddle/LeftBar/temp!!storyright}} + {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}})
\define adminTid() $:/config/toc/admin
{
"title": "$:/Import",
"text": "The following tiddlers were imported:\n\n# [[Tasks]]",
"status": "complete",
"modified": "20210426035552043"
}
{
"text": "<$list filter={{$:/core/Filters/AllTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/All/Caption}}",
"title": "Draft of '$:/core/ui/MoreSideBar/All'",
"draft.title": "$:/core/ui/MoreSideBar/All",
"draft.of": "$:/core/ui/MoreSideBar/All",
"modified": "20210426041047042"
}
{
"created": "20210420180310609",
"text": "",
"tags": "exmp138",
"title": "Draft of 'Custom Styles by Data Attribute and Pseudo-Class'",
"modified": "20210420181947746",
"draft.title": "",
"draft.of": "Custom Styles by Data Attribute and Pseudo-Class"
}
{
"text": "[[abs Operator]] [[add Operator]] [[addprefix Operator]] [[addsuffix Operator]] [[after Operator]] [[all Operator]] [[allafter Operator]] [[allbefore Operator]] [[append Operator]] [[backlinks Operator]] [[before Operator]] [[bf Operator]] [[butfirst Operator]] [[butlast Operator]] [[ceil Operator]] [[commands Operator]] [[compare Operator]] [[contains Operator]] [[count Operator]] [[cycle Operator]] [[days Operator]] [[decodehtml Operator]] [[decodeuri Operator]] [[decodeuricomponent Operator]] [[divide Operator]] [[duplicateslugs Operator]] [[each Operator]] [[eachday Operator]] [[editiondescription Operator]] [[editions Operator]] [[else Operator]] [[encodehtml Operator]] [[encodeuri Operator]] [[encodeuricomponent Operator]] [[enlist Operator]] [[enlist-input Operator]] [[escapecss Operator]] [[escaperegexp Operator]] [[exponential Operator]] [[field Operator]] [[fields Operator]] [[filter Operator]] [[first Operator]] [[fixed Operator]] [[floor Operator]] [[format Operator]] [[get Operator]] [[getindex Operator]] [[getvariable Operator]] [[has Operator]] [[haschanged Operator]] [[indexes Operator]] [[insertbefore Operator]] [[is Operator]] [[join Operator]] [[jsonstringify Operator]] [[last Operator]] [[length Operator]] [[limit Operator]] [[links Operator]] [[list Operator]] [[listed Operator]] [[log Operator]] [[lookup Operator]] [[lowercase Operator]] [[match Operator]] [[max Operator]] [[maxall Operator]] [[min Operator]] [[minall Operator]] [[minlength Operator]] [[modules Operator]] [[moduletypes Operator]] [[move Operator]] [[multiply Operator]] [[negate Operator]] [[next Operator]] [[nsort Operator]] [[nsortcs Operator]] [[nth Operator]] [[order Operator]] [[pad Operator]] [[plugintiddlers Operator]] [[power Operator]] [[precision Operator]] [[prefix Operator]] [[prepend Operator]] [[previous Operator]] [[product Operator]] [[putafter Operator]] [[putbefore Operator]] [[putfirst Operator]] [[putlast Operator]] [[range Operator]] [[reduce Operator]] [[regexp Operator]] [[remainder Operator]] [[remove Operator]] [[removeprefix Operator]] [[removesuffix Operator]] [[replace Operator]] [[rest Operator]] [[reverse Operator]] [[round Operator]] [[sameday Operator]] [[search Operator]] [[search-replace Operator]] [[sentencecase Operator]] [[shadowsource Operator]] [[sign Operator]] [[slugify Operator]] [[sort Operator]] [[sortan Operator]] [[sortby Operator]] [[sortcs Operator]] [[sortsub Operator]] [[split Operator]] [[splitbefore Operator]] [[splitregexp Operator]] [[storyviews Operator]] [[stringify Operator]] [[subfilter Operator]] [[subtiddlerfields Operator]] [[subtract Operator]] [[suffix Operator]] [[sum Operator]] [[tag Operator]] [[tagging Operator]] [[tags Operator]] [[then Operator]] [[title Operator]] [[titlecase Operator]] [[toggle Operator]] [[trim Operator]] [[trunc Operator]] [[untagged Operator]] [[untrunc Operator]] [[uppercase Operator]] [[variables Operator]] [[ActionConfirmWidget]] [[ActionCreateTiddlerWidget]] [[ActionDeleteFieldWidget]] [[ActionDeleteTiddlerWidget]] [[ActionListopsWidget]] [[ActionLogWidget]] [[ActionNavigateWidget]] [[ActionPopupWidget]] [[ActionSendMessageWidget]] [[ActionSetFieldWidget]] [[ActionWidgets]] [[BrowseWidget]] [[ButtonWidget]] [[CheckboxWidget]] [[CodeBlockWidget]] [[CountWidget]] [[DiffTextWidget]] [[DraggableWidget]] [[DroppableWidget]] [[DropzoneWidget]] [[EditBitmapWidget]] [[EditTextWidget]] [[EditWidget]] [[EncryptWidget]] [[EntityWidget]] [[EventCatcherWidget]] [[FieldManglerWidget]] [[FieldsWidget]] [[ImageWidget]] [[ImportVariablesWidget]] [[KeyboardWidget]] [[LinkCatcherWidget]] [[LinkWidget]] [[ListWidget]] [[LogWidget]] [[MacroCallWidget]] [[MessageCatcherWidget]] [[NavigatorWidget]] [[PasswordWidget]] [[RadioWidget]] [[RangeWidget]] [[RevealWidget]] [[ScrollableWidget]] [[SelectWidget]] [[SetVariableWidget]] [[SetWidget]] [[TextWidget]] [[TiddlerWidget]] [[TranscludeWidget]] [[VarsWidget]] [[ViewWidget]] [[WikifyWidget]] ",
"created": "20210423074422591",
"title": "Draft of 'exmp141/data/indexTiddler'",
"modified": "20210423074853817",
"type": "text/plain",
"draft.title": "exmp141/data/indexTiddler",
"draft.of": "exmp141/data/indexTiddler"
}
{
"created": "20210425045046158",
"text": "\\define myActions()\n <$action-sendmessage $message=\"tm-new-tiddler\" title=\"This is newly created Task\" tags=\"[[$(todayDate)$]] task other\" text=<<todayDate>>/>\n\\end\n\n",
"tags": "exmp142",
"title": "Draft of 'exmp142/demo'",
"modified": "20210425045854028",
"draft.title": "exmp142/demo",
"draft.of": "exmp142/demo"
}
{
"text": "",
"draft.title": "New Tiddler",
"tags": "",
"created": "20210426030211451",
"title": "Draft of 'New Tiddler'",
"draft.of": "New Tiddler",
"modified": "20210426030211451"
}
{
"text": "",
"created": "20210423091250582",
"tags": "start",
"title": "Draft of 'Scripts in Tiddlywiki'",
"modified": "20210423091344115",
"draft.title": "Scripts in Tiddlywiki",
"draft.of": "Scripts in Tiddlywiki"
}
{
"text": "<div style=\"float:right;margin-right:20px;\"><$button>\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<now format:\"DDth MMM YYYY\">> tags=\"task\" text=\"\"/>\n<span style=\"color:blue;\">''New Task''</span>\n</$button></div>\n\n! Outstanding tasks\n//Drag the tasks to re-order them//\n\n<<list-tagged-draggable tag:\"task\" subFilter:\"!has[draft.of]!tag[done]!sort[created]\" itemTemplate:\"TaskManagementDraggableTemplate\" emptyMessage:\"You don't have any active tasks\">>\n\n",
"created": "20180615032251583",
"title": "Draft of 'task'",
"tags": "",
"modified": "20210426040328253",
"caption": "Tasks",
"draft.title": "task",
"draft.of": "task"
}
{
"text": "25 April 2021",
"draft.title": "This is newly created Task",
"title": "Draft of 'This is newly created Task'",
"tags": "[[25 April 2021]] task other",
"created": "20210425045920994",
"draft.of": "This is newly created Task",
"modified": "20210425045920994"
}
{
"created": "20210423074422591",
"text": "",
"title": "exmp141/data/indexTiddler",
"modified": "20210423090711182",
"type": "text/plain",
"tags": "exmp141"
}
{
"created": "20210426035757206",
"text": "! Completed tasks\n\n//(Listed in reverse order of completion)//\n\n<$list filter=\"[!has[draft.of]tag[task]tag[done]sort[created]] -task\">\n<$checkbox tag=\"done\">\n<span style=\"color:green\">{{!!title}}<$link to={{!!title}}></$link></span>\n<div style=\"background-color:#ffffcc44\">\n<$transclude tiddler=<<currentTiddler>> filed=\"text\" mode=\"block\"/>\n</div>\n</$checkbox>\n</$list>\n",
"tags": "",
"title": "New Tiddler",
"modified": "20210426035802154"
}
{
"created": "20210423063554000",
"text": "",
"tags": "[[Loli Moli]]",
"title": "test",
"modified": "20210423063603179"
}
{
"created": "20210423071719143",
"title": "x$:/temp/exact-search",
"text": "2020",
"modified": "20210423072203671"
}
{
"created": "20210423071707131",
"title": "x$:/temp/select-search",
"text": "tags",
"modified": "20210423072216538"
}
<svg width="22pt" height="22pt" viewBox="0 0 16 16" class="tc-image-palette-button tc-image-button" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" d="M8 15V1a7 7 0 1 1 0 14zm0 1A8 8 0 1 1 8 0a8 8 0 0 1 0 16z"/>
</svg
<$vars
darkPalette={{$:/utility/ui/Button/SwitchPalette!!dark-palette}}
lightPalette={{$:/utility/ui/Button/SwitchPalette!!light-palette}}
>
<$button tooltip="Switch colours" aria-label="Switch colours" class=<<tv-config-toolbar-class>>>
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
{{$:/utility/images/color-switch}}
</$list>
<$list filter="[<tv-config-toolbar-text>match[yes]]">
<span class="tc-btn-text">Switch colours</span>
</$list>
<$reveal type="match" state="$:/palette" text=<<darkPalette>> >
<$action-setfield $tiddler="$:/palette" text=<<lightPalette>> />
</$reveal>
<$reveal type="nomatch" state="$:/palette" text=<<darkPalette>> >
<$action-setfield $tiddler="$:/palette" text=<<darkPalette>> >
</$reveal>
</$button>
</$vars>
{{$:/utility/ui/Button/SwitchPalette!!dark-palette}}
{
"Edit textbox to append text to another tiddler": "2",
"Compress and Optimize": "3",
"Empty Story": "0",
"TW widget tutorials": "5"
}
<<docit>>
https://groups.google.com/d/msg/tiddlywiki/x2auoIxkTOY/1eRRZT_wBAAJ
;Variables, Parameters and transclusions
:http://tiddlywiki.psat.com.au/#Variables%2C%20Parameters%20and%20transclusions
;Bunddelr: It can detect the duplicate tiddler and lets you decide to overwrite or keep
:https://wikilabs.github.io/editions/bundler/#%24%3A%2Fplugins%2Fwikilabs%2Fbundler
;DRAFT: TiddlyWiki for New users
:http://tiddlywiki.psat.com.au/TW5NewUser.html
:see alsohttps://groups.google.com/d/msg/tiddlywiki/nVpwbtVw-F8/T4QDfsh4BgAJ
;S.S. Tiddlywiki Beginner Guide
:https://00ss.github.io/documentation/tiddlywiki.html#
; 14:45, 10th February 2019: Filter operators
: https://tiddlywiki.com/prerelease/#Filter%20Operators
;bundler by pmario
:https://wikilabs.github.io/editions/bundler/#
;advanced search plus pmario
:https://wikilabs.github.io/editions/advanced-search-plus/
;state tiddler used for draft and main tiddler
:https://groups.google.com/d/msg/tiddlywiki/Mb75FTIzbCk/E4ns-gQpAwAJ
<<docit>>
https://groups.google.com/d/msg/tiddlywiki/hyUV1NwYiU4/KO0t_KZ8BQAJ
https://groups.google.com/d/msg/tiddlywiki/FZ1WEpYcr3I/IDQUi3lfBQAJ
Worth to check. Has great feature for buttons
https://ibnishak.github.io/Tesseract/pluginsandmacros/index.html#Reveal-Extended%3A+Adding+%3C%2C%3E%2C%3C%3D%2C%3E%3D+types+to+reveal+widget
A good resource on basics of html5
https://www.bitdegree.org/learn/html5-tags
<<docit>>
<<dbadge "TW" "5.1.23" danger>>
The below code shows how an input for a macro can be chacked!
```
\define uu(a)
<$vars x={{{ [<__a__>trim[]is[blank]addprefix[empty-]addsuffix<qualify>else[Hi, ]addsuffix<__a__>] }}} >
I am <<x>>
</$vars>
\end
TEST:
<<uu>>
<<uu " ">>
<<uu Jeremy>>
```
<<docit>>
https://groups.google.com/d/msg/tiddlywiki/7JbjSesQwwg/oBL1HGAdAQAJ
https://groups.google.com/d/msg/tiddlywiki/mCudZtzoXU4/-N1VV6SuBwAJ
This plugin changes the methods tiddlywiki uses to retrieve and set values in json data tiddlers
This page shows many UI element built on top of Bootstrap 4.
https://colorlib.com/polygon/octopus/index.html
Some of them can be implemented using Shiraz
Also have a look at the below site
https://colorlib.com/polygon/adminator/calendar.html
<<docit>>
;Mario field search
:https://wikilabs.github.io/editions/field-search/
:Use this for search, it is wonderful tool lets different type of search
\define calc(ops, operation)
<$list filter="[<__input__>splitbefore[$ops$]removesuffix[$ops$]]" variable=a>
<$list filter="[<__input__>removeprefix<a>removeprefix[$ops$]]" variable=b>
<$list filter="[<a>$operation$<b>]" variable=result>
<<result>>
</$list>
</$list>
</$list>
\end
\define calculator(input)
<$set name=pattern value="(\d+([.]\d*)?|[.]\d+)(\s*[+\-*\/]\s*)(\d+([.]\d*)?|[.]\d+)$">
<$list filter="[<__input__>trim[]regexp<pattern>]" variable=ignore emptyMessage="wrong input"><!--check input -->
<$list filter="[<__input__>search[+]]">
<<calc ops:+ operation:add>>
</$list>
<$list filter="[<__input__>search[-]]">
<<calc ops:- operation:subtract>>
</$list>
<$list filter="[<__input__>search[*]]">
<<calc ops:* operation:multiply>>
</$list>
<$list filter="[<__input__>search[/]]">
<<calc ops:"/" operation:divide>>
</$list>
</$list>
</$set>
\end
;A binary operation calculator
:Using Tiddlywiki macro and the new mathematical expression in Tiddlywiki 5.1.20+ it is possible to create a simple binary mathematical operation.
!! The calculator macro
Based on an idea from [[A. Gloom|https://groups.google.com/d/msg/tiddlywiki/8BZuwArdukw/4Dnl-kcFCgAJ]] (see also [[Math Macro a Simple Calculator]])The below code shows the `calculator` macro and its helper macro `calc`. The `calculator` macro can perform four basic mathematical operations--addition, subtraction, multiplication, and division
<<show-macro>>
<<alert danger "''Warning'': The calculator cannot operate on signed number like `-4` or `+4`">>
!! Syntax
```
<<calculator input>>
```
!! Content and attributes
|!Attributes |!Type |!Description |
|input |required|a valid mathematical expression to perform four basic mathematical operations addition, subtraction, multiplication, and division|
!! Remarks
* The first `$list` widget uses a regexp filter to check if the input is a valid mathematical expression.
* The regexp pattern to validate the mathematical expression is `^(\d+([.]\d*)?|[.]\d+)(\s*[+\-*\/]\s*)(\d+([.]\d*)?|[.]\d+)$` which is defined by the `$set` widget. It stes a pattern for mathematical expression like `a+b`, `a-b`, `a*b`, and `a/b`. The operand `a` and `b` can be a valid number (both integer and decimal). Also spaces are allowed before, after and between operands and operator.
* Four next `$list` widget each check the input to see which basic operation will be done
* The helper macro `calc` receives the operation (add, subtract, multiply and divide) and its symbol (e.g. + - * /)
* The helper macro `calc` first separate two operand and then perform the requested operation
* Based on the above explanation these expressions are valid. Note to the spaces and decimal point
** `.123 + 456.32`
** ` 1.23 * 123.`
** ` 12 / 4`
!! Examples
The below examples shows different mathematical operation using the `calculator` macro.
><$macrocall $name="wikitext-example-without-html"
src="""<<calculator 123+365>>
<<calculator 125-400>>
<<calculator 12*5>>
<<calculator 365/9>>
<<calculator -4>>
"""/>
!! An interactive calculator
The below example shows how the calculator macro can be used with a input box to act as an interactive calculator.
<$macrocall $name="wikitext-example-without-html"
src="""<$edit-text tiddler="$:/temp/calculation" tag="input"/><$macrocall $name=calculator input={{$:/temp/calculation}}/><br>
,,Hint: Simple calculator for binary operation like 12+36,,
"""/>
;Remark
:The `$edit-text` widget uses the temporary [[$:/temp/calculation]] tiddler to store the user input
:The input statement from [[$:/temp/calculation]] is then passed to `calculator` macro using the `$macrocall` widget.
\define thisListMacro()
<b><$view field=title/></b>: {{exmp044/dictionary##$(thisIndex)$}}<br>
\end
\define thisEditListMacro()
<b><$view field=title/></b>: {{exmp044/dictionary##$(thisIndex)$}} <$button>Remove<$action-deletefield $tiddler='exmp044/dictionary' $field=$(thisIndex)$ $value=''/></$button><br>
\end
\define thisRegEx()
$(thisSearch)$(?i)
\end
\define thisSearchMacro()
<ol>
<$list filter="[[exmp044/dictionary]indexes[]regexp:title[(?i)$(thisSearch)$]]">
<li><span style="color:darkred;"><<currentTiddler>></span>: <$transclude tiddler="exmp044/dictionary" index=<<currentTiddler>>/></li>
</$list>
</ol>
\end
\define thisEditMacro()
<ol>
<$list filter="[[exmp044/dictionary]indexes[]regexp:title[(?i)$(thisSearch)$]]">
<$set name=thisItem value=<<currentTiddler>>>
<li><<thisDeleteButton>> <<currentTiddler>> - <$transclude tiddler="exmp044/dictionary" index=<<currentTiddler>>/></li>
</$set>
</$list>
</ol>
\end
\define thisDeleteButton()
<$button set='exmp044/dictionary##$(thisItem)$'>{{$:/core/images/delete-button}}</$button>
\end
\define addTerm()
<$action-setfield $tiddler='exmp044/dictionary' $index={{$:/temp/exmp044!!name}} $value={{$:/temp/exmp044!!meaning}}/>
<$action-setfield $tiddler='$:/temp/exmp044' name='' meaning=''/>
\end
This is a full example of using DataTiddler (dictionary or JSON tiddler) for creating a refence book or Word Dictionary. This project was created and authored by {{!!responder}}.
The project includes:
# Macros for add/remove index/value pairs from DataTiddler
# Macros for making search in DataTiddler
# Macros for listing index/value pairs
# A DataTiddler (here a JSON: [[exmp044/dictionary]]) to store pairs of index/value.
# Reveal widget is used to prevent adding term with no meaning (empty edit box)
---
!! Demo
Term: <$edit-text class='tc-edit-texteditor' tiddler='$:/temp/exmp044' field='name'/><br>
Meaning: <$edit-text class='tc-edit-texteditor' tiddler='$:/temp/exmp044' field='meaning'/><br>
<$reveal type='match' state='$:/temp/exmp044!!name' text=''>
<$button>Add Term</$button><!-- This is a fake button, when term edit-text is empty -->
</$reveal>
<$reveal type='nomatch' state='$:/temp/exmp044!!name' text=''>
<$button actions=<<addTerm>> >Add Term </$button>
</$reveal>
<$reveal type='nomatch' state='$:/temp/exmp044/editreveal' text='edit'>
<$button set='$:/temp/exmp044/editreveal' setTo='edit'>Edit Dictionary</$button>
</$reveal>
<$reveal type='match' state='$:/temp/exmp044/editreveal' text='edit'>
<$button set='$:/temp/exmp044/editreveal' setTo='noedit'>Done Editing</$button>
</$reveal>
!! Search
Search: <$edit-text tiddler='$:/temp/exmp044' field='search'/><br>
<$reveal type='nomatch' state='$:/temp/exmp044/editreveal' text='edit'>
Type in the search box to find specific items on the list
</$reveal>
<$reveal type='match' state='$:/temp/exmp044/editreveal' text='edit'>
Click on the trashcan icon to remove an item
</$reveal>
<$set name='thisSearch' value={{$:/temp/exmp044!!search}}>
<$reveal type='nomatch' state='$:/temp/exmp044/editreveal' text='edit'>
<<thisSearchMacro>>
</$reveal>
<$reveal type='match' state='$:/temp/exmp044/editreveal' text='edit'>
<<thisEditMacro>>
</$reveal>
</$set>
;What one can do when editing or displaying a tiddler cause wiki crash?
:One way is to use a ditect open for edit.
There are situation when a macro or displaying a tiddler causes problems. That are recursive and get into a "runaway" condition which never terminates, and eventually crashes the page.
Here's a little "OpenForEdit" tiddler that can help with the above situation.
<<code-link OpenForEdit>>
Then, to bypass the DefaultTiddlers on startup, just add `#OpenForEdit` to the end of your URL.
When the above tiddler is loaded, select the offending tiddler from the list and press the "edit" button
to jump directly into edit mode, bypassing any view mode problems that tiddler may have.
; Create a gallery of all core imgaes
: The core images are svg images. To do this use the `list` widget and a small css as below.
! Linkable image
On mouse hover the tooltip will reveal the full path of image and on click the tiddler contans the svg image will be opened.
<<wikitext-example-without-html
src:"""<style>
.my-gallery svg {
width: 2.0em !important;
height: 2.0em !important;
margin: 0.5em;
}
</style>
<div class="my-gallery">
<$list filter="[all[tiddlers+shadows]tag[$:/tags/Image]sort[]] -[[$:/core/images/blank]]">
<$link tooltip="{{!!title}}">
<$transclude/>
</$link>
</$list>
</div>
""">>
!! Remarks
* The my-gallery css class sets the height, width and margin of images
* The `list` widget, list all core images
* The `-[[$:/core/images/blank]]` filter exclude the blank (empty) image from listing
* All images are linkable and on click open the related tiddler.
! Clickable image
The below example shows the same gallery with clickable images. On click the tiddler name containing the image is copied to clipboard.
<$macrocall $name="wikitext-example-without-html"
src="""<div class="my-gallery">
<$list filter="[all[tiddlers+shadows]tag[$:/tags/Image]sort[]] -[[$:/core/images/blank]]">
<$button message="tm-copy-to-clipboard" param=<<currentTiddler>> tooltip=<<currentTiddler>> >
<$transclude/>
</$button>
</$list>
</div>
"""/>
!! Remarks
* The my-gallery css class sets the height and width of images. The margin is not used here.
* The `list` widget, list all core images
* The `-[[$:/core/images/blank]]` filter exclude the blank (empty) image from listing
* The `button` widget uses `tm-copy-to-clipboard` to copy the tiddler title of containing image into clipboard. Also the title is used as tooltip to be shown on mouse hover.
* Each image is wrapped into a button and on click the related tiddler title is copied to clipboard.
\define radio-field(fieldname values-filter)
<$list filter="$values-filter$" variable=value>
<$radio field="$fieldname$" value=<<value>> > <<value>></$radio>
</$list>
\end
A radio button macro based on [[Using Radio Button]] solution by Eric Shulman
```
\define radio-field(fieldname values-filter)
<$list filter="$values-filter$" variable=value>
<$radio field="$fieldname$" value=<<value>> > <<value>></$radio>
</$list>
\end
```
* Example
<$macrocall $name="wikitext-example-without-html"
src="""
<<radio-field section "A B C">>
"""/>
<$macrocall $name="wikitext-example-without-html"
src="""
<<radio-field domain "[each[domain]get[domain]sort[]]">>
"""/>
<<docit>>
```
\define rand(filter)
<$set name=r1 value=<<now 0XXX>>>
<$set name=r2 filter="[<r1>splitregexp:title[]rest[]join[]]" >
<$set name=nth filter="""$filter$ +[count[]multiply<r2>divide[100]ceil[]]""">
{{{ $filter$ +[nth<nth>] }}}
</$set>
</$set>
</$set>
\end
```
\import [[exmp112/macro]]
;Considering the restriction with Tiddlywiki toc macro, what is a simple script to create a toc recursively?
!! Solution
The below macro creates a recursive macro to populate a table of contents from a parent tag.
<<code-link exmp112/macro>>
;Remarks
:the `toc-all` macro shows all items in the tree
:the `exclude` can be used to exclude a branch. The `exclude` is like `-[tag[xx]]`
:the first filter run `[title[$here$]tagging[]]` list all childs (tiddlers tagged with `$here$`)
: the second run `$exclude$` is used for excluding branches
: the `<$link/>` shows a link to the item listed in the tree
: the `$macrocall` then recursively calls the `toc-all` itself, and this continues until all childern listed
: the `toc-all` macro uses the "exclude" paramter that is dynamically updated as the recursion occurs. Each level of recursion adds the current tiddler to a list (using syntax `-[[$here$]]`) so that as it dives down into the tree, any tiddler that has already been visited in the current 'branch' is excluded from being visited again. This prevents infinite loops that eat up all the browser memory and eventually cause a fatal error condition
!! Example
<$macrocall $name="wikitext-example-without-html"
src="""<<toc-all "exmp112">>"""/>
How can we create a simple edit toolbar button to insert a time stamp?
You can do it by a simple tiddler like this:
```
caption: CurrentTime
condition: [<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]
description: Insert Current Time
icon: $:/core/images/tip
shortcuts:
tags: $:/tags/EditorToolbar
title: $:/core/ui/EditorToolbar/Time
<$action-sendmessage
$message="tm-edit-text-operation"
$param="replace-selection"
text=<<now>>
/>
```
; How to create a macro equivalent to substr function in other labguages?
: There is no TW core substring filter, the only way that, by some creative usage of the `split`, `butfirst`, `first` and `join` operators.
!! Code
<<code-link "exmp127/macro/substr">>
;Remarks
* The `substr` has three input parameters
** `string` Required. Specifies the original string
** `start` Optional. This refers to the position of the original string from where the part needs to be extracted.
*** A positive number - Start at a specified position in the string
*** A negative number - Start at a specified position from the end of the string
*** 0 - Start at the first character in string
** `length` Optional. This refers to the length of the part of the string that needs to be cut from the original string.
*** A positive number - The length to be returned from the start parameter
*** Negative number - The length to be returned from the end of the string
*** If the length parameter is 0, NULL, or FALSE - it return an empty string
!! Example
<$importvariables filter="[prefix[exmp127/macro/substr]]">
<$macrocall $name="wikitext-example-without-html"
src="""<<<
<<substr string:"This_is_a_test.">>
<<substr string:"This_is_a_test." start:2 length:5>>
<<substr string:"This_is_a_test." length:4>>
<<substr string:"This_is_a_test." start:-5>>
<<substr string:"This_is_a_test." start:-10 length:"4">>
<<substr string:"This_is_a_test." start:0 length:-2>>
<<substr string:"This_is_a_test." start:-5 length:-2>>
<<<
"""/>
</$importvariables>
The `substr` works like PHP substr function can be found here: [[https://www.w3schools.com/php/func_string_substr.asp]]
;Create a table of all tiddlers, sort them alphabetically and display them in two columns, in left the title of tiddler and in the right the modified date of that tiddler
: Use two $list widget with proper html tags to create the table
<<code-link "exmp139/demo">>
;Rematks
* The first $list generates alphabets in order from A to Z
* A table row is created with a letter say `A` as header
* The second $list generates all tiddlers started with that letter e.g. `A`, `B`, etc and sort them using `[prefix<currentTiddler>sortan[]]` filter
* A table row is created and displays the tiddler title as a link using `<$link/>` in the left column and the created date using `<$view field="modified" format="date" template="YYYY.0MM.0DD"/>` in the right column
;Notes
* This is a modified form of solution proposed by [[Andres|https://groups.google.com/g/tiddlywiki/c/uAM0RDmpfrE/m/cHtPhAEfDgAJ]]. That solution has a bug in displaying tags!
; How to use a two way view template?
: Use `$list` widget with emptyMessage parameter and pass the second viewtemplate by emptyMessage parameter.
!! Example
Use a viewtemplate for all tiddlers tagged with `parent` as bellow
* if they also tagged with `second` format them as //Template1//
* else format them as //Template2//
```
<$list filter="[is[current]tag[parent]]">
<$list filter="[<currentTiddler>tag[second]]" emptyMessage={{Template2}}>
{{Template1}}
</$list>
</$list>
```
The second filter will return an empty result set if the current tiddler is not tagged by `second`. Then, in //Template2// you’d have the template that is only displayed for tiddlers tagged `parent` and //Template1// is displayed for those tiddler tagged both with `parent` and `second`.
;How to retrieve and display properties (index/value pair) of a DataTiddler?
Consider the below DataTiddler is used:
[[exmp039/roman-numbers]]
<$transclude tiddler="exmp039/sample-data"/>
!! Example i
Get the value for indexes: `one` and `four`
<$macrocall $name="wikitext-example-without-html"
src=""">{{exmp039/roman-numbers##one}}
>{{exmp039/roman-numbers##four}}
"""/>
!!! Remarks
* The `##` is used for transcluding the value of index/value pair from a DataTiddler `DataTiddler##Index`
A number of extended filters are necessary to manipulate lists.
The first set of filters are designed to move items from the tail of the list and insert them at specified locations in the list. Items are often appended to the list before using these filters. In general, these filters accept a suffix specifying the number of items to move (default to 1.)
A second set of filters are designed to either add or remove from the list, a selected range of items from an array. These filters are best used with a reference to an array, stored in a field or data index elsewhere in the wiki (they may be used with a simple list of items, provided the items do not include white space.) In general, these filters accept a suffix specifying the number of items to move (default to All.)
A third set of filters are especially designed to work with the ActionListops widget, and have specialised functions:
* The `cycle[]` operator selects the next/previous item from a reference list, to the first item in the current list which matches any item in the reference list. This may be used to cycle an item through the values in the reference list.
* The `keep[]` operator, selects only those items matching an item in the reference list. This may be used to display the currently selected item from the reference list.
<<alert danger "This is now part of Tiddlywiki Core.">>
A possible solution would be to add a new editor preview pane that contains a plain text editor so that you could switch to it to perform spell checking and correction.
To do so:
* Create a new tiddler called `$:/_EditorPreview`
* Tagged `$:/tags/EditPreview`, add a `caption` field containing `Spell check`, and the following content:
```
<$edit-text tiddler=<<currentTiddler>> class="tc-spell-check-preview"/>
<style>
.tc-spell-check-preview {width:100%;}
</style>
```
Then select “Spell check” as the editor preview.
It is needed to click on the preview editor textarea in order to activate spell checking and make the dotted underlines visible.
Look at: $:/_EditorPreview
;Add a new button to page controls to create a new tiddler with predefined tag and contents
:The below description explain step by step how to add a new button to pagecontrols including appearance in tools sidebar tab
<<docit>>
```
<$button class=<<tv-config-toolbar-class>> tooltip="Add new study tiddler">
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
<span class="chunk">{{$:/core/images/new-button}}</span>
</$list>
<$list filter="[<tv-config-toolbar-text>match[yes]]">
<span class="tc-btn-text"><$text text="New Study"/></span>
</$list>
<$action-sendmessage $message="tm-new-tiddler" tags="study" text={{AddStudyTemplate}}/>
</$button>
```
The "Page Controls" buttons that appear at the top of the sidebar (e.g., "new tiddler", "control panel", "save changes", etc.) are not stored in a single tiddler. Rather, each button definition has it's own tiddler, and these tiddlers are all tagged with "$:/tags/PageControls" to indicate that they should appear in that part of the Sidebar.
To define your own button, create a new tiddler (e.g., "MyButton")
1) First, add the $:/tags/PageControls tags to that tiddler.
2) Next, enter your button definition into the text area, like this:
<$button class="tc-btn-invisible"
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
{{$:/core/images/spiral}}
</$list>
<$list filter="[<tv-config-toolbar-text>match[yes]]">
<span class="tc-btn-text"><$text text="New Study"/></span>
</$list>
<$action-sendmessage $message="tm-new-tiddler" tags="study" text={{MyButtonTemplate}}/>
</$button>
3) Then, add a new field named "caption". In this field, enter:
{{$:/core/images/spiral}} New Study
4) and add another new field named "description". In this field, enter:
Use this button to create a new Study tiddler with default content
Then, create a separate tiddler named "MyButtonTemplate", containing the default content you want, i.e.,
Source:
! Findings
! Abstract
Once you have defined these tiddlers, it will automatically appear as a Page Control at the top of the Sidebar.
You can re-position this button to put it the desired order alongside the other PageControls
To do this, open the $:/ControlPanel (click the gear icon in the Sidebar).
1) The $:/ControlPanel has multiple levels of "tabs" for getting to the controls you need.
2) Select the "Appearance" tab (across the top). This will show a second level of tabs:
"Palette", "Story View", "Theme", "Toolbars" and "Theme Tweaks".
3) Select the "Toolbars" tab. This will show a third level of tabs, displayed vertically on the left:
"Edit Toolbar", "Editor Toolbar", "Page Toolbar" and "View Toolbar".
4) Select the "Page Toolbar" tab. This will display a set of checkboxes, showing all the buttons that are tagged with "$:/tags/PageControls".
If you've created your tiddler correctly, your new button will appear at the bottom of this list.
To reposition it, just grab it with the mouse and drag it to move it within the list.
;How to add the filter search interface into the sidebar tabs?
: Follow the several steps below
# Press the magnifying glass next to the standard sidebar search input to open $:/AdvancedSearch
# From the $:/AdvancedSearch *shadows* tab, search for "AdvancedSearch/Filter"
# Select "$:/core/ui/AdvancedSearch/Filter" from the search results to display that tiddler in the story
# Edit that tiddler and add a tag: "$:/tags/SideBar"
# You will now have a "Filter" tab in the sidebar. Select that tab to perform filter searches with the results displayed in the sidebar.
Extra goodness... there is a down-arrow button next to the filter search input. This button displays a dropdown list of pre-defined filter seaches. To add your own pre-defined filter searches to this dropdown list:
# Create a new tiddler (e.g., "MyFilterSearch") tagged with `$:/tags/Filter`
# Add a "description" field, e.g., "Apples not Oranges"
# Add a "filter" field containing the filter search syntax, e.g., `[search[apples]!search[oranges]]`
# Add a "list-before" field. Do not enter a value for this field. This will cause the entry to automatically appear before all other pre-defined filters in the list.
You can create as many custom filter searches as you like by following the above steps again, using different titles, descriptions, and filter field values.
One display issue to fix:
The list of pre-defined filters drops down to the RIGHT of the down-arrow button. In the sidebar, this typically results in part of the list flowing off the right edge of the window, making it hard to use since you can only see part of the filter descriptions. To fix this:
# <div>
Edit the shadow tiddler
$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown
</div>
#<div>
Change this line:
```
<$reveal state=<<qualify "$:/state/filterDropdown">> type="popup" position="belowleft" animate="yes">`
```
to
```
<$reveal state=<<qualify "$:/state/filterDropdown">> type="nomatch" text="" position="belowleft" animate="yes">`
```
This will shift the drop-down so it appears directly under the filter search input, rather than below the down-arrow button.
</div>
!! Part i: add brush loader
# Make sure you have the `highlight.js` plugin installed.
# <div>
Create a new tiddler as below. Name it whatever you like, here it is called //Extra brush loader//.
* title: `Extra brush loader`
* type: `application/javascript`
* field name: `module-type`
* field value: `startup`
* with the following as text field:
<<<
```
exports.after = ['load-modules'];
exports.startup = function startup() {
let hljs = $tw.modules.execute('$:/plugins/tiddlywiki/highlight/highlight.js');
$tw.modules.forEachModuleOfType('highlighter', function(title, module) {
let moduleSource = $tw.wiki.getTiddlerText(title);
console.log('loading brush: ' + title);
$tw.utils.evalSandboxed(moduleSource, {hljs:hljs, exports:{}}, title);
});
};
```
<<<
</div>
!! Part ii: add new brushes (languages)
# Create a new tiddler with any title you like.
# Set its type to `application/javascript`
# Add a new field, name it `module-type` and set it to `highlighter`
# Add the below line as its text field
#* `if(typeof hljs !== 'undefined') {}`.
# Download the new brush (language) you like from [[https://cdnjs.com/libraries/highlight.js]].
# Open the brush you downloaded from step 5 above in a text editor and add its content between above curly brackets.
# Save and reload wiki
# For any other language to be added repeat these seven steps.
!! Demo
For a demo have a a look at: https://hoelz.ro/files/highlighter-example.html
<<alert warning "''Note'': You need to have the `highlight.js` plugin installed in your wiki. If not from control panel, plugins, click get more plugins and install the `highlight.js`.">>
!! Remarks
* See [[Add More Language Brushes to Highlight.js Plugin]]
* Using these procedure, you can add brushes for Fortran, Matlab, Julia, ...
There are three different methods to add new language brushes to highlight.js plugin
# Using Tiddlywiki on node.js you can simply follow the instruction has been given in the highlight.js plugon [[$:/plugins/tiddlywiki/highlight/howto]]. This method is the simplest and the recommended one
# Manually create `$:/plugins/tiddlywiki/highlight/highlight.js` using the instruction given in [[Manually Add More Language Brushes to Highlight.js]] and overwrite the plugin tiddler
# [[Add Language Brushes to Highlight.js Using Startup Modules]]. This is a flexible method you can append new language bruches to exisiting highlight.js plugin brushes.
Create notes for slides (tiddlers tagged with slide
! Add new fields
; How to add a new field to a series of tiddlers?
: List them and use `fieldmangler` to add the new filed.
!! Example
Add the new filed `rank` to all tiddlers tagged with `exmp029`
><$macrocall $name="wikitext-example-without-html"
src="""<$button> Add the new rank field
<$list filter="[tag[exmp029]]">
<$fieldmangler>
<$action-sendmessage $message="tm-add-field" $param="rank"/>
</$fieldmangler>
</$list>
</$button>
"""/>
!! Remarks
# The `list` widget list all tiddlers tagged with `Links`.
# The `action-sendmessage` widget
# The button widget triggers the `tm-add-field` and add the `rank` field to all those tiddlers.
! Remove fields
; How delete a field from a series of tiddlers?
: List them and use `fieldmangler` to delete the filed.
!! Example
Delete the filed `rank` from all tiddlers tagged with `exmp029`
><$macrocall $name="wikitext-example-without-html"
src="""<$button> Delete the rank field
<$list filter="[tag[exmp029]has:field[rank]]">
<$fieldmangler>
<$action-sendmessage $message="tm-remove-field" $param="rank"/>
</$fieldmangler>
</$list>
</$button>
"""/>
!! Remarks
# The `list` widget list all tiddlers tagged with `exmp029` which has a field `rank`
# The `action-sendmessage` widget
# The button widget triggers the `tm-remove-field` and deletes `rank` field from all those tiddlers.
<<alert info "The field mangler widget manipulates the fields and tags of a tiddler.">>
;How to add/remove DataTiddler properties (index/value pairs) using a TW script?
To do this use the `action-setfield` widget as below. Note that the `action-setfield` is used within triggering widgets such as the ButtonWidget.
!! Add a new index/value pair
<<<
To add a new index/value pairs use the `action-setfield` widget and specify both the `$index` and `$value` parameters.
```
<$action-setfield
$tiddler="your-DataTiddler"
$index="property-name"
$value="property-value"
/>
```
* Example
Add the index/vlue (`PNG: Portable Network Graphics`) to the `Acronyms` DataTiddler.
```
<$action-setfield $tiddler="Acronyms" $index="PNG" $value="Portable Network Graphics"/>
```
<<<
!! Remove an index/value pair
<<<
To remove an index/value pair use `action-setfield` with //NO// `$value` parameters. //When no value is specified//, `$index` ''will be deleted''.
* Example
Remove the index/vlue (`PNG: Portable Network Graphics`) from the `Acronyms` DataTiddler.
```
<$action-setfield $tiddler="Acronyms" $index="PNG"/>
```
<<<
<<alert info "''Note'' that the `action-setfield` is used within triggering widgets such as the ''ButtonWidget''.">>
!! For more information
* See it in action: [[Example: Add/Remove DataTiddler Indexes]]
* https://tiddlywiki.com/#ActionSetFieldWidget
; How a macro can add and& remove tags from a tiddler with a single button?
: There are two solutions, one using [[fieldmangler|Add Remove Tags Using Fieldmangler]] and the other is using [[ActionListops|Add Remove Tags Using ActionListops]]
!! Code
The below code shows how to use `action-listops` to add/remove tags from a tiddler.
<<code-link exmp024/macro/add-remove-tag-using-actionlistops>>
<<add-remove-tags xx OldTopics Topics>>
!! Remarks
* The `add-remove-tags` macro creates a button with a line of text to show which tag will be added and which will be removed.
* The first `$action-listops` adds the tag `new` to the tiddler passed its name by parameter `tiddler`
* The second `$action-listops` removes the tag `old` to the tiddler passed its name by parameter `tiddler`
!! Example
The below example remove `OldTopics` tag and adds `Topics` tag to [[exmp024/data/tid01]].
<$importvariables filter="exmp024/macro/add-remove-tag-using-actionlistops">
<$macrocall $name="wikitext-example-without-html"
src="""<<add-remove-tags tiddler:"exmp024/data/tid01" oldTag:"OldTopics" newTag:"Topics">>
"""/>
</$importvariables>
!! Example ii
Write a macro to tag all the `ShoppingItem` tiddlers with a `SamsClub` tag. Here there are tiddlers tagged with `ShoppingItem` and one needs to list all of them and then tag them with the new `SamsClub` tag.
```
\define addTag(tagged,newtag)
<$button> add ''<$text text="""$newtag$""" />'' to ''<$text text="""$tagged$""" />'' tiddlers
<$list filter="[tag[$tagged$]!tag[$newtag$]]">
<$action-listops $field="tags" $subfilter="[[$newtag$]]" />
</$list>
</$button>
\end
```
and then call it like below
```
<<addTag ShoppingItem SamsClub>>
```
; How a macro can add & remove tags from a tiddler with a single button?
: There are two solutions, one using [[fieldmangler|Add Remove Tags Using Fieldmangler]] and the other is using [[ActionListops|Add Remove Tags Using ActionListops]]
!! Code
The below code shows how to use `fieldmangler` to add/remove tags from a tiddler.
<<code-link exmp024/macro/add-remove-tag-using-fieldmangler>>
;Remarks
* The `myactions` macro uses `old` and `new` variables and uses the `fiedmanager` widget to adds the `newTag` and removes the `oldTag`.
* The `add-remove-tags` macro creates a button with a line of text to show which tag will be added and which will be removed. Note there are two calles to `tag` macro which creates two tag pills.
!! Example
The below example remove `OldTopics` tag from tiddler [[exmp024/data/tid02]] and add new tag: `Topics` to it.
<$importvariables filter="exmp024/macro/add-remove-tag-using-fieldmangler">
<$macrocall $name="wikitext-example-without-html"
src="""<<add-remove-tags tiddler:"exmp024/data/tid02" oldTag:"OldTopics" newTag:"Topics">>
"""/>
</$importvariables>
; How to use alias for template?
Sometimes you have a template for example in a plugin with a long name like
```
$:/plugins/publisher/plugin-name/template/show-raw-content
```
To use a friendly and small name (alias) Tobias Beer proposed to create a new tiddler as below and use it as an alias
title: `tpcode`
```
{{||$:/plugins/publisher/plugin-name/template/show-raw-content}}
```
Thene whenever you wish to transclude using this template use the alias name. For example to transclude myTiddler
```
{{myTiddler||tpcode}}
```
; Assume you have messages stored in tiddlers, how to create a message of the day generator?
: Use a pattern for naming message with sequential number and match against day number of month using the `now` macro
<<alert info "See also [[Message of the Day Generator]] which uses dataTiddler to implement the generator.">>
!! Solution
The below solution assumes
* message tiddlers have title like `Message xx` where xx is two digits number like 01 02. ... 31
* message tiddlers have been tagged with `message` (this can be any other criteria like tiddlers have a field called `message`, so different script can be used)
```
\define tid() Message $(item)$
<$set name="dd" value=<<now 0DD>> >
<$list filter="[tag[message]removeprefix[Message ]match<dd>]" variable=item>
<$transclude tiddler=<<tid>> mode=block/>
</$list>
</$set>
```
!! Remarks
* The `$set` widget stores the day number of month with leading zero format `<<now 0DD>>`
* The `$list` widget filters all tiddlers their title start with `Message` and remove the prefix to find the sequence number. Note to the trailing space in `Message `
* It then matches against day number
* The found item then is shown by `$transclude` widget. Note to `mode=block`
** The tiddler parameter in $transclude is the title of message tiddler
How dynamically create a reference in tiddler widget and access the indexes of a data tiddler
<$macrocall $name="wikitext-example-without-html"
src="""<$tiddler tiddler={{{ [is[current]removeprefix[Another ]addsuffix[ Example]] }}} >
<<currentTiddler>>
* Ali is {{##Ali}}
* Mohammad is {{##Mohammad}}
* Hirad is {{##Hirad}}
</$tiddler>
"""/>
!! Remarks
* The `tiddler={{{...}}}` parameter is where the magic happens...
* Within the enclosing "triple curly braces" is some "filter syntax". This syntax takes the current tiddler title and removes the text "Another" from the beginning of the title and add the suffix " Example", thus producing the correct reference to the corresponding data tiddler. //Note to the spaces.//
* With this bit of magic, it will automatically display index values from the corresponding "data" tiddler.
---
Related tiddlers
<<list-links "[tag[exmp015]] -[<currentTiddler>]">>
;How to edit a transcluded tiddler inline?
:Use a proper template
!! Solution
The below template impements the inline full editor. It uses the core edit template [[$:/core/ui/EditTemplate]]. It seems a little slow but works fine.
<<code-link exmp132/template/TE>>
To use it transclude a tiddler using the above template as below
```
{{myTiddler||exmp132/template/TE}}
```
!! Example
See [[exmp132/data/tid01]] in action.
;Remarks
* The editing seems slow
* The inline editor has an empty titlebox which seems odd
*
!! More tools
See also [[Folding Editor]] and [[inc plugin|http://tobibeer.github.io/tw5-plugins/#inc-Examples]] from Tobias Beer.
<<docit>>
See this solution by [[TonyM|https://groups.google.com/d/msg/tiddlywiki/tYgM6kh9lNA/51av8tdhAAAJ]]
;How can I append items to `list field` of a tiddler?
Assume the output of a list widget should be appended to the end of items in a list field of a tiddler. The below example shows all tiddlers tagged with `myTag` are appended to the `list` field of `$:/state/reference` tiddler.
```
<$button>
<$action-listops $tiddler="$:/state/reference" $subfilter="[tag[myTag1]]"/>
Populate list field of state reference
</$button>
```
This works using the `action-listops` widget.
See also: https://tiddlywiki.com/#ActionListopsWidget
\define addmember()
<$tiddler tiddler="$:/temp/newproject"><$action-listops $field="members" $subfilter="[{!!newmember}]"/></$tiddler>
\end
How is it possible to choose and append tiddlers to a list based on some filter criteria?
```
\define addmember()
<$tiddler tiddler="$:/temp/newproject"><$action-listops $field="members" $subfilter="[{!!newmember}]"/></$tiddler>
\end
```
<$macrocall $name="wikitext-example-without-html"
src="""Member List: {{$:/temp/newproject!!members}} + <$select tiddler="$:/temp/newproject" field="newmember" actions=<<addmember>>><$list filter="[tag[contact]]"><option>{{!!title}}</option></$list></$select>
"""/>
Tiddlywiki can dynamically apply styles to tiddlers based on filters. A filter can screen tiddlers based on some criteria.
!! Example
Assume it is desired to change the color of border of each existing or newly created tiddler has a field called `xmp`. To do this
# Create a new tiddler tagged with `$:/tags/Stylesheet`
#* Name it whatever you want, here it is [[stylesheet/exmp023]]
# <div>
Put the below script inside tiddler of step 1
```
\define assign-css()
\rules only
[data-tiddler-title="$(currentTiddler)$"].tc-tiddler-frame {
border-color: red;
}
\end
<$list filter="[all[tiddlers]has:field[xmp]]">
<<assign-css>><br>
</$list>
```
* In the above script, the `$list` widget select all tiddlers has a `xmp` field .
* It then calls the `assign-css` macro to apply the custom styles (here border-color) to selected tiddlers using the `data-tiddler-title` selector
* Every newly created tiddler having a `xmp` filed will get this custom style.
</div>
# Create some test tiddlers to see the result
#* Here two tiddlers were created as below
#** [[demo/exmp023/p01]]
#** [[demo/exmp023/p02]]
<<alert info "See the new pluging `escapecss[]` by [[BTC|https://burningtreec.github.io/TW5-escapecss/]]" for more sophisticated cases">>
http://template-button.tiddlyspot.com/#Nouveau%20tiddler
<<docit>>
Archipel is a proof of concept called that uses D3JS into Tiddlywiki to vizualize the tiddlyWiki content.
The target is to build a tool for innovation management that will help to visualize and navigate into knowledge contained into tiddlers based on their title and tags.
This Javascript widget for Tiddlywiki, uses a D3.js version 5.0 plugin to build a data visualization Knowledge map of tiddler's table of content, as zoomable circle packs.
There is another taste of using D3JS by Roland known as [[d3trees|http://viewtransform.net/d3trees/d3trees-preview.html]]. Discussion on d3trees can be found on [[Forum|https://groups.google.com/d/msg/tiddlywikidev/KEImPODsLHA/DuIbYaUVAQAJ]]
For citation and auto numbering
Petruschka and Riz:
<<docit>>
; How to convert number in one base to another?
: Using the mathematical operators in Tiddlywiki 5.1.21+ it is possible to have base conversion
<<docit>>
!! Macro
<<code exmp097/macro/re-base>>
!! Syntax
```
<<re-base "base" "decimal input"
```
Supports base-2 to base-36.
!! Example
<$importvariables filter="[[exmp097/macro/re-base]]">
<$macrocall $name="wikitext-example-without-html"
src=""";Examples
:1025 decimal = <<re-base 2 1025>> base 2
:1025 decimal = <<re-base 10 1025>> base 10
:1025 decimal = <<re-base 16 1025>> base 16
:1025 decimal = <<re-base 26 1025>> base 26
:1025 decimal = <<re-base 27 1025>> base 27
:1025 decimal = <<re-base 36 1025>> base 36
"""/>
</$importvariables>
Batch operation means do p[eration on all tiddlers meet certain criteria.
!! Certain criteria means like below
* all have special tag
* all have certain field
* all have certain field value
* all have certain creation/modified data
* all have certain words in their title
* all have certain words in their body (text)
!! Operation (batch operation)
* Delete Those Tiddlers
* Delete a certain fields from Those Tiddlers
* Add a new tag to Those Tiddlers
* Add a new field to Those Tiddlers
* Change a field in Those Tiddlers
* Add some text to Those Tiddlers
<<alert primary "Those Tiddlers means: meet certain criteria">>
See tiddlers tagged with <<tag batch>>
The TW built-in [[Advanced Search|https://tiddlywiki.com/#%24%3A%2FAdvancedSearch]] can do batch operation like batch export and batch delete of tiddlers matching a criteria
!! Exporting tiddlers matching a criteria
From: [[Tiddlywiki.com|https://tiddlywiki.com/#How%20to%20export%20tiddlers]]
# Open [[Advanced Search|https://tiddlywiki.com/#%24%3A%2FAdvancedSearch]] or click little magnifying glass next to the search area on the sidebar
# Click on the "Filter" tab of the Advanced Search tiddler. Only the Filter tab will allow you to export a selection of tiddlers. Filters follow a particular syntax. Click on this Filters link to learn about how to make filters.
# Once you have written a filter, a list of tiddlers matching the filter will appear.
# Now you can click on the export tiddler button to the right of the filter input field. A pop-up menu will offer you the chance to export tiddlers in multiple formats. Currently, the export formats available are:
#* CSV file format
#* JSON file format
#* Static HTML file
#* ".tid" file format
# Now you can click on the ''export tiddler'' button to the right of the filter input field. A pop-up menu will offer you the chance to export tiddlers in multiple formats.
!! Deleting tiddlers matching a criteria
# Open [[Advanced Search|https://tiddlywiki.com/#%24%3A%2FAdvancedSearch]] or click little magnifying glass next to the search area on the sidebar
# Click on the "Filter" tab of the Advanced Search tiddler. Only the Filter tab will allow you to export a selection of tiddlers. Filters follow a particular syntax. Click on this Filters link to learn about how to make filters.
# Once you have written a filter, a list of tiddlers matching the filter will appear.
# Now you can click on the ''delet tiddlers'': trash button to the right of the filter input field. A pop-up menu will ask you "Are you sure you wish to delete xx tiddler(s)?" Click ''Delete these tiddlers''.
; How to edit the title of a group of tiddlers?
First, a bit of history: The current version of TiddlyWiki ("TW" or "TW5") was completely re-written from the ground up several years ago to take advantage of modern browser tech such as HTML5. Additionally, in TWC, writing programmatic manipulations of tiddlers required either javascript programming or use of extra "plugins" to provide the needed syntax while in TW5, much of the programmatic syntax is provided natively within the TWCore.
First filter the tiddlers by tag and then execute the batch edit on this group. What I want to do is to put something at the begining of each tiddler's title (like adding prefix) without changing the rest of the tittle. So in the end each tiddler will have the same prefix but different rest of the title.
To "filter tiddlers by tag", use the `<$list>` widget, like this:
```
<$list filter="[tag[sometag]]">
</$list>
```
The `<$list>` widget uses the filter to find all the matching tiddlers and then loops through all the matches and sets the value of the `<<currentTiddler>>` variable to each title, in turn. By default, the `<$list>` widget will simply output the value of the `<<currentTiddler>>` resulting in the display of titles of all the matching tiddlers. To make the widget do something else, you need to add more syntax //within// the enclosing `<$list>...</$list>` that references the `<<currentTiddler>>` variable to act on each tiddler (e.g., setting a specified field value in the `<<currentTiddler>>`)
For example, if you wanted to add/update a field named //matched// to "true", you would use the `<$action-setfield>` widget, like this:
```
<$list filter="[tag[sometag]]">
<$action-setfield $tiddler=<<currentTiddler>> matched="true"/>
</$list>
```
However, the above code is //NOT// enough to get the job done. Because the `<$action-setfield>` widget changes stored tiddler values, it requires a user-initiated //trigger// event to start the process. To achieve this, you can enclose the above `<$list>...</$list>` loop within a `<$button>` widget, like this:
```
<$button>
BUTTON TEXT
<$list filter="[tag[sometag]]">
<$action-setfield $tiddler=<<currentTiddler>> matched="true"/>
</$list>
</$button>
```
So... for your this case, you might think that the code would be something like:
```
<$button>
BUTTON TEXT
<$list filter="[tag[sometag]]">
<$action-setfield $tiddler=<<currentTiddler>> title="...NEW TITLE HERE..." />
</$list>
</$button>
```
However... there are a few tricky details to consider:
First, tiddler //titles// are not just display text, but are used to uniquely identify each tiddler. Thus, changing a title actually ''copies'' the existing tiddler content (//all fields//) to another tiddler with the specified new title and //renaming// a tiddler actually takes TWO actions:
* first change the title (creating a new tiddler), and then
* delete the tiddler with the old title, like this:
```
<$button>
BUTTON TEXT
<$list filter="[tag[sometag]]">
<$action-setfield $tiddler=<<currentTiddler>> title="..." /> <!-- CREATES NEW TIDDLER -->
<$action-deletetiddler $tiddler=<<currentTiddler>> /> <!-- REMOVES OLD TIDDLER -->
</$list>
</$button>
```
The next problem is that TW5 syntax does not do direct text manipulation "in line", so assembling the desired new title (i.e., prepending some text to the beginning of the existing title) requires use of a little "helper" macro, like this:
```
\define newTitle(prefix) $prefix$$(currentTiddler)$
```
This macro takes one parameter, "prefix". The value of the parameter is rendered into the output using the `$...$` syntax (i.e., "`$prefix$`"). The value of the current tiddler title is already available as a variable defined in the calling scope, and is referenced using the `$(...)$`.
Putting it together, we get:
```
\define newTitle(prefix) $prefix$$(currentTiddler)$
<$button>
BUTTON TEXT
<$list filter="[tag[SOMETAG]]">
<$action-setfield $tiddler=<<currentTiddler>> title=<<newTitle "SOMEPREFIX">> />
<$action-deletetiddler $tiddler=<<currentTiddler>> />
</$list>
</$button>
```
While this works, it would be nicer if we didn't "//hard code//" the button label, tag to match and the prefix to be added. To do this we can move the `<$button>` definition into a macro, and then invoke the macro, passing in the desired values, like this:
```
\define newTitle(prefix) $prefix$$(currentTiddler)$
\define addPrefix(label,tag,prefix)
<$button>
$label$
<$list filter="[tag[$tag$]]">
<$action-setfield $tiddler=<<currentTiddler>> title=<<newTitle "$prefix$">> />
<$action-deletetiddler $tiddler=<<currentTiddler>> />
</$list>
</$button>
\end
<<addPrefix "ClickMe!" "sometag" "SomePrefix">>
```
That should do it.
An observation on behavior of links to tiddlers that are embedded into svgs (will seem out of context till I post about svg overlays for tiddler images)
Using svg's for map & diagrams with links to tiddlers embedded into the svg code such as
``<a xlink:href="#tiddler title">`` (Deprecated)
``<a href="#tiddler title">``
- - normally, full or shortened standard urls are used but "#" allows you ro target individual tiddlers inside the wiki.
That "#tiddler title" may cue you into what will result-- a permalink link in the browser address bar.
1- The permalink url in the browser address bar will change with each different svg embedded link
2- If you close the tiddler that gets opened, the embedded svg link will not open it again while the browser address bar contains its permalink url, making it look like that embedded link doesn't work any longer
3- If you refresh the wiki without noticing the permalink url and clearing it, you will be left wondering why an unexpected tiddler displays and not your default start up tiddlers
; Which pattern is better in using a button widget?
* Pattern A
```
<$button actions=""> ...</$button>
```
* Pattern B
```
<$button>
actions
...
</$button>
```
<<<Jeremy Ruston
I personally prefer a variant of style A where one uses a variable to store the action widgets instead of a separate tiddler:
<<<
!! Example
* First store the actions in a variable (here a macro)
```
\define my-actions()
<$action-navigate $to="$:/ControlPanel"/>
<$action-setfield $tiddler="$:/SiteTitle" $value={{{ [{$:/SiteTitle}addsuffix[!]] }}}/>
\end
```
* Then pass the variable to actions attribute of a `$button` widget.
```
<$button actions=<<my-actions>> >
Click me to open control panel and add an exclamation mark to the site title
</$button>
```
<<alert warning "''Note'': Pattern A is the recommended pattern. You can define as many action you like inside a macro and then pass it to button widget.">>
;Remark
:There is a priority in running actions given to $button actions attribute (pattern A) and those located inside $button widget (pattern B). <<docit>> see: [[Button Actions versus Button Inline Actions]]
;Which filter run faster?
:Assume you have more than 100 tiddlers in their tittle there is a "Demo" word! Some of them are hidden tiddlers, their name started with "$:/" what is the best filter to list them?
* Case i: two search:title
```
<$list filter="[search:title[exa]] -[search:title[$:]]">
</$list>
```
><$list filter="[search:title[exa]] -[search:title[$:]]">
</$list>
* Case ii: one search:title and negate prefix
```
<$list filter="[search:title[exa]!prefix[$:/]]">
</$list>
```
><$list filter="[search:title[exa]!prefix[$:/]]">
</$list>
* Answer
This would probably be a little better:
`<$list filter="[search:title[Demo]!prefix[$]]">`
Because this way you don't make the underlying javascript look for the `$` anywhere except the first character location.
Also, yours would omit:
`X$:/My Demo`
Which might exist if a user wanted to make a system tiddler temporarily visible in the recent tiddlers sidebar.
* Case iii
```
<$list filter="[!is[system]search:title[exa]]">
</$list>
```
><$list filter="[!is[system]search:title[exa]]">
</$list>
Ref: [[Jeremy Ruston|https://groups.google.com/d/msg/tiddlywiki/XuHiTCI4N60/v2Yrtpv8EAAJ]]
There is a built-in filter operator `is[system]` for detecting system tiddlers, so a better choice would be:
`[!is[system]search:title[Demo]]`
Again, we filter out system tiddlers before doing the search so as to reduce the number of tiddlers that we have to search.
!! More discussion
# [[Performance comparision|https://groups.google.com/d/msg/tiddlywiki/FmuBA2SMjxw/-AkxAPCnCAAJ]] between `[is[current]]` and `<currentTiddler>`
# [[A fast list|https://groups.google.com/d/msg/tiddlywiki/XuHiTCI4N60/_g8ZUvGuAwAJ]]
HTML bookmarks are used to allow readers to jump to specific parts of a Web page. Bookmarks can be useful if your webpage is very long. To make a bookmark, you must first create the bookmark, and then add a link to it. When the link is clicked, the page will scroll to the location with the bookmark.
It seems it possible to make a bookmark in TW.
!! Create a bookmark
First create a bookmark using `id`
```
<h2 id="C4">Chapter 4</h2>
```
!! Then, add a link to the bookmark
(Jump to Chapter 4), from within the same page
```
<$link href="#C4">Jump to Chapter 4</$link>
```
<$link href="#C4">Jump to Chapter 4</$link>
@@color:#f00;background-color:#eee;padding:10px;
Check with Jeremy
Also see this wiki uses internal-link and anchor
[[Internal-link Demo|http://intlinks.tiddlyspot.com/#tw-href5]]
@@
From <$link to=<<currentTidler>>><$view field=title/></$link>
<div style="background:#dfe7ff;padding:10px">
{{!!text}}
</div>
How we can create `tabs` from complex part of texts? Assume these parts are stored in tiddler fields
```
<$wikify name=Résumé text='{{!!released}} {{!!author}}-Résumé'>
<$wikify name=Notes text='{{!!released}} {{!!author}}-Notes'>
<<tabs "[<Résumé>] [<Notes>]" "Click the little link">>
</$wikify>
</$wikify>
```
* ''Pitfall''
;[[Jeremy Ruston|https://groups.google.com/d/msg/tiddlywiki/w2kI4_VeohM/U8kwsI6TBwAJ]]
Just to point out a pitfall of that approach -- the tranclusions {{!!released}} and {{!!author}} will be wikified, so if you have an author Mary McManus, then their second name would be turned into a link.
If you want to display those fields without wikifying them, then use the `<$text text={{!!released}}/>` or `<$view field="released"/>` widgets.
; How customize a button using the CSS class?
: The `$button` widget has a CSS class which lets to customize the appearance of a button.
!! Example
Create a class to set `yellow` as button background and `cyan` on mouse hover.
<<wikitext-example-without-html
src:"""<$button class="mycolor">
adf
</$button>
<style>
.mycolor {background:yellow}
.mycolor:hover {background:cyan}
</style>
""">>
!! Remarks
There are ready to use classes in Tiddlywiki core can be used for button for example,set class to `tc-btn-invisible` `tc-tiddlylink` to have a button look like an internal link.
<<wikitext-example-without-html
src:"""<$button class="tc-btn-invisible tc-tiddlylink">
adf
</$button>
""">>
\define my-actions()
<$action-sendmessage $message="tm-home"/>
<$action-sendmessage message="tm-full-screen" param="enter">
\end
!! Go to home and fullscreen
This button close all tiddlers by triggering the Home action, and then goes to the full screen mode. It uses a macro for actions as below
<<<
```
\define my-actions()
<$action-sendmessage $message="tm-home"/>
<$action-sendmessage message="tm-full-screen" param="enter">
\end
```
Macro `my-actions` take do actions
# closes all tiddlers and go to home by `$message="tm-home"`
# goto fullscreen by `$message="tm-full-screen"`
<<<
><$macrocall $name="wikitext-example-without-html"
src="""<$button actions=<<my-actions>> >
Home and Full Screen
</$button>
"""/>
[img class="float-right"[$:/favicon.ico]]
!! ''A quick tutorial on TW Button''
Here the usage and application of button are shown through examples.
<<tabs tabsList:"[tag[button]!has[draft.of]nsort[]] -[[Macro Tutorial]]" default:"Go Full Screen" class:"tc-vertical">>
; How to add a sort button to tagpill dropdown menu?
: Put a sorting macro in a tiddler tagged with `$:/tags/TagDropdowb`.
!! Example
Develop a buttons to sort tiddlers in ascending or descending order and add them to dropdown menu in tagpill.
<<<
The below code does the job, create a new tiddler, name and tag it as below and put the code inside it.
* Title: macro/sort-tagged-tiddlers (or whatever you want)
* Tag: `$:/tags/TagDropdown`
```
\define tagSortFunc(mainTag, order:"ascend")
<$reveal type="match" default="ascend" text=<<__order__>> >
<$action-listops $tiddler=<<__mainTag__>> $filter="[tag<__mainTag__>sortan[]]"/>
</$reveal>
<$reveal type="nomatch" default="ascend" text=<<__order__>> >
<$action-listops $tiddler=<<__mainTag__>> $filter="[tag<__mainTag__>!sortan[]]"/>
</$reveal>
\end
\define sortInTagDropdown()
<$button tooltip="Sort tiddlers A → Z" aria-label="Sort tiddlers A → Z" class='tc-btn-invisible'>Sort {{!!title}} tiddlers A → Z
<$macrocall $name="tagSortFunc" mainTag={{!!title}}/>
</$button>
<$button tooltip="Sort tiddlers Z → A" aria-label="Sort tiddlers Z → A" class='tc-btn-invisible'>Sort {{!!title}} tiddlers Z → A
<$macrocall $name="tagSortFunc" mainTag={{!!title}} order="no-ascend"/>
</$button>
\end
<<sortInTagDropdown>>
```
<<<
!! Remarks
* The `sortInTagDropdown` create two buttons for ascending and descending sort order
* It then calls the `tagSortFunc` to sort alphanumerically the tiddlers tagged with the current tag
!! See it in action
[[Example 37|macro/sort-tagged-tiddlers]] impelemnt the above code. To see it in action click on a tagpill and see the two new buttons
* `Sort tiddlers A → Z` and
* `Sort tiddlers Z → A`
!! Similar topics
The below topics are related to sort items
<<list-links "[search:title[sort]] [search:keywords[sort]] -[<currentTiddler>]" type:"ol">>
;How a nested macro can be called inside its parent?
: It seems nested macro acts like internal variable and the variable transclusion like `$(child)$` does not work anymore!
!! Symptom
<<<
Sometimes it is required to give access to macros using import pragma. One example is a tiddler contains macro and tagged with `$:\tags\Macro` cannot have an import pragma and the solution is to use a nested import or import pragma inside macro.
<<<
!! Example
<<<
Assume you have a macro called path in tiddler `aa` like below
```
\define path() $:/folder1/subfolder11
```
Then in another tiddler called `bb` and tagged with `$:/tags/Macro` you have the below macro
```
\define mymac(file)
\import aa
<$vars fullpath="$(path)$/$file$">
some code go here!
<<fullpath>> is wrong!
</$vars>
\end
```
Note to the import pragma! Call `myma`c like below in another tiddler
```
<<mymac readme>>
```
You get wrong result for `fullpath`, beacuse as `$(path)$` does not work anymore!
<<<
!! Clarification
<<<
A macro only does two kinds of processing:
* replace occurrences of $foo$ with the value passed in as a parameter
* replace occurrences of $(foo)$ with the value of a variable defined *outside* the macro
It then returns the contents of the macro, with the replacements, which can then be further parsed in the calling context. Thus, in above example, using the `\import aa` pragma inside `mymac` macro doesn't work as we want because <code>$(path)$</code> is not defined ''outside'' the macro definition.
The following, however, DOES work...
in tiddler `bb`, write:
```
\define mymac_inner(file)
<$vars fullpath="$(path)$/$file$">
some code go here!
<<fullpath>> is wrong!
</$vars>
\end
\define mymac(file)
\import aa
<<mymac_inner $file$>>
\end
```
Using the above, one can then call `<<mymac readme>>` from another tiddler, and get the results is expected.
<<<
<<alert info """The variable transclusion like <code>$(child)$</code> from inside a macro does not work if `child` is imported to a parent macro.""">>
;Remarks
* parent macro is the macro has import pragma or $importvariables widget
* child macro is the one imported into a parent macro
; The problem of wikification of camel case word in list output
: Use `text` widget
! Problem
```
<ol>
<$list filter="[tag[100.02]]" variable="myTid">
<li> <<myTid>></li>
</$list>
</ol>
```
<ol>
<$list filter="[tag[100.02]]" variable="myTid">
<li> <<myTid>></li>
</$list>
</ol>
! Solution
```
<ol>
<$list filter="[tag[100.02]]" variable="myTid">
<li><$text text=<<myTid>> /></li>
</$list>
</ol>
```
<ol>
<$list filter="[tag[100.02]]" variable="myTid">
<li><$text text=<<myTid>> /></li>
</$list>
</ol>
;What is _canonical_uri?
: It lets you wrap an external tiddler into a tiddler so that you can refer to it more easily.
!! Example
For example, create a tiddler titled ''MyImage'' with the type `image/jpeg` and the `_canonical_uri` field set to ''images\anatomy.jpg''. Then you can embed it as an image with `[img[MyImage]]` or `{{MyImage}}`.
The advantage of using it is that you can subsequently change the URL of the image just by changing it in a single place.
; How can center table horizontally in a tiddler:
: Create a tiddler tagged with `$:/tags/Stylesheet` and put the below css code inside it.
```css
.tc-tiddler-body table.centered{
margin:0 auto;
}
```
\define set-lineheight()
<$list filter="[range[18,24]addsuffix[px]after{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize!!text}]" variable="font-size">
<$action-setfield $tiddler="$:/themes/tiddlywiki/vanilla/metrics/bodylineheight" text="26px"/>
</$list>
<$list filter="[range[10,18]addsuffix[px]after{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize!!text}]" variable="font-size">
<$action-setfield $tiddler="$:/themes/tiddlywiki/vanilla/metrics/bodylineheight" text="22px"/>
</$list>
\end
Other Ref: [[JD|https://groups.google.com/d/msg/tiddlywiki/7XkeusUTdZU/x3kv5FHlAwAJ]]
''Font size:''
<$select tiddler='$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize' defualt="15px"
actions=<<set-lineheight>> >
<$list filter="[range[10,24]addsuffix[px]]" variable="font-size">
<option value=<<font-size>>><<font-size>></option>
</$list>
</$select>
<$button>Reset
<$action-setfield $tiddler="$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize" text="15px"/>
<$action-setfield $tiddler="$:/themes/tiddlywiki/vanilla/metrics/bodylineheight" text="22px"/>
</$button>
!! How to change the body font?
To change the body font size and line height the below two system tiddlers are used
* [[$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize]]
* [[$:/themes/tiddlywiki/vanilla/metrics/bodylineheight]]
Here a code has been developed to use a select widget to handle body font sizing. To see the code edit this tiddler. Here based on the font size the line height is changed. A new `range` operator from TW5.1.18 is used to generate a list of font sizes. The line height here is set in two values, for small font `22px` and for big font `26px` line height is used.
<<alert primary "If you want to have the control buttons above the sidebar tag this tiddler with `$:\tags\PageControls`">>
```css
textarea, input[type="text"], input[type="search"], input[type=""], input:not([type]) { padding-left: 0.2em; padding-bottom: 0.175em; -webkit-appearance: none; -moz-appearance: none; }
.tc-sidebar-lists .tc-search { margin-top: 40px; margin-bottom: 20px; position: relative; z-index: 10; }
.tc-search input[type="search"] { border: 2px inset black; box-sizing: border-box; margin: 0; }
.tc-search input[type="search"]:focus { border: 2px inset red; box-sizing: border-box; margin: 0; }
```
Note the two last lines, they demonstrate how to address the search field in the sidebar AND in the advanced search at the same time.
The very last line shows how to change the border color when the field has the focus.
The first line in the code adds some spacing between borders and content of most fields in TW and probably makes sure mobile browsers do not apply their own styles. I don’t know if this is still necessary.
The second line adds some whitespace above and below the search field in the sidebar, just a matter of taste I guess.
You can change your password from your control panel.
Get to your control panel using a URL like this:
```
http://your-site-name.tiddlyspot.com/controlpanel/
```
For example if your wiki is kookmae, then use the below address
```
http://kookma.tiddlyspot.com/controlpanel/
```
# Enter the current password
# Choose a new password
# Retype it and press Update
;How change the background color of sidebar
: Target the CSS element `tc-sidebar-scrollable`
!! Solution
# Create a new tiddler
# Tag it with `$:/tags/Stylesheet`
# Customize `tc-sidebar-scrollable`
!! Example
To change the whole sidebar background to yellow, use the below CSS
```
.tc-sidebar-scrollable{
background-color:yellow;
}
```
!! Remarks
To adjust the wiki title and subtitle, customize the `tc-sidebar-header`. For example try the below CSS
```
.tc-sidebar-header{
margin-top:-33px;
}
```
<<alert info "''Note:'' A plugin by [[Zaphod|Zaphod Sidebar Colors and Shades]] has been developed to customize the wiki background, which includes cover image, sidebar shade and color, etc.">>
The below css can change the sidebar tabs color:
```
/*sidebar tab buttons*/
.tc-sidebar-lists .tc-tab-buttons button
{
color: #FFFFFF;
background-color: #7499DA;
}
/*sidebar tab buttons when selected*/
.tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {
color: #FFFFFF;
background-color: #4A7ACF;
}
```
; How to change the background color of list-bullet button in Tiddlywiki editor toolbar?
: Use the below CSS. It is possible to change the background color of all butons in a similar way.
Create a tiddler
Tag it with `$:/tags/Stylesheet`
Put the below CSS inside the tiddler body (text)
```
.tc-editor-toolbar > .tc-reveal > button {
display: inline-flex;
padding: 0;
}
.tc-editor-toolbar button .tc-image-button {
padding: 2px;
font-size: 1.25em;
}
.tc-editor-toolbar button .tc-image-list-bullet {
display: flex;
align-items: stretch;
justify-content: stretch;
fill: red;
background-color: yellow;
}
```
!! Remark
If you need to change the background color of all toolbar buttons change the last part of above CSS as below:
```
.tc-editor-toolbar button {
display: flex;
align-items: stretch;
justify-content: stretch;
fill: red;
background-color: yellow;
}
```
!! Extra
you can also add a width to the svg to make it narrower, specially if it used on mobile.
```
.tc-editor-toolbar button .tc-image-button {
padding: 4px 0px;
font-size: 1.45em;
width: 30px;
}
```
Data visualization can improve user experience as graphical representation of data is usually easier to understand. If visualization help end-users to understand data, Charts.css help frontend developers to turn their data into beautiful graphs using simple CSS classes.
Modern CSS frameworks (like bootstrap) style HTML elements using predefined CSS utility classes. While those CSS frameworks focus on layouts, Charts.css focus only on data visualization.
;How to check if a macro / variable exists?
A new subfilter `[is[variable]` has been introduced in Tddly 5.1.20 to support checking the existence of a macro variable.
<<dbadge Tiddlywiki 5.1.20+ danger>>
!! Syntax
```
[[VAR_NAME]] +[is[variable]addsuffix[ is a variable]] ~[[Undefined variable or macro 'VAR_NAME']]
[[currentTiddler]] +[is[variable]addsuffix[ is a variable]] ~[[Undefined variable or macro ‘currentTiddler']]
```
!! Example i
The below macro was proposed by [[S.S.|https://groups.google.com/d/msg/tiddlywiki/4rEuAWc4EpM/8kvLDh7qBwAJ]] and works as expected.
```
\define variable-test(var)
<$list filter="[[$var$]] +[is[variable]]" emptyMessage="''$var$'' - //Undefined variable or macro//">
''$var$'' - Existed variable or macro
</$list>
\end
1. <<variable-test list-links>>
2. <<variable-test list-linkss>>
```
See in [[Example 52: Check if Variable Macro Exists]] the new `subfilter` in action.
!! Example ii
[[Mal|https://groups.google.com/d/msg/tiddlywiki/4rEuAWc4EpM/1qOUvPdhAgAJ]] has proposed the below simple syntax
```
{{{ [[myMacro]] +[!is[variable]addsuffix[ is not defined]] }}}
```
This should produce "myMacro is not defined" or nothing if the macro or variable is defined.
;How to check if the macro parameter has not been passed;
:Use an empty value and use a `list` widget to check it.
```
\define mm(argIn:"Empty")
<$list filter="[<__argIn__>] -Empty">
Do my job!
</$list>
\end
<$button>Check
<<mm test>>
</$button>
```
!! Remarks
* If no value for `argIn` passed, then it will get the default value `Empty`
* The filter then `"[<__argIn__>] -Empty"` then will return nothing and the list widget will not run
* So, the script between `<$list` and `</$list>` will be ignored.
<<alert info "''Note'': Wrapping the whole macro inside above `list` widget causes macro only run if the parameter gets a non-Empty value.">>
!! Alternative i
A rather robust solution is proposed by BTC as below
```
\define macro2(param)
<$list filter="[<__param__>minlength[1]]">
Do my job!
</$list>
\end
```
In this method, if param has not been passed the `minlength[1]` returns nothing. This operator means the input should have at least one character.
!! Alternative ii
Bimlas in [[forum|https://groups.google.com/d/msg/tiddlywiki/82N15sAnoPs/iWhtoBjbAwAJ]] proposed this alternative, in that the macro is blank
```
\define mymacro(argIn)
<$list filter="[<__argIn__>] -[[]]">
Do my job!
</$list>
\end
<$button>Check
<<mymacro test>>
</$button>
```
;How to check if a title refere to an existing tiddler;
: Use the `is` or `has` operator.
Any of below form may be used
```
[is[tiddler]] [!is[missing]] [has[title]]
```
!! Example i
The below example uses `[is[tiddler]]` and only lists the existing tiddlers. So, it seems `c` is not a tiddler.
<$macrocall $name="wikitext-example-without-html"
src="""><$list filter="solution tutorial TalhaTid +[is[tiddler]]">
</$list>
"""/>
!! Example ii
The below example uses `[is[missing]]` and only lists the non-existing tiddlers e.g. missing tiddlers. So, it seems `TalhaTid` is not a tiddler.
<$macrocall $name="wikitext-example-without-html"
src="""><$list filter="solution tutorial TalhaTid +[is[missing]]">
</$list>
"""/>
!! Example iii
The below example uses `[has[title]]` and only lists only the existing tiddlers. So, it seems `TalhaTid` is not a tiddler.
<$macrocall $name="wikitext-example-without-html"
src="""><$list filter="solution tutorial TalhaTid +[has[title]]">
</$list>
"""/>
; How to check if a tiddler is newer than the other?
: Compare the modified time of two tiddlers
```
\define is-thisTid-newer(TidA, TidB)
<$set name="tidAMod" value={{{ [[$TidA$]get[modified]] }}}>
<$set name="tidBMod" value={{{ [[$TidB$]get[modified]] }}}>
<$list filter="[<tidAMod>] [<tidBMod>] +[nsort[]last[1]removesuffix<tidAMod>]">
Yes, $TidA$ is newer
</$list>
<$list filter="[<tidAMod>] [<tidBMod>] +[nsort[]last[1]removesuffix<tidBMod>]">
No, $TidA$ is older
</$list>
</$set>
</$set>
\end
```
!! Remarks
# The first two `$set` widgets get the date of modification of two tiddlers and stores in related variables
# The first `$list` widget uses a smart filter to determine if //tidAMod// is greater than //tidBMod//.
# The second `$list` widget uses a smart filter to determine if //tidBMod// is greater than //tidAMod//.
!! This is another solution
Here the `$reveal` widget has been used! This is a little longer code in comparison to the above solution.
See for more infor [[BTC|https://groups.google.com/d/msg/tiddlywiki/9QQvkJkLogA/xDWozyJRBgAJ]].
```
\define is-newer(TidA, TidB)
<$set name="tidAMod" value={{{ [[$TidA$]get[modified]] }}}>
<$set name="tidBMod" value={{{ [[$TidB$]get[modified]] }}}>
<$reveal type="match" text="yes" default={{{ [<tidAMod>] [<tidBMod>] +[nsort[]last[1]remove<tidBMod>addprefix[yes]removesuffix<tidAMod>] ~[[no]] }}}>
$TidA$ is newer
</$reveal>
<$reveal type="match" text="no" default={{{ [<tidAMod>] [<tidBMod>] +[nsort[]last[1]remove<tidBMod>addprefix[yes]removesuffix<tidAMod>] ~[[no]] }}}>
$TidB$ is newer
</$reveal>
</$set>
</$set>
\end
```
<<docit>>
Merge this with
* [[Checkbox with Three State]]
* [[Checkboxes Like Radio Button]]
\define tristateCheck(field:output option1:Left option2:Right)
<$checkbox field="""$field$""" checked="""option1""" unchecked=''> $option1$</$checkbox>
<$checkbox field="""$field$""" checked="""option2""" unchecked=''> $option2$</$checkbox>
\end
<<tristateCheck>>
!!! See also
[[Checkboxes Like Radio Button]]
```
L <$checkbox field=status checked="L" unchecked="R"/>
R <$checkbox field=status checked="R" unchecked="L"/>
```
Left <$checkbox field=status checked="L" unchecked="R"/>
Right <$checkbox field=status checked="R" unchecked="L"/>
!! See also
[[Checkbox with Three State]]
Doc also [[Checkbox Like Radio Button - New Solution]]
There are better code, see: [[kookma/stylesheet/tw-adjustment]]
```css
*ICONS*/
html body.tc-body .tc-image-edit-button {stroke: white;fill:#000;}
html body.tc-body .tc-image-delete-button {stroke: white;fill:#ff2222;}
html body.tc-body .tc-image-cancel-button {stroke: white;fill:#ffdd55;}
html body.tc-body .tc-image-done-button {stroke: white;fill:#99ee22;}
html body.tc-body .tc-image-home-button {stroke: white;fill:#5778d8;height:20px;}
html body.tc-body .tc-image-palette {stroke: white;fill:#7897fc;}
html body.tc-body .tc-image-new-button {stroke: white;fill:#7897fc;}
html body.tc-body .tc-image-heading-1 {stroke: white;fill:#7897fc;}
html body.tc-body .tc-image-favicon {stroke: white;fill:#7897fc;}
html body.tc-body .tc-image-stamp {stroke: white;fill:#ff2277;}
```
personal
family
colleague
work
Create notes with semantic icons including //success//, //warning//, and //danger//
This tiddler is used for mass deletion (removal) of tiddlers.<br>
For more info look at:
[[Deleting Tiddlers Via Lists|http://tobibeer.github.io/tb5/#Deleting%20Tiddlers%20Via%20Lists]]
''Filter''
<$edit-text tiddler="$:/temp/delete-filter" tag="input" placeholder="enter a filter" default="" size=50/>
<$reveal state="$:/temp/delete-filter" type="nomatch" text="">
<$button class="tc-btn-invisible">
<$action-setfield $tiddler="$:/temp/delete-filter" $field="text" $value=""/>
{{$:/core/images/close-button}}
</$button>
</$reveal>
<$list filter={{$:/temp/delete-filter}}>
<$button message="tm-delete-tiddler" param={{!!title}}>{{$:/core/images/delete-button}}</$button> <$link to={{!!title}}><$view field=title/></$link><br>
</$list>
;How to clone tiddlers programmatically?
The purpose is to clone a tiddler silently using Tiddlywiki scripts.
```
\define clone(newTid,Template)
<$action-createtiddler $basetitle=$newTid$ $savetitle="temp" />
<$list filter="[<__Template__>fields[]] -title" variable=fname >
<$set name="fval" tiddler=<<__Template__>> field=<<fname>> >
<$action-setfield $tiddler={{temp}} $field=<<fname>> $value=<<fval>> />
</$set>
</$list>
\end
```
!!! Remarks
* The `action-createtiddler` widget creates a new tiddler using basetitle and save it in a temp tiddler
* The `list` widgets iterated over all fileds except the `title` and set them for the new tiddler. These include tags, creator, created, ... fileds
;Note
: It is required to iterate over all fileds using this method. You can also use the method by Mark below, but it needs a unique title.
!! Example
The below example makes 5 clones of //testTemplate//.
```
<$button>Clone me
<$list filter="[range[1,5]addprefix[b00]]">
<$macrocall $name=clone newTid=<<currentTiddler>> Template=testTemplate />
</$list>
</$button>
```
!! Alternatives
Other solution has given here, each has pores and cons.
!!!Solution by FrD
A code to clone a tiddler and remove filed2 from it.
Ref: [[FrD|https://groups.google.com/d/msg/tiddlywiki/swbra9EhOm4/dQk3YpsPAQAJ]]
* Create a tiddler, for instance "//testtemplate//" with a tag ("//MyTag//"), some text and two fields : //field1// and //field2//.
* Create a tiddler, say "//testcreate//" with this code inside :
```
\define actions()
<$action-setfield $tiddler="testtemplate" $field="title" $value="MyNewTiddler" />
<$action-deletefield $tiddler="MyNewTiddler" $field="field2" />
\end
<$button actions=<<actions>>>
Create and remove field
</$button>
```
!!! Solution by Mark
Ref: [[Mark|https://groups.google.com/d/msg/tiddlywiki/tUwDeDPQyDc/uKPP3sl1BQAJ]]
* Create a unique title (possibly title plus date stamp).
* Use `action-setfield` to create new tiddler with the new, unique title.
<<alert info "A tiddler can be directly cloned by clicked on the clone icon in Tiddler toolbar.">>
; Have a button to navigate back to my home tiddler and close all other tiddlers
```
<$navigator story="$:/StoryList" history="$:/HistoryList">
<$button class="tc-btn-invisible tc-tiddlylink">
{{$:/core/images/home-button}} Home
<$action-sendmessage $message="tm-close-all-tiddlers" />
<$action-navigate $to="PLACE_TITLE_OF_HOME_TIDDLER_HERE"/>
</$button>
</$navigator>
```
!! Explanation
* The `tm-close-all-tiddlers` message handles actually closing all tiddlers, by sending that message up to the navigator widget.
* Then the action navigate widet actually opens your "HOME" tiddler.
* The `class="tc-btn-invisible tc-tiddlylink"` in the button just adds a bit of styling.
!! A working example
Go to https://tiddlywiki.com, make a new tiddler and paste the following:
```
<$navigator story="$:/StoryList" history="$:/HistoryList">
<$button class="tc-btn-invisible tc-tiddlylink">
{{$:/core/images/home-button}} Home
<$action-sendmessage $message="tm-close-all-tiddlers" />
<$action-navigate $to="ButtonWidget"/>
</$button>
</$navigator>
```
This will close all tiddlers and navigate to "ButtonWidget" tiddler.
!! Related solutions
These solutions are similar:
* [[Open All Tiddlers Meet Some Criteria]]
* [[Open all Tiddlers with Tag-X]]
! Tabs macro
The tab created by `tabs` macro can be colorful as below:
* create a custom class
* customize based on nth-child
* call tabs using that class
```
<style>
.cls2 .tc-tab-buttons button:nth-child(1) {background:blue; color:white;}
.cls2 .tc-tab-buttons button:nth-child(2) {background:red; color:white;}
.cls2 .tc-tab-buttons button:nth-child(3) {background:green; color:white;}
</style>
<<tabs "one two three" class:"cls2">>
```
More info:
* [[Tiddlywiki|https://tiddlywiki.com/#tabs%20Macro]]
* [[Old discussion|]]
! Solution by Ton Gerner
In my own theme I use the following for Sidebar tabs and the vertical More sidebar tabs:
```
/* SIDEBAR TABS */
.tc-sidebar-lists .tc-tab-buttons button {
color: #0044BB;
background-color: #FFFFFF;
border: 1px solid #D1DDF3;
border-radius: 0.3em;
}
.tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {
font-weight: bold;
color: #0044BB;
background-color: #D1DDF3;
border: 1px solid #A2BBE6;
border-radius: 0.3em;
}
/* SIDEBAR 'More' TABS */
.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {
background-image: none;
background-color: #FFFFFF;
border: 1px solid #D1DDF3;
}
.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {
background-image: none;
background-color: #D1DDF3;
border: 1px solid #A2BBE6;
}
```
\define colorbar(color, width:"100",height:"20")
<svg width="$width$" height="$height$">
<rect fill="$color$" x="0" y="0" width="$width$" height="$height$"/>
</svg>
\end
For more information see: [[w3schools|https://www.w3schools.com/tags/ref_colornames.asp]]
All modern browsers (and TW5!) support the following 140 color names (case insensitive!):
<<<
''Example:''
```
@@color:white;background-color:red;This is white text on a red background@@
```
renders as: @@color:white;background-color:red;This is white text on a red background@@
<<<
|Color Name |HEX |Color |h
|AliceBlue |#F0F8FF |<<colorbar #F0F8FF>> |
|AntiqueWhite |#FAEBD7 |<<colorbar #FAEBD7>> |
|Aqua = Cyan |#00FFFF |<<colorbar #00FFFF>> |
|Aquamarine |#7FFFD4 |<<colorbar #7FFFD4>> |
|Azure |#F0FFFF |<<colorbar #F0FFFF>> |
|Beige |#F5F5DC |<<colorbar #F5F5DC>> |
|Bisque |#FFE4C4 |<<colorbar #FFE4C4>> |
|Black |#000000 |<<colorbar #000000>> |
|BlanchedAlmond |#FFEBCD |<<colorbar #FFEBCD>> |
|Blue |#0000FF |<<colorbar #0000FF>> |
|BlueViolet |#8A2BE2 |<<colorbar #8A2BE2>> |
|Brown |#A52A2A |<<colorbar #A52A2A>> |
|BurlyWood |#DEB887 |<<colorbar #DEB887>> |
|CadetBlue |#5F9EA0 |<<colorbar #5F9EA0>> |
|Chartreuse |#7FFF00 |<<colorbar #7FFF00>> |
|Chocolate |#D2691E |<<colorbar #D2691E>> |
|Coral |#FF7F50 |<<colorbar #FF7F50>> |
|CornflowerBlue |#6495ED |<<colorbar #6495ED>> |
|Cornsilk |#FFF8DC |<<colorbar #FFF8DC>> |
|Crimson |#DC143C |<<colorbar #DC143C>> |
|Cyan = Aqua |#00FFFF |<<colorbar #00FFFF>> |
|DarkBlue |#00008B |<<colorbar #00008B>> |
|DarkCyan |#008B8B |<<colorbar #008B8B>> |
|DarkGoldenRod |#B8860B |<<colorbar #B8860B>> |
|DarkGray / ~DarkGrey |#A9A9A9 |<<colorbar #A9A9A9>> |
|DarkGreen |#006400 |<<colorbar #006400>> |
|DarkKhaki |#BDB76B |<<colorbar #BDB76B>> |
|DarkMagenta |#8B008B |<<colorbar #8B008B>> |
|DarkOliveGreen |#556B2F |<<colorbar #556B2F>> |
|DarkOrange |#FF8C00 |<<colorbar #FF8C00>> |
|DarkOrchid |#9932CC |<<colorbar #9932CC>> |
|DarkRed |#8B0000 |<<colorbar #8B0000>> |
|DarkSalmon |#E9967A |<<colorbar #E9967A>> |
|DarkSeaGreen |#8FBC8F |<<colorbar #8FBC8F>> |
|DarkSlateBlue |#483D8B |<<colorbar #483D8B>> |
|DarkSlateGray / ~DarkSlateGrey |#2F4F4F |<<colorbar #2F4F4F>> |
|DarkTurquoise |#00CED1 |<<colorbar #00CED1>> |
|DarkViolet |#9400D3 |<<colorbar #9400D3>> |
|DeepPink |#FF1493 |<<colorbar #FF1493>> |
|DeepSkyBlue |#00BFFF |<<colorbar #>> |
|DimGray / ~DimGrey |#696969 |<<colorbar #696969>> |
|DodgerBlue |#1E90FF |<<colorbar #1E90FF>> |
|FireBrick |#B22222 |<<colorbar #B22222>> |
|FloralWhite |#FFFAF0 |<<colorbar #FFFAF0>> |
|ForestGreen |#228B22 |<<colorbar #228B22>> |
|Fuchsia / Magenta |#FF00FF |<<colorbar #FF00FF>> |
|Gainsboro |#DCDCDC |<<colorbar #DCDCDC>> |
|GhostWhite |#F8F8FF |<<colorbar #F8F8FF>> |
|Gold |#FFD700 |<<colorbar #FFD700>> |
|GoldenRod |#DAA520 |<<colorbar #DAA520>> |
|Gray / Grey |#808080 |<<colorbar #808080>> |
|Green |#008000 |<<colorbar #008000>> |
|GreenYellow |#ADFF2F |<<colorbar #ADFF2F>> |
|HoneyDew |#F0FFF0 |<<colorbar #F0FFF0>> |
|HotPink |#FF69B4 |<<colorbar #FF69B4>> |
|IndianRed |#CD5C5C |<<colorbar #CD5C5C>> |
|Indigo |#4B0082 |<<colorbar #4B0082>> |
|Ivory |#FFFFF0 |<<colorbar #FFFFF0>> |
|Khaki |#F0E68C |<<colorbar #F0E68C>> |
|Lavender |#E6E6FA |<<colorbar #E6E6FA>> |
|LavenderBlush |#FFF0F5 |<<colorbar #FFF0F5>> |
|LawnGreen |#7CFC00 |<<colorbar #7CFC00>> |
|LemonChiffon |#FFFACD |<<colorbar #FFFACD>> |
|LightBlue |#ADD8E6 |<<colorbar #ADD8E6>> |
|LightCoral |#F08080 |<<colorbar #F08080>> |
|LightCyan |#E0FFFF |<<colorbar #E0FFFF>> |
|LightGoldenRodYellow |#FAFAD2 |<<colorbar #FAFAD2>> |
|LightGray / ~LightGrey |#D3D3D3 |<<colorbar #D3D3D3>> |
|LightGreen |#90EE90 |<<colorbar #90EE90>> |
|LightPink |#FFB6C1 |<<colorbar #FFB6C1>> |
|LightSalmon |#FFA07A |<<colorbar #FFA07A>> |
|LightSeaGreen |#20B2AA |<<colorbar #20B2AA>> |
|LightSkyBlue |#87CEFA |<<colorbar #87CEFA>> |
|LightSlateGray / ~LightSlateGrey |#778899 |<<colorbar #778899>> |
|LightSteelBlue |#B0C4DE |<<colorbar #B0C4DE>> |
|LightYellow |#FFFFE0 |<<colorbar #FFFFE0>> |
|Lime |#00FF00 |<<colorbar #00FF00>> |
|LimeGreen |#32CD32 |<<colorbar #32CD32>> |
|Linen |#FAF0E6 |<<colorbar #FAF0E6>> |
|Magenta / Fuchsia |#FF00FF |<<colorbar #FF00FF>> |
|Maroon |#800000 |<<colorbar #800000>> |
|MediumAquaMarine |#66CDAA |<<colorbar #66CDAA>> |
|MediumBlue |#0000CD |<<colorbar #0000CD>> |
|MediumOrchid |#BA55D3 |<<colorbar #BA55D3>> |
|MediumPurple |#9370DB |<<colorbar #9370DB>> |
|MediumSeaGreen |#3CB371 |<<colorbar #3CB371>> |
|MediumSlateBlue |#7B68EE |<<colorbar #7B68EE>> |
|MediumSpringGreen |#00FA9A |<<colorbar #00FA9A>> |
|MediumTurquoise |#48D1CC |<<colorbar #48D1CC>> |
|MediumVioletRed |#C71585 |<<colorbar #C71585>> |
|MidnightBlue |#191970 |<<colorbar #191970>> |
|MintCream |#F5FFFA |<<colorbar #F5FFFA>> |
|MistyRose |#FFE4E1 |<<colorbar #FFE4E1>> |
|Moccasin |#FFE4B5 |<<colorbar #FFE4B5>> |
|NavajoWhite |#FFDEAD |<<colorbar #FFDEAD>> |
|Navy |#000080 |<<colorbar #000080>> |
|OldLace |#FDF5E6 |<<colorbar #FDF5E6>> |
|Olive |#808000 |<<colorbar #808000>> |
|OliveDrab |#6B8E23 |<<colorbar #6B8E23>> |
|Orange |#FFA500 |<<colorbar #FFA500>> |
|OrangeRed |#FF4500 |<<colorbar #FF4500>> |
|Orchid |#DA70D6 |<<colorbar #DA70D6>> |
|PaleGoldenRod |#EEE8AA |<<colorbar #EEE8AA>> |
|PaleGreen |#98FB98 |<<colorbar #98FB98>> |
|PaleTurquoise |#AFEEEE |<<colorbar #AFEEEE>> |
|PaleVioletRed |#DB7093 |<<colorbar #DB7093>> |
|PapayaWhip |#FFEFD5 |<<colorbar #FFEFD5>> |
|PeachPuff |#FFDAB9 |<<colorbar #FFDAB9>> |
|Peru |#CD853F |<<colorbar #CD853F>> |
|Pink |#FFC0CB |<<colorbar #FFC0CB>> |
|Plum |#DDA0DD |<<colorbar #DDA0DD>> |
|PowderBlue |#B0E0E6 |<<colorbar #B0E0E6>> |
|Purple |#800080 |<<colorbar #800080>> |
|RebeccaPurple |#663399 |<<colorbar #663399>> |
|Red |#FF0000 |<<colorbar #FF0000>> |
|RosyBrown |#BC8F8F |<<colorbar #BC8F8F>> |
|RoyalBlue |#4169E1 |<<colorbar #4169E1>> |
|SaddleBrown |#8B4513 |<<colorbar #8B4513>> |
|Salmon |#FA8072 |<<colorbar #FA8072>> |
|SandyBrown |#F4A460 |<<colorbar #F4A460>> |
|SeaGreen |#2E8B57 |<<colorbar #2E8B57>> |
|SeaShell |#FFF5EE |<<colorbar #FFF5EE>> |
|Sienna |#A0522D |<<colorbar #A0522D>> |
|Silver |#C0C0C0 |<<colorbar #C0C0C0>> |
|SkyBlue |#87CEEB |<<colorbar #87CEEB>> |
|SlateBlue |#6A5ACD |<<colorbar #6A5ACD>> |
|SlateGray / ~SlateGrey |#708090 |<<colorbar #708090>> |
|Snow |#FFFAFA |<<colorbar #FFFAFA>> |
|SpringGreen |#00FF7F |<<colorbar #00FF7F>> |
|SteelBlue |#4682B4 |<<colorbar #4682B4>> |
|Tan |#D2B48C |<<colorbar #D2B48C>> |
|Teal |#008080 |<<colorbar #008080>> |
|Thistle |#D8BFD8 |<<colorbar #D8BFD8>> |
|Tomato |#FF6347 |<<colorbar #FF6347>> |
|Turquoise |#40E0D0 |<<colorbar #40E0D0>> |
|Violet |#EE82EE |<<colorbar #EE82EE>> |
|Wheat |#F5DEB3 |<<colorbar #F5DEB3>> |
|White |#FFFFFF |<<colorbar #FFFFFF>> |
|WhiteSmoke |#F5F5F5 |<<colorbar #F5F5F5>> |
|Yellow |#FFFF00 |<<colorbar #FFFF00>> |
|YellowGreen |#9ACD32 |<<colorbar #9ACD32>> |
!! Remarks
More information and discussion can be found at TW Google [[forum|https://groups.google.com/d/msg/tiddlywiki/678-ylU5eDA/t6JNx0f1BAAJ]]
\import exmp103/macro/combo-search
;Idea
: have a searchbox which lets you to perform both standard search (only in title, caption, text) and filter search
;Use case
: one searchbox and do both standard and filter search
<<docit>>
!! Code
<<code-link exmp103/macro/combo-search>>
!! Example
<$macrocall $name="wikitext-example-without-html"
src="""<<combo-search>>
"""/>
There are several tiddlers named as `demo/exmp027/title `. Use `$list` widget and create a list of comma separated titles with links.
<$macrocall $name="wikitext-example-without-html"
src="""
<$list filter='[tag[exmp027]butlast[]]'><$link><$text text={{{ [<currentTiddler>removeprefix[demo/exmp027/]] }}} /></$link>, </$list>
<$list filter='[tag[exmp027]last[]]'><$link><$text text={{{ [<currentTiddler>removeprefix[demo/exmp027/]] }}} /></$link> </$list>
"""/>
!! Remarks
* The `butlast` operator, selects all tiddlers and leave the last one unselected.
* The `last` operator, selects the last item in the list
* The result are shown with no prefix `demo/exmp027/`
* Note to the comma `,` in the first `$list`. The reason for using two `$list` widgets here is to create a comma separated list of title. There is no comma after the last item.
* Tiddlers belong to this demo are tagged with <<tag exmp027>>
<<alert primary width:50% src:"Note: The original [[post|https://groups.google.com/d/msg/tiddlywiki/PiUwdVpdyzQ/OwsKmr6TEgAJ]] has been revised.<br>This is an example of using `last` and `butlast` operator.">>
https://github.com/Jermolene/TiddlyWiki5/issues/4699#issuecomment-730203853
add ability to for compare operator to refer to fields
<<docit>>
<<docit>>
```
\define is-Tiddlers-text-equal(TidA, TidB)
<$set name="tidAText" value={{{ [[$TidA$]get[text]] }}}>
<$set name="tidBText" value={{{ [[$TidB$]get[text]] }}}>
<$reveal type="match" default=<<tidAText>> text=<<tidBText>>>Equal</$reveal>
<$reveal type="nomatch" default=<<tidAText>> text=<<tidBText>>>NotEqual</$reveal>
</$set>
</$set>
\end
```
; How to make a simply comparison between two variables or one variable and a fields content?
: The answer is using `reveal` widget.
!! Simple reveal example
Normally, the `reveal` widget is used to compare a "text" value with a value stored in the text field of a specified "state" tiddler, like this:
```
<$reveal type="match" state="$:/state/SampleReveal1" text="show">
show this if state tiddler content matches text param
</$reveal>
```
!! Use default attribute
However, there is an alternative syntax that allows comparisons between any two values: while the "state" param can only use an implied reference to the "text" field of a specified tiddler, the "default" param can use //ANY literal//, field or variable reference. Simply //OMIT// the "state" param and use the "default" param in it's place, like this:
```
<$reveal type="match" default={{sometiddler!!somefield}} text="show">
show this if some field in some tiddler matches text param
</$reveal>
```
or
```
<$reveal type="match" default=<<somevariable>> text="show">
show this if somevariable matches text param
</$reveal>
```
!! Compare any two variables
Since the "text" param also can use ANY //field// or //variable// reference, you can use `reveal` to compare any two variables, like this:
```
<$reveal type="match" default=<<somevariable>> text=<<someOtherVariable>>>
show this if somevariable value matches someOtherVariable
</$reveal>
```
!! Complex cases
You can use any of the valid "type" values to make the comparison, including the recently added `LT`, `GT`, `LTEQ` and `GTEQ` types.
For example, if you have some "task tiddlers" tagged with "todo" OR "done", you could display conditional output this way:
```
<$set name="todo" filter="[tag[todo]count[]]">
<$set name="done" filter="[tag[done]count[]]">
<$reveal type="match" default=<<todo>> text="0"> There is nothing to do. </$reveal>
<$reveal type="nomatch" default=<<todo>> text="0">
<$reveal type="match" default=<<done>> text="0"> You haven't started. </$reveal>
<$reveal type="LT" default=<<todo>> text=<<done>>> You're making progress... keep going! </$reveal>
<$reveal type="match" default=<<todo>> text=<<done>>> You're half way there... take a short break </$reveal>
<$reveal type="GT" default=<<todo>> text=<<done>>> You've done a lot... but there's still some left </$reveal>
</$reveal>
</$set>
</$set>
```
Stefan Pfister a fiction story writer asked how can I create a long big fixed version of narration by concatenating the text of all related tiddlers? The purpose is to have a final pdf or raw text to be exported to some publication / layout software.
# <div>
First, we need some wiki syntax for generating the desired output. Something like this:
```
<$list filter="[tag[About]]"><$text text={{!!text}}/></$list>
```
</div>
# <div>
Next, we can //capture// that output to a variable, using the `<$wikify>` widget:
```
<$wikify name="out" text="""<$list filter="[tag[About]]"><$text text={{!!text}}/></$list>""">
<<out>>
</$wikify>
```
</div>
# <div>
Then, wrap that in a button so we can trigger an action to save the output to a tiddler instead of directly rendering the output:
```
<$button> CLICK ME
<$wikify name="out" text="""<$list filter="[tag[About]]"><$text text={{!!text}}/></$list>""">
<$action-setfield $tiddler="JoinedOutput" text=<<out>> />
</$wikify>
</$button>
```
</div>
# <div>
Finally, for convenient re-use, wrap the entire button in a macro definition, and replace the literal values with macro parameter references.
```
\define join(label,tag,target)
<$button> $label$
<$wikify name="out" text="""<$list filter="[tag[$tag$]]"><$text text={{!!text}}/></$list>""">
<$action-setfield $tiddler="$target$" text=<<out>> />
</$wikify>
</$button>
\end
```
and call it like below
```
<<join "CLICK ME" "About" "JoinedOutput">>
```
; How to hardcopy the contents of several tiddlers in one tiddler?
Sometimes it is rquired to concatenate the contents of several tiddlers into one anothere tiddler to get the final fixed form of contents. The below is one solution is given by {{!!responder}}.
#<div>
First, we need some wiki syntax for generating the desired output. Something like this:
```
<$list filter="[tag[About]]"><$text text={{!!text}}/></$list>
```
</div>
#<div>
Next, we can 'capture' that output to a variable, using the `<$wikify>` widget:
```
<$wikify name="out" text="""<$list filter="[tag[About]]"><$text text={{!!text}}/></$list>""">
<<out>>
</$wikify>
```
</div>
#<div>
Then, wrap that in a button so we can trigger an action to save the output to a tiddler instead of directly rendering the output:
```
<$button> CLICK ME
<$wikify name="out" text="""<$list filter="[tag[About]]"><$text text={{!!text}}/></$list>""">
<$action-setfield $tiddler="JoinedOutput" text=<<out>> />
</$wikify>
</$button>
```
</div>
# <div>
Finally, for convenient re-use, wrap the entire button in a macro definition, and replace the literal values with macro parameter references
```
\define join(label,tag,target)
<$button> $label$
<$wikify name="out" text="""<$list filter="[tag[$tag$]]"><$text text={{!!text}}/></$list>""">
<$action-setfield $tiddler="$target$" text=<<out>> />
</$wikify>
</$button>
\end
<<join "CLICK ME" "About" "JoinedOutput">>
```
</div>
!! See also
* [[Export a List of Tiddlers]]
* [[Thomas Elmiger solution for Readers and Writers|https://tid.li/tw5/test/concept.html]]
There are some methods by Jed Carty explain ho to concatenate. One example is below. MOre example can be found in the address above.
```
\define getAddress()
http://www.principiadiscordia.com/book/$(page)$.php
\end
<$select field='test_field'>
<$list filter="1 2 3 4 5 6 7 8 9 10 45 81">
<option><<currentTiddler>></option>
</$list>
</$select>
<$set name=page value={{!!test_field}}>
<a href=<<getAddress>> target="_blank">go to page {{!!test_field}}</a>
</$set>
```
More on concatenation:
# [[Tiddlywiki|https://tiddlywiki.com/#Concatenating%20text%20and%20variables%20using%20macro%20substitution]]
#
Discussion at: [[TW forum|https://groups.google.com/d/msg/tiddlywiki/5m9zERMOobA/HHHl0YlzCgAJ]]
The content of the `<$view>` widget is displayed if the field or property is missing or empty.
For example, see the below example. If the caption field is missing or empty, then the title will be shown if not, the caption will be shown.
<<wikitext-example-without-html
"""<$view field="caption">
<$view field="title"></$view>
</$view>"""
>>
!! Remarks
There are two widgets in TW which act the same way, e.g.
* view widget
* transclude widget
The content inside of the `<$view>` or `<$transclude>` widget is displayed if the field or property is missing or empty.
For more information see [[Mario note|https://groups.google.com/d/msg/tiddlywiki/wonkEPdODbc/dGw9RT08AAAJ]].
<<alert info "The below example and discussion reveals more insights into the conditional output<br> [[More on Conditional Output]]">>
; How display conditionally the content of any tiddler tagged with `erlang_code` as a code with a compile button?
: A conditional viewtemplate, a stylesheet is needed as described below
#<div>
Create a tiddler tagged with `$:/tags/Viewtemplate` contains what is planned to be displayed conditionally, here it is planned to show a button and its text as a code.
```
<$list filter="[is[current]tag[erlang_code]]">
<button>Compile</button>
<pre>{{!!text}}</pre>
</$list>
```
</div>
#<div>
Here there is a problem. It is that the custom ViewTemplate doesn't ''replace'' the standard view... it //ADDS// to it to the end of the standard view. Thus, you see the tiddler content twice: first as standard wikitext output (the normal tiddler display) then followed by your custom-formatted output.
To get the results you want, you need to suppress the standard output... but only when the tiddler is tagged "erlang_code".
One quick way to achieve this is to use CSS to hide the standard tiddler "body" element. Just put the following CSS into a tiddler tagged with `$:/tags/Stylesheet`:
```
[data-tags*="erlang_code"] .tc-tiddler-body { display:none; }
```
</div>
#<div>
Now create any tiddler you want and tag it with `erlang_code` and see the result. An example is given here.
<<list-links "[tag[exmp016]] -[<currentTiddler>]">>
</div>
#Tabs in view template https://groups.google.com/d/msg/tiddlywiki/Vh37Gqty7FU/kEEPJps7AAAJ
# Working with view template by Mark S: https://groups.google.com/d/msg/tiddlywiki/AZZr-LYTiOE/WF6T9CKfAAAJ
How to consolitate the current story to default?
the below button makes all the open tiddlers in story river as defult tiddlers.
```
<$set name="myStory" filter="[list[$:/StoryList]!tag[excludeStory]] -[[$:/core/ui/ControlPanel]]">
<$button tooltip="set the default tiddlers to the current story">{{$:/core/images/save-button}} Story to Default
<$action-setfield $tiddler="$:/DefaultTiddlers" $value=<<myStory>>/>
</$button>
</$set>
```
\import [all[tiddlers+shadows]tag[$:/tags/Macro/Toc]]
<<toc-ui tag:"Contents" stateTiddler:"20200321-main-toc">>
\import [all[tiddlers+shadows]tag[$:/tags/Macro/Toc]]
<!-- customized class is used for buttons -->
<style>
.colorful-btns{color:dodgerblue;}
</style>
<!-- Call navigator -->
<<multilevel-toc-navigation tag:"Contents" close:"no" class:"kk-toc-navigation colorful-btns" stateTiddler:"20200321-main-toc">>
To convert a single-file wiki to Node.js, all you need is:
```
tiddlywiki --load path/to/single/file.html --savewikifolder path/to/output/folder
```
Convert CSV into TW table
<$convertable/>
As a response to [[Steve|https://groups.google.com/d/msg/tiddlywiki/61ypQA0VK80/Izur1_2NBAAJ]], Tobias created a little widget called [[tobibeer/convertable|$:/plugins/tobibeer/convertable.js]] which basically transforms any pasted excel or csv to TiddlyWiki table markup.
\define actions()
<$wikify name="content" text={{HelloThere}}>
<$action-sendmessage $message="tm-copy-to-clipboard" $param=<<content>>/>
</$wikify>
\end
;How to copy the result of wikified text into clipboard?
:Here's one way to do it. It's a classic application of the wikify widget: we need access to the wikified text of a tiddler, rather than its raw text.
!! Solution
The below macro to copy the wikified text of `HelloThere` tiddler to clipboard.
<<show-macro>>
!! Example
The below button uses the above macro to copy the wikified text of `HelloThere`
```
<$button actions=<<actions>> >
Copy to clipboard
</$button>
```
!! Remarks
Note how the actions are placed in a separate action string to avoid having to do the wikification until it is required (if it was within the button widget then the wikify widget would be re-evaluated each time the store changes).
; How to count items in a tiddler field?
:Use the `count` widget and `list` operator
!! Example
Count the number of phrases (words) in the field of `keywords` of tiddlers tagged with solution. Show the results for the first five tiddlers
<$macrocall $name="wikitext-example-without-html"
src="""><$list filter="[tag[solution]limit[5]]">
<$link to=<<currentTiddler>>><$text text=<<currentTiddler>>/></$link>: <$count filter="[list[!!keywords]]" /> keywords<br>
</$list>
"""/>
!! Remarks
* The `list` widget with `tag[soloution]` filter finds tiddlers tagged with solution
* The `limit[5]` only shows the output for first 5 tiddlers tagged with solution
* The count widget counts the number of items in the `keywords` field of current tiddler using the `list` operator (`list[!!keywords]`)
* The output is displayed as link to each tiddler with the number of items.
* Note that if there is duplicate items, count considers them as one. See [[dominant append|https://tiddlywiki.com/#Dominant%20Append]]
<<alert infor "Note how count widget uses a list operator to count the number of items `[!!field-name]`.">>
!! More information
* [[List operator|https://tiddlywiki.com/#list%20Operator]]
; How create a borderless table?
: <div>
Create a tiddler tagged with `$:/tags/Stylesheet` and put the below css code inside it.
```css
.borderless,
.borderless table,
.borderless td,
.borderless tr,
.borderless th,
.borderless tbody
{ border:0 !important; }
}
```
Then create your borderless table using the above class like below
```
@@.borderless
|a|b|
|c|d|
@@
```
! Example
The below code shows a sample borderless
<$macrocall $name="wikitext-example-without-html"
src="""<style>
.borderless,
.borderless table,
.borderless td,
.borderless tr,
.borderless th,
.borderless tbody
{ border:0 !important; }
}
</style>
@@.borderless
|col1|col2|col3|col4|h
|a|b|12|red|
|c|d|256|green|
|Table 1. This is the caption|c
@@
"""/>
; How to create a table from a list of tiddlers which is sorted first by value of field 1 and then sort the rsult by value of field 2?
: This is called a doubly sorted list and can be done using a nested `$list` widget
!! Example
Assume there is a list of tiddlers contain the biblography data of some ebooks as below
* tiddler `title`: ebook title
* `vendor` field: publisher name
* `author` field: ebook author name
Create a table contains ebook data sorted //first// in `vendor` name and //second// in `author` name.
```
<table>
<$list filter="[tag[ebook]has[vendor]each[vendor]get[vendor]sort[]]" variable="publisherName">
<$list filter="[tag[ebook]has[vendor]field:vendor<publisherName>sort[author]]" variable="bookName">
<tr>
<td>
<$link to={{!!title}}><$view tiddler=<<bookName>> field="title"/></$link>
</td>
<td>
<$view tiddler=<<bookName>> field='author'/>
</td>
<td>
<$view tiddler=<<bookName>> field='vendor'/>
</td>
</tr>
</$list>
</$list>
</table>
```
!! Remarks
The first `$list` filter:
* Gets a list of all my books (tagged //ebook//)
* Looks at the `vendor` field and gets a list of vendors using the `get` operator
** Since the `get` operator is one of the few operators that allow duplicates, it is possible to have the same `vendor` listed multiple times in the list created
* So first use the `each` operator to ensure unique items (vendors).
* Then this list of all vendors is sorted by the vendor's name
The second `$list` filter will then runs for every `vendor` in the list created by the first `$list`
* For the first item - which is the first vendor's name
** It first gets a list of all the books (tagged //ebook//)
** Then looks at the `vendor` field - selects the ones that match this first `vendor`
** Then sorts those by the `author` field
* Then it does that for the 2nd author in the list provided by the first `$list` filter
* . . . and so on for all the vendors one by one as provided by the first `$list` filter.
!! More info
See [[Example 57: Doubly Sorted Table]]
Also see [[List by Tag but Sort and Show by Field Value]]
Three solution has been provided
!!! Diego Mesa:uUsing Evan's forumla range
<<<
If you dont want the full formula plugin, you can also just use Evan' range operator directly:
http://evanbalster.com/tiddlywiki/formulas.html#%24%3A%2Fplugins%2Febalster%2Fformula%2Ffilters%2Frange.js
<<<
!!! Jed Carty ''numb'' macro using list
<<<
```
title: $:/macro/numb
tags: $:/tags/Macro
list: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
\define numb(n:10 format:"<<currentTiddler>> ") <$list filter='[enlist{$:/macro/numb!!list}first[$n$]]'>$format$</$list>
```
<<<
!!! BTC solution using list
<<<
* Use the Evan's formula plugin
This feature has been included in TW 5.1.18 core.
```
<$list filter="[range[99]]">
do something
</$list>
```
* Use the list widget with a tiddler containing a list of numbers
```
<$list filter="[list[mynumbertiddler]limit[mylimit]]">
do something
</$list>
```
<<<
The examples and codes by this methods are given in:
<<list-links "[tag[100.02]]">>
;How create a new tiddler, with the following specification?
# Its full title is `$:/long/address/to/tiddler/UserInput`
# The last part of title e.g. `UserInput` is given through an input box (`edit-text` widget)
# The caption is the same as `UserInput`
!! Solution
<$macrocall $name="wikitext-example-without-html"
src="""<$edit-text tag="input" tiddler="$:/temp/getname" default="" />
<$button> Click me!
<$wikify name="target" text="$:/long/address/to/tiddler/{{$:/temp/getname}}">
<$action-sendmessage $message="tm-new-tiddler" $param=<<target>>
tags="searcher" caption={{$:/temp/getname}} text={{$:/some/tiddler}}/>
</$wikify>
</$button>
"""/>
!! Remarks
# An `$edit-text` widget gets the user input and puts it in a temporary tiddler [[$:/temp/getname]].
# The `$wikify` widget is used to combine static text with the value from the temporary tiddler (concatenate).
# The value of the resulting `target` variable is used as the `$param` for the new tiddler title.
# The value from the temporary tiddler is also used as the caption text for the new tiddler.
; What is the simplest solution to have a button creates a comment tiddler for current tiddler?
: Using `action-create` widget and `action-navigate` widget, it is possibe to do that.
!! Solution
```
<$button> Click to make a comment
<$action-createtiddler
$basetitle="comment"
$savetitle="$:/temp/commentName"
relationship="comment"
parent=<<currentTiddler>>
/>
<$action-navigate
$to= {{$:/temp/commentName}}
/>
</$button>
```
!! Alternative solution
A revised version of above code is given below in that the actions are encapsulated in a macro and the title of parent tiddler is added to title of comment tiddler.
```
\define mytitle() comment on {{!!title}}
\define create-commentTid()
<$wikify name="ctitle" text=<<mytitle>> >
<$action-createtiddler
$basetitle=<<ctitle>>
$savetitle="$:/temp/commentName"
relationship="comment"
parent=<<currentTiddler>>
/>
<$action-navigate
$to= {{$:/temp/commentName}}
/>
</$wikify>
\end
<$button actions=<<create-commentTid>> >
Click to make a comment
</$button>
```
<<alert danger "Here `$wikify` is used inside `create-commentTid` which is passed to `$button` widget as attribute. This need to be studied from good programming style.">>
<<docit>>
Only work on 5.1.23
\define create-note(tname)
<$set name="myTid" filter="[[$tname$]addsuffix[-math]]" select=0>
<$list filter="[title<myTid>] +[has[title]]"
variable="newTid"
emptyMessage=<<tiddler-not-exist>>
>
<$action-navigate $to=<<newTid>> />
</$list>
</$set>
\end
\define tiddler-not-exist()
<$action-setfield
$tiddler=<<myTid>>
text="Hi, this is a new note"
tags="notes"
/>
<$action-navigate $to=<<myTid>>/>
\end
<$button>
Test
<<create-note "Bob Joe">>
</$button>
!! A working version
```
\define create-note(tname)
<$set name="myTid" filter="[[$tname$]addsuffix[-math]]" select=0>
<$list filter="[title<myTid>] +[has[title]]"
variable="newTid"
emptyMessage=<<tiddler-not-exist>>
>
<$action-navigate $to=<<newTid>> />
</$list>
</$set>
\end
\define tiddler-not-exist()
<$action-setfield
$tiddler=<<myTid>>
text="Hi, this is a new note"
tags="notes"
/>
<$action-navigate $to=<<myTid>>/>
\end
<$button>
Test
<<create-note "Bob Joe">>
</$button>
```
!! Notes
<<<
what I changed:
* A typo in the emptyMessage macrocall
* replace `{{{myTid}}}` with `<<myTid>>` and add select=0 to the set widget to prevent it from adding `[[ and ]]` around the output. Using `{{{$(myTid)$}}}` evaluates it as a space separated list so any title with a space would be two (or more) separate things, not a single title.
* remove parent as an input to tiddler-not-exist and remote the unneeded input from the emptyMessage macrocall because it isn't used
<<<
* Alternate solution
<<<
Alternately, this could have fixed it:
* Using `"""$(myTid)$"""` to make a string instead of `{{{$(myTid)$}}}` to evaluate a filter. This is one place that would break if you had a space, `{{{bob joe}}}` is returned as a list with two entries, `"bob"` and `"joe"` where `"""bob joe"""` is a string and can be used as a single title. I am using `"""` because that lets you put `"` and `'` into the title if you want to for some reason and (hopefully) `"""` is less common in titles.
<<<
; Assume you have a folder on Windows drive contains images, how to add these images to wiki as external images?
Using an advanced text editor like Emacs, get a list of your images and put it into a format like this:
```
cimg2199.jpg: x
cimg2200.jpg: x
cimg2201.jpg: x
cimg2202.jpg: x
```
Paste this into a tiddler called "MyImages" and change the type to data dictionary. Save the tiddler.
Create another tiddler with the following contents:
```
\define gluepath() $(path)$$(image)$
<$set name="path" value="file:///D:\data\graphics\file-us\">
<$button>Make Image Tiddlers
<$list filter="[[MyImages]indexes[]]" variable="image">
<$action-createtiddler $basetitle=<<image>> _canonical_uri=<<gluepath>> type="image/jpeg">
</$list>
</$button>
</$set>
```
Change the "path" variable to whatever address is needed for image directory and system (I used `file:///` but you don't need that for images positioned relative to your system).
Click on the "Make Image Tiddlers" button, and a "Image Tiddler" (_canonical_uri based) will be made for each image.
You can of course play with this to use other image dictionaries, paths, etc. A similar technque could be used to generate image wikitext if you don't like Image Tiddlers. Note that if you are on windows that you can't use drive names like C: in the data dictionary (that's why I applied the path outside the dictionary).
!!! Example
See TW-Images there are examples there using this technique
; How Create a selectable list of static pages from official Tiddlywiki which can be displayed inside an iframe in another Tiddlywiki?
: First index the pages (tiddlers) in officiall Tiddlywiki into a tiddler
: Next import that index tiddler into your target wiki
: Last use a $select widget to choose among the index and display inside an iframe
<<alert info "The official Tiddlywiki has static pages for any tiddler in https://tiddlywiki.com/. This demo shows how to create an index of all those tiddlers.">>
!! Example
;Part i: Create the index
<<<
The first step is to create the indes. The below code perform the job.
<<code-link "exmp141/ui/generate-index-tiddler">>
;Remarks
* indexTiddlers and tagsList are variables define the tiddler to store the index and list of taggs for them the indexing is performed. Change the tags as you need for example to add all tiddlers with Concepts add it after Widgets.
* The `generateList` macro generates a list of tiddlers tagged with the tags input. The macro wraps each tiddler in `[[ ]]` to create entries even from tiddlers with space or nasty characters in the title
* The part statistics generated number of matches per tag
* The $button widget uses a $wikify inside to get the list of tiddlers from `generateList` macro and write them in `indexTiddler` here [[exmp141/data/indexTiddler]]
* ''Note'': The `<$action-setfield $tiddler=<<indexTiddler>> $field=type $value="text/plain" />` is not mandatory, but this command set the type of index tiddler to text/plain to prevent displaying missing tiddlers when one view the index tiddler in target wiki.
<<<
;Part ii: Gnerate the index and import to another wiki
<<<
* Drag and drop [[exmp141/ui/generate-index-tiddler]] into https://tiddlywiki.com/
* Edit the list if tags as you desired, the default is `Filter Operators`, and `Widgets`
* Click on the ''Index Tiddlers'' button
* Drag and drop the [[exmp141/data/indexTiddler]] from https://tiddlywiki.com/ to your wiki
<<<
;Part iii: The UI
<<<
The last part is to create a UI to choose among the page and display in the iframe. The below code implements the UI
<<code-link "exmp141/ui/display-static-page">>
;Remarks
* The UI contains two parts itself
** a part to select a page
** a part to display the page inside an iframe
* There are some macros define indexTiddler, tmpIframeTid and tmpSearchTid
* The $edit-text input gets a keyword for partial search in the index tiddler (e.g. index of all pages). The user input is stored in `tmpSearchTid`
* The $select widget lets select among the pages! If the srearchbox is not empty the list of selection is limited to those have the keyword
* The page title and the link to static page of relevant tiddler is created using filter `<option value={{{ [<currentTiddler>encodeuri[]split[%]join[%25]addprefix[https://tiddlywiki.com/static/]addsuffix[.html]] }}}><<currentTiddler>></option>`
** The `encodeuri` encoded the address as per https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI
** The `%` is replaced with `%25`
** The above two steps create a working address (url) for the static page. Note that spaces and certain characters are not allowed in the url
* The selectd page is stored in the text field of `tmpIframeTid`
* The link to page is then extracted from the text field of `tmpIframeTid` using `link={{{ [<tmpIframeTid>get[text]] }}}` variable definition
* The link is passed to the iframe to display the page
* Also the link can be clicked to open the page in separate brower window, or tab
<<alert warning "The css classes here are used to create a beautiful responsive iframe and can be ignored. For more info See https://blog.theodo.com/2018/01/responsive-iframes-css-trick/ and https://www.w3schools.com/howto/tryit.asp?filename=tryhow_css_responsive_iframe_169">>
<<<
''Important note'': A similar solution by Eric Schulman suggested for Wikipedia See [[exmp141/wikipedia]]
<$button class="tc-btn-invisible"><span style="color:#4B0082; fill:#4B0082;">
{{$:/core/images/new-button}} New link</span>
<$action-sendmessage
$message="tm-new-tiddler"
description=""
developer=""
keywords=""
tags="Links"
url=""
wiki-name=""
/>
</$button>
\define mybutton(param)
<$button>
New Tiddler
<$action-sendmessage $message="tm-new-tiddler"
title="Title"
text="some text..."
tags="slide [[$param$]]"
/>
</$button>
\end
How to use tm-new-tiddler and have more than one tag, some are text reference?
: Whenever you need to concatenate strings (as you do with the tags) you almost always need to use a macro.
```
\define mybutton(param)
<$button>
New Tiddler
<$action-sendmessage $message="tm-new-tiddler"
title="Title"
text="some text..."
tags="slide [[$param$]]"
/>
</$button>
\end
```
<$macrocall $name="wikitext-example-without-html"
src="""<$macrocall $name="mybutton" param={{!!title}}/>"""/>
;How to create a new tiddler from within the current tiddler that puts the the parent tiddler's title in the text of the child tiddler?
!! Solution
Whitin any tiddler, the variable `currentTiddler` refers to itself, so the below code simply does the job.
<<show-macro "exmp113/macro/createTid">>
;Remarks
:The $button widget creates a button on click triggers the action
:The `action-sendmessage` sends the `tm-new-tiddler` to create a new tiddler and open it for edit
:The title parameter sets the title of new tiddler to current date with a format like `28th January 2020`
:The text parameter puts a link to the parent tiddler
:''Note'': the `[[...]]` creates a wikilink and the `$(currentTiddler)$` renders as the title of current tiddler in the macro
See [[exmp113/macro/createTid]] for example.
; How create persistent colorful tags?
: When all tiddlers tagged say with myTag which can also have a color deleted, the colorful myTag will not be available. To have a persistent tag create their tiddler separately.
!! Example
Create a tag with green color for css
* Create a tiddler, with title `css`
* Add a field with title `color`
* Click the color picker in front of color field and select the green color
* Save the tiddler
That's all. Now the <<tag css>> will be available and will not removed automatically even all tiddlers tagged with `css` deleted.
The below macro was developed by {{!!responder}} for the great [[Archipel]] wiki, in a that D3JS is used for visualization Tiddlywiki contents.
!! Macro pastille
The pastille macro creates small macro and gets its fill color from input tiddler
```
\define pastille(tagName)
<svg width="14" height="14" >
<circle cx="7" cy="7" r="6" stroke="grey" fill={{$tagName$!!color}}/>
</svg>
\end
```
!! Example
There is several examples on [[http://archipel.tiddlyspot.com/#Knowledge%20map%20options]]. One example has given here [[Example 61: Create Svgs Using Macro]]. This example also shows how to create a Trello label using svg and macro.
!! More examples
Some more complex image macros hass been introduced by [[A. Glom|https://groups.google.com/d/msg/tiddlywiki/6NgJJz4TsE8/EZ69bLP5AwAJ]] for creating rectangle, oval, circle, and square.
\define myActions()
<$action-sendmessage $message="tm-new-tiddler" title="This is newly created Task" tags="[[$(todayDate)$]] task other" text=<<todayDate>>/>
\end
;How to add today date as tag to a newly created tiddler?
:This problem is related to adding variables to tags field when a new tiddler is created.
The below example implements a button with actions inside macro to create a new tiddler tagged with today date
!! The action macro
<<show-macro>>
;Remarks
* The `[[$(todayDate)$]]` is the variable inserts the current date as tag. Note thar the `todayDate` is set outside the macro.
!! The button
Below is the button to create the new tiddler
><$macrocall $name="wikitext-example-without-html"
src="""<$set name="todayDate" value=<<now "DD MMM YYYY">>>
<$button actions=<<myActions>> >
New task for today
</$button>
</$set>
"""/>
;Remarks
* The $set stores the today date in `todayDate`
* The $button then on click executes the actions which is the `myActions` macro.
* It's better to use the "actions" parameter for buttons. It will update all parameters if the button is clicked.
* If the actions are inside the button, the parameters are updated, when the button is rendered.
''Double check, seems does not work!''
Assume you want to create tiddlers all tagged with say `myTag` and have unique title with ordinal number.
So
* tiddlers have title like `myTiddler-1`
* tiddlers all tagged with `myTag`
```
\define newTitle() myTiddler-{{{[tag[myTag]count[]add[1]]}}}
\define newTiddler()
<$wikify name="myTitle" text="<<newTitle>>" >
<$action-createtiddler $basetitle=<<myTitle>> tags="myTag" />
</$wikify>
\end
```
Then use it like below
```
<$button actions=<<newTiddler>>>
Create a new tiddler
</$button>
```
!!! Remarks
* The `wikify` widget, calls newTitle macro, creates a new title using filter transclusion and store it in myTitle variable.
* The `action-createtiddler` creates a new tiddler using myTitle and myTag.
!! Issues and solution
[[Thomas Elmiger|https://groups.google.com/d/msg/tiddlywiki/3_Xacb7H1p0/KSYPzQguAQAJ]] states that if some tiddlers deleted in this between, the above code may overwrite the previous ones. Assume you have myTiddler-1, myTiddler-2, and myTiddler-3. Now you delete myTiddler-2 abd then create another, the current code sees there is two tiddler, so it creates the next and overwrite myTiddler-3.
!!! Solution
* If myTiddler-2 deleted, the code will create myTiddler-3 1. So there is no risk to overwrite
* To overcome this issue, the below recursive macro take cares of this issue as below
```
\define newTitle() myTiddler-{{{[tag[myTag]count[]add[$(inc)$]]}}}
\define newTiddler(n:0)
<$set name="inc" value={{{ [<__n__>add[1]] }}}>
<$wikify name="myTitle" text="<<newTitle>>" >
<$list filter="[<myTitle>] +[!has[title]]"
emptyMessage=""" <$macrocall $name="newTiddler" n=<<inc>> /> """>
<$action-createtiddler $basetitle=<<myTitle>> tags="myTag" />
</$list>
</$wikify>
</$set>
\end
<$button actions=<<newTiddler>>>
Create a new tiddler
</$button>
```
!!! Remarks
* The newTiddler macro check if the tiddler is going to created is existed or not. It uses the `list` widget for this purpose.
* If the tiddler is existed, it calls itself with n icremented by one. This is done by emptyMessage part of `list` widget.
* The newTiddler macro calls itself as many as time to find a sequence number not in use and then creates the tiddler.
!!! Solution iii
[[Mal|https://groups.google.com/d/msg/tiddlywiki/3_Xacb7H1p0/6LqGKyVmAQAJ]] has proposed using zero padded number. A revised version of zero padded number (assuming 3 digits) is given below.
```
\define newTitle() myTiddler-{{{[tag[myTag]count[]add[1]addprefix[0000]split[]last[3]join[]]}}}
\define newTiddler()
<$wikify name="myTitle" text="<<newTitle>>" >
<$action-createtiddler $basetitle=<<myTitle>> tags="myTag" />
</$wikify>
\end
```
See this method in action: [[Example 50: Tiddler Title with Zero Padded Number]].
\define newTid(param:"", btn-caption:"New project", color:"#8058A5")
<$button style="color:$color$; fill:$color$; margin-bottom:5px;">
{{$:/core/images/new-button}} $btn-caption$
<$wikify name="newTitle" text="""{{!!title}}: <<now "YYYY-0MM-0DD hh12:0mmpm">>""">
<$action-sendmessage $message="tm-new-tiddler"
title=<<newTitle>>
text="..."
tags="[[$param$]]"
/>
</$wikify>
</$button>
\end
Given a tiddler called "Tiddler X", how to include a button it that to create a new tiddler called "Tiddler X: and the current date time"
* Create a macro to do the job
```
\define newTid(param:"", btn-caption:"New project", color:"#8058A5")
<$button style="color:$color$; fill:$color$; margin-bottom:5px;">
{{$:/core/images/new-button}} $btn-caption$
<$wikify name="newTitle" text="""{{!!title}}: <<now "YYYY-0MM-0DD hh12:0mmpm">>""">
<$action-sendmessage $message="tm-new-tiddler"
title=<<newTitle>>
text="..."
tags="[[$param$]]"
/>
</$wikify>
</$button>
\end
```
* Example
> `<<newTid param:"$(currentTiddler)$">>`
Here macro is called by text substitution e.g `$(currentTiddler)$`
<<newTid param:"$(currentTiddler)$">>
<<alert info width:"60%" """''Note'': In a thread [[Jeremy Ruston|https://groups.google.com/d/msg/tiddlywiki/glQhVBccv2k/ACBF8e2CAAAJ]] pointed out that //text substitution// like above is rarely the best way to do things. Another solution is to call macro using macrocall widget as shown below.
""">>
```
<$macrocall $name="newTid" param=<<currentTiddler>> />
```
\import exmp122/macro/create
!! Code
ssds
<<code-link "exmp122/macro/create">>
!!Example
<$macrocall $name="wikitext-example-without-html"
src="""<$set name="title" value="New Letter">
<$set name="name" value="Wilson">
<$set name="pet" value="snuffles">
<<createButton>>
</$set></$set></$set>
"""/>
<<docit>>
<style>
.quote {
display: inline-block;
margin: 1em;
overflow: hidden;
}
.quote blockquote {
background-color: #fff;
border: solid 2px #757575;
display: inline-block;
margin: 0;
padding: 1em;
position: relative;
}
.quote blockquote:before {
background-color: #fff;
bottom: -10%;
content: "";
left: 0;
position: absolute;
right: 0;
top: -10%;
transform: rotate(-15deg) skew(5deg);
}
.quote blockquote cite {
display: block;
font-style: italic;
text-align: right;
}
.quote blockquote cite:before {
content: "- ";
}
.quote blockquote > * {
position: relative;
z-index: 1;
}
</style>
<div class="quote">
<blockquote>
<p>Ever tried. Ever failed. No matter.<br>Try again. Fail again. Fail better.</p>
<cite>Samuel Beckett</cite>
</blockquote>
</div>
;How to change the color and fonts of bullets and number in list?
: Use `::marker` pseudo element if browser support or use the below method
<<wikitext-example-without-html
src:"""<style>
.nomarker {color: red; font-weight:900}
.nomarker span {color: #999; font-weight:normal}
</style>
<ol class="nomarker">
<li><span>Item One</span></li>
<li><span>Item Two</span></li>
<li><span>Item Three</span></li>
</ol>
<ul class="nomarker">
<li><span>Item One</span></li>
<li><span>Item Two</span></li>
<li><span>Item Three</span></li>
</ul>
""">>
More info:
*https://www.smashingmagazine.com/2019/07/css-lists-markers-counters/
* https://css-tricks.com/style-list-markers-css/
This is playground for custom stylesheets and using CSS3 capabilities in TW
!! How to change the background color of tiddler title?
* Create a new tiddler tagged with `$:/tags/Stylesheet`
* Put the below css inside (yellow color used as an example)
```css
.tc-title {
background: yellow;
}
```
The above css uses yellow backgroud. You can change other properties of `tc-title`.
!! How to change the background color of non-system tiddler title only?
System tiddlers (prefixed `$:/`) do have a class definition on the "tiddler" level. `... tc-tiddler-system`
So if you style `tc-title` for every tiddler, you can reset it back for system tiddlers with the code above, using CSS hirarchy.
* Create a new tiddler tagged with `$:/tags/Stylesheet`
* Put the below css inside it
```css
.tc-title {
background: yellow;
}
.tc-tiddler-system .tc-title {
background: initial;
}
```
!! How to change the color of prefix of system tiddler title?
The prefix of system tiddlers (`$:/`) do have a class definition as `... tc-system-title-prefix`. So to change their style do as below
```css
.tc-system-title-prefix {
color: blue;
}
```
The above css uses blue color. You can change other properties of `tc-title`.
How to set a text after tiddler title tagged with say //period//?
For example add word experimental to all tiddlers tagged with `period`.
* Solution
The belwo css uses the `after` selector. Put it in a tiddler tagged with `$:/tags/Stylesheet` and use it. See demo.
```css
[data-tags*="period"] .tc-title:after {
content:"experimental";
color:red;
}
```
; Is it valid to have css inside macro, if so which of the two below solution is recommended?
# <div>
''Define inline style''
```
\define vspace(height)
<style>
.vertical-space {
margin-bottom: $height$;
}
</style>
<p class="vertical-space"></p>
\end
```
</div>
# <div>
''Define inline style''
```
\define vspace(height)
<p style="margin-bottom: $height$;"></p>
\end
```
</div>
<<alert primary """
The 2nd approach. When you use `<style>`, the styles "leak" into all the other open tiddlers. Probably OK in this particular use case, but something to be aware of.""" >>
Also see the https://csscompressor.com/
To add your own filters to the list of advanced search filters (drop down menu):
# create a new tiddler (e.g. `SomeName`) tagged with `$:/tags/Filter`
# add a `description` field containing "My Filter")
# add a `filter` field containing `[search:text[MYSEARCHTEXT]]`)
# add a `list-before` field (leave it with a blank value)
* the tag indicates that this is an entry for the filter drop-down.
* the description is the text that appears in the drop-down.
* the filter is the text to insert into the filter input field when the drop-down item is selected
* the list-before field (with NO value) forces your custom filter to * the top of the list (otherwise it would be at the end of the list)
The above code is, of course, standard HTML with "inline CSS". To use actual TiddlyWiki syntax, you would write:
```
@@display:none;
This is hidden text
@@
```
Basically, the `@@... @@` is TiddlyWiki's way of defining a "div" (or a "span") that wraps around a section of content, just like the `<div>...</div>` HTML syntax. The text //immediately// following the opening `@@` and ending with a semi-colon `;` is standard CSS syntax. If, for example, you didn't want to hide the text, but rather, show it with some styling applied, you could write something like:
```
@@color:red;
This is some warning text. PAY ATTENTION!
@@
```
You can also string together a sequence of CSS attributes, like this:
```
@@color:red;font-size:400%;border:1px solid red;
WARNING! DANGER WILL ROBINSON!
@@
```
As noted above, this is equivalent to
```
<div style="color:red;font-size:400%;border:1px solid red;">
WARNING! DANGER WILL ROBINSON!
</div>
```
However, the `<div>` syntax always creates content on a //line by itself//. If you want to do the same styles, but have the content appear "inline", you would use a `<span>...</span>` in place of the `<div>...</div>`, like this:
```
Then, the Robot said, <span style="color:red;font-size:400%;border:1px solid red;">WARNING! DANGER WILL ROBINSON!</span> as it flailed it's tubular arms wildly.
```
and, in TiddlyWiki syntax, this would be written as:
```
Then, the Robot said, @@color:red;font-size:400%;border:1px solid red; WARNING! DANGER WILL ROBINSON!@@ as it flailed it's tubular arms wildly.
```
You can find many excellent CSS technical references online. For example, Mozilla (a browser developer), offers this reference for the CSS "border" syntax:
https://developer.mozilla.org/en-US/docs/Web/CSS/border
You can use that site (and others like it) to look up lots of CSS goodies that you can then incorporate into your content, using either HTML or TiddlyWiki "wrappers".
More information on styles and classes in wikitext is available at:https://tiddlywiki.com/#Styles%20and%20Classes%20in%20WikiText
;How to apply custom class to a tiddler but not when it is edit mode?
: Use the `:not` pseudo-class with proper data attribute.
!! Example
There are lots of ways you can select elements in CSS. Use a user class called `userclass138` to set the left border of any tiddler has this class, but not in the edit mode
!! Stylesheet
<<code-link "exmp138/stylesheet">>
* The `userclass138` sets the left border to blue with properties like tickness and line style
* The data attribute `[data-tiddler-title^="Draft of"]` apply this class only to tiddlers their title start with `Draft of` e.g tiddlers in edit mode
* The `:not()` pseudo class epresents elements that do not match a list of selectors. Since it prevents specific items from being selected, it is known as the negation pseudo-class. Here `:not([data-tiddler-title^="Draft of"])` means doe not select tiddlers their title start with `Draft of` e.g tiddlers in edit mode!
!! Example
The below tiddler demonstrate how user class `userclass138` works. The has a class field applies the user class.
><<fields "exmp138/demo">>
Open the [[exmp138/demo]] and see it in edit mode!
!! Ref
:https://tiddlywiki.com/prerelease/#Custom%20styles%20by%20data-tiddler-title
:https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors
:https://maslosoft.com/kb/how-to-select-html-element-without-attribute-with-css/
Tiddlywiki allows to set the values of CSS properties dynamically. One good example is to read the CSS values from a dictionary (data tiddler).
!! Example
Here [[Stylesheet|stylesheet/dynamically-read-from-datatiddler]] is a tiddler tagged with `$:/tags/Stylesheet` is used to set the font properties of every other tiddler tagged with `hirad`.
In a second tiddler (a dictionary or data tiddler) called [[examp22/font-setting]], there are some key:value pairs. These values are read in [[Stylesheet|stylesheet/dynamically-read-from-datatiddler]] tiddler.
For example [[examp22/font-setting]] has a line like below
```
base-font-size:14px
```
Then in the [[Stylesheet|stylesheet/dynamically-read-from-datatiddler]] tiddler, it is used as set the font-size:
```
font-size:{{examp22/font-setting##base-font-size}};
```
Tiddlywiki dynamically put the value of text reference for CSS value.
<<alert info "''Note'': The current tiddler is tagged with hirad, so its font properties are set through [[examp22/font-setting]]">>
!!! See also
Customizing styles is a feature can be used to selectively apply styles to tiddlers meet some criteria. For more information look at [[Custom Styles Faq|https://tiddlywiki.com/#Custom%20Styles%20FAQ]]
The editor and preview pan in TW 5.1.18 get new look and feel like rounded corner and shaded color. The below code shows how customize and keep the 5.1.17 setting
* Removing the box-shadow from the editor is just
```
.tc-tiddler-frame.tc-tiddler-edit-frame iframe.tc-edit-texteditor {
box-shadow: none;
}
```
* To remove the border-radius:
```
border-radius: none;
```
* To remove it from the preview:
```
.tc-tiddler-preview-preview {
border-radius: none;
}
```
The Tiddlywiki search results can be customized
The core tiddler does the search and displays the result is: `$:/core/ui/DefaultSearchResultList` as shown below
<pre><$text text={{$:/core/ui/DefaultSearchResultList}} /></pre>
You can change the list filter to something like
```
<$list filter="[!is[system]search:caption{$(searchTiddler)$}sort[caption]limit[250]]">
{{!!caption}}
</$list>
```
* The above list makes search in caption fiels
* The result is sorted based on caption value
* The result limited to 250 item
!! List item template
The search result is displayed using a template tiddler called `$:/core/ui/ListItemTemplate` as shown below
<pre><$text text={{$:/core/ui/ListItemTemplate}} /></pre>
This cal also be customized to show differnt values of tiddler elements like caption, field, title, created, modified, ...
;How change the look and feel of tagpills?
: Use proper stylesheet
The below sample shows how to customize the tagpill. To use it
* create a new tiddler
* tag it with `$:/tags/Stylesheet`
* put the below css as its text field
* save
```css
/*TAG EDITOR AND DROPDOWNS*/
html body.tc-body .tc-block-dropdown-wrapper {width:800px;color:#2200bb;}
html body.tc-body .tc-block-dropdown {width:800px;white-space:normal;color:#2200bb;}
html body.tc-body .tc-block-dropdown a {display: inline-block;color:#2200bb;}
html body.tc-body .tc-block-dropdown svg {height: 1.2em;fill:#ccc;display:inline;color:#2200bb;}
/*TAG LABELS*/
html body.tc-body .tc-tag-label {font-family: 'Arial'; font-size:10pt; color:#2200bb;background-color:#eee;margin-bottom:6px;font-weight: bold;}
html body.tc-body .tc-menu-list-item {font-weight: bold; color:#2200bb;}
```
; How to customize the buttons on editor toolbar?
:Target the `tc-editor-toolbar` element and customize it using CSS
!! Example
Change the color to //crimson// and backgrounds to //lightgrey// of all button on editor toolbar. Use //cyan// for button on hover.
<<wikitext-example-without-html
src:"""<style>
.tc-editor-toolbar button {
fill: crimson;
background-color:lightgrey;
}
.tc-editor-toolbar button:hover{
background-color:cyan;
fill: #000;
}
</style>
Go to edit mode to see how it works!
""">>
!! Remarks
If you want to customize specific button like `H1` do as below
```
.tc-editor-toolbar .tc-image-heading-1 {
background: blue;
fill: red;
}
.tc-editor-toolbar .tc-image-heading-1:hover {
background: green;
fill: yellow;
}
```
> Note that `.tc-image-heading-1` is selector for `H1` button.
See [[Change the Colors of One Editor Toolbar Button]] for more information.
;How to customize the data format in tiddler subtitle?
:Edit the core tiddler $:/core/ui/ViewTemplate/subtitle
The date that is shown in each tiddler's heading comes from [[$:/core/ui/ViewTemplate/subtitle]]
which shows the ''modified'' date, using this line:
```
<$view field="modified" format="date" template={{$:/language/Tiddler/DateFormat}}/>
```
If you change the `field="..."` parameter value to ''created'', it will show the creation date of the tiddler. Alternatively, you could ADD an extra `$view` widget to show both dates... something like this:
```
created on
<$view field="created" format="date" template={{$:/language/Tiddler/DateFormat}}/>,
modified on
<$view field="modified" format="date" template={{$:/language/Tiddler/DateFormat}}/>
```
Note also that the "template" for this `$view` widget is a reference to the shadow tiddler, [[$:/language/Tiddler/DateFormat]], which contains:
`DDth MMM YYYY at hh12:0mmam`
You can edit this shadow to change the format of the date output to suit your tastes.
The available formatting codes are defined here: [[https://tiddlywiki.com/#DateFormat]]
<<alert warning "Warning: This solution requires to edit the core tiddlers which is not recommended except you know what you are doing.">>
<<docit>>
Custom dropzone with custon actions
; How to set typed list attribute?
: Use css
If you want to set things globally just create a new stylesheet tiddler with this content and tagged with `$:/tags/Stylesheet`
```
ol li { list-style-type:upper-alpha; }
ol li li { list-style-type:lower-alpha; }
ol li li li { list-style-type:upper-roman; }
```
Using with ordered lists
```
# One
## One-one
## One-two
# Tow
## Two-one
### Two-one-one
### Two-one-two
# Three
```
Will create
```
A. One
a. One-one
b. One-two
B. Tow
a. Two-one
I.Two-one-one
II.Two-one-two
C. Three
```
No extra chars needed. Especially if you need to change something later, you don't need to think about it, which class to use
!! More information
* [[Styleing lists|https://developer.mozilla.org/en-US/docs/Learn/CSS/Styling_text/Styling_lists#Bullet_styles]]
* [[list-style-type|https://developer.mozilla.org/en-US/docs/Web/CSS/list-style-type#Values]]
Hirad: 1388
Mohammad: 1350
Ali: 1344
!! Property table macro
The property table macro (`property-table`) is a utility macro to display the index/value pairs of a DataTiddler (JSON or dictionary tiddler) in a nicely formatted table. For more information see [[macro/datatiddler/utility]].
!! Syntax
```
<<property-table dataTiddler, indexTitle:"Index", valueTitle:"Value">>
```
!! Content and attributes
|!Attributes |!Type |!Description |
|dataTiddler |required|the URL of the image, or the title of an image tiddler |
|indexTitle |optional|the title of index column, default value is "Index"|
|valueTitle |optional|the title of value column, default value is "Value"|
|tblClass |optional|the optional class for customizing the table|
|caption |optional|the optional table caption. It can accept wikitext and formatting.|
!! Example i
Display the property table for [[exmp039/acronyms/web]] DataTiddler.
<$macrocall $name="wikitext-example-without-html"
src="""><<property-table
dataTiddler:"exmp039/acronyms/web"
indexTitle:"Acronym"
valueTitle:"Description"
caption:"''Table 1. Web Technology Acronyms''"
>>
"""/>
!! Example ii
Here a custom class `stripedTbl` is used for table. See [[stylesheet/customClass]].
<$macrocall $name="wikitext-example-without-html"
src="""><<property-table
dataTiddler:"exmp039/acronyms/web"
indexTitle:"Acronym"
valueTitle:"Description"
tblClass:"stripedTbl"
>>
"""/>
Hirad: 1388
Mohammad: 1350
Ali: 1344
; How to use forms to add new index/value pairs to DataTiddlers (also JSON tiddler)?
: Use a temporary tiddler to get the data from user (e.g. `edit-text` widget) and then use `action-setfield` to add the new properties to DataTiddler. the code includes
* An `edit-text` widget is used to get the data from user
* A temporary tiddler: `$:/temp/exmp042`, and its fields to store the data
* An `action-setfield` widget to write the new index/value pair into the DataTiddler (here [[exmp042/sample/data]]).
<$macrocall $name="wikitext-example-without-html"
src="""Index: <$edit-text tiddler='$:/temp/exmp042' field='index-name' placeholder='New index'/>
Value: <$edit-text tiddler='$:/temp/exmp042' field='index-value' placeholder='New value'/>
<$button>Add new index/value
<$action-setfield
$tiddler='exmp042/sample/data'
$index={{$:/temp/exmp042!!index-name}}
$value={{$:/temp/exmp042!!index-value}}
/>
</$button>
"""/>
See the changes in [[exmp042/sample/data]]
{{exmp042/sample/data}}
For the purposes of this style guide, we define the following terms:
* property - a name/value pair inside a JSON object.
* property name - the name (or key) portion of the property. It is called //index// in Tiddlywiki.
* property value - the value portion of the property. It is called the //value// in Tiddlywiki.
```
"propertyName": "propertyValue"
```
<<alert info """The ''name/value'' pair together is a "property".""" width:50%>>
; How to transclude a Value of a DataTiddler Using a Variable?
A reference to a data dictionary index is enclosed in doubled curly braces as below
```
value={{tiddlername##indexname}}
```
Note: If the //tiddlername// portion of the reference is omitted, the reference is to an index in the currentTiddler
```
<$set name="var1" value={{tiddlername##indexname}}>
Here you have access to <<var1>>.
</$set>
```
See also [[Variable as DataTiddler Index]] for more information.
;How to display the date stored in custom field with certain format?
On the Tiddlywiki.com the tiddler: [[Date Fields|https://tiddlywiki.com/#Date%20Fields]] tells us:
>To avoid problems arising from differences of time zone, TiddlyWiki always uses UTC.
The tiddler: [[DateFormat|https://tiddlywiki.com/#DateFormat]] tells us:
>[UTC] Time-shift the represented date to UTC. Must be at very start of format string.
UTC is Coordinated Universal Time - so a time zone offset is needed for where you are.
The extra 8 you used signifies HOURS. Instead this may work:
!! Example
<<wikitext-example-without-html
src:"""><$view field="myfield" format="date" template="[UTC]MMM DD, YYYY"/>""">>
You can use dieffenet date format as explained on [[Tiddlywiki.com|https://tiddlywiki.com/#DateFormat]].
How to configure `Default tiddlers` to open all recent ordered by date like a blog?
In the default tiddlers you can put:
```
[days[-7]!is[system]sort[modified]]
```
where -7 is how many days you want to appear (-7 means last 7 days).
This is modified date, which changes whenever you update the tiddler. You can change it to `created` if you want, which is based on when the tiddler is created. The distinction might be important if you need to go back to blog entries and make corrections but don't want their order to change.
How to create a list of tiddlers tagged with say `mytag` having a delete button for each item? So, one can delete items optionally.
!! Solution i
Inspired by a similar solution By [[Mark S|https://groups.google.com/d/msg/tiddlywiki/ERNELGnH6SY/PX8JKXBcBwAJ]].
List all tiddlers tagged with `Concepts` and dedicate a delete button to each item.
<<<
```
<$list filter="[tag[Concepts]]">
<$button message="tm-delete-tiddler" >Delete</$button>
<$text text= <<currentTiddler>> /><br/>
</$list>
```
<$list filter="[tag[exmp011]]">
<$button message="tm-delete-tiddler" >Delete</$button>
<$text text= <<currentTiddler>> /><br/>
</$list>
<<<
!! Solution ii
Anthony Muscio proposed a simple solution [[here|https://github.com/kookma/TW-Scripts/issues/1#issue-400568972]]. It uses one button to //delete all tiddlers at once.//
```
<$button>
<$list filter="[tag[Concepts]]" variable=tiddlername>
<$action-deletetiddler $tiddler=<<tiddlername>>/>
</$list>
Delete Set
</$button>
```
```
<$button>
<$action-deletetiddler $filter="[tag[Concepts]]"/>
Delete Set
</$button>
```
!! Solution iii
Tobias Beer has given a solution inspired [[by posts|https://groups.google.com/d/msg/tiddlywiki/U9GYlwVXp6M/hAtthrlikgUJ]] from [[Stephan Hradek]] and [[Matabele]] to delete tiddlers using a filtered list...
See it here [[tb5|https://tobibeer.github.io/tb5/#Deleting%20Tiddlers%20Via%20Lists]]
;How to delete several tiddlers selectively?
:Use a $list widget to display tiddlers and a $checkbox to let select them.
!! Code
```
<$list filter="[all[tiddlers]]">
<$checkbox field="selected" checked="true" unchecked="false">
<$link /><br>
</$checkbox>
</$list>
<$button> delete selected tiddlers
<$list filter="[all[tiddlers]selected[true]]">
<$action-deletetiddler $tiddler=<<currentTiddler>> />
</$list>
<$list filter="[all[tiddlers]selected[false]]">
<$action-deletefield $tiddler=<<currentTiddler>> $field="selected" />
</$list>
</$button>
```
!! Remarks
* the first filter lists all tiddlers, and shows a checkbox for each
* the checkbox adds a field to the listed tiddler: selected=true/false
* the button invokes $action-deletetiddler for each tiddler that has field selected="true"
* the button also invokes $action-deletefield for each tiddler that has field selected="false"
* this is in case you selected a tiddler and then changed your mind and deselected it
;How list and delete tiddlers as below?
# Create a list of tiddlers whose titles match some string (simple equality, or even better, regex)
# Delete them as a batch
! Solution
!! Step i: list tiddlers
The below code lists tiddlers their title starts with `Formatting List`. You can use other filter you like. It uses the TW `rexexp` operator.
```
<$list filter="[!is[system]regexp[^Formatting List]]" variable="tidToDelete">
<li> <<tidToDelete>> </li>
</$list>
```
!! Step ii: Use a button to delete all tiddlers
Copy/paste the filter above into this button:
```
<$button>
Delete these tiddlers!
<$list filter="PLACE_FILTER_HERE" variable="tidToDelete">
<$action-deletetiddler $tiddler=<<tidToDelete>>/>
</$list>
</$button>
```
!! See also
* [[regexp operator|https://tiddlywiki.com/#regexp%20Operator]] for more information.
How develop a viewtemplate to show a red delete button on tiddlers have a `due` field?
```
<$list filter="[is[current]has[due]]">
<$button message="tm-delete-tiddler" tooltip="delete tiddler" class="tc-btn-invisible">
<span style=background-color:red; class=tc-tag-label>Delete</span>
</$button>
</$list>
```
It shows a red button. On click it can delete the tiddler.
<<alert success width:100% "The code can be used in a tiddler tagged with `$:/tags/ViewTemplate` to show the delete button on all target tiddlers">>
This is part of Example 23.
This is part of Example 23.
\define myactions(old, new)
<$fieldmangler>
<$action-sendmessage $message="tm-add-tag" $param="$new$"/>
<$action-sendmessage $message="tm-remove-tag" $param="$old$">
</$fieldmangler>
\end
\define add-remove-tags(old new)
Add <<tag $new$>> Remove <<tag $old$>>
<$button actions=<<myactions $old$ $new$>>>{{$:/core/images/erase}}
</$button>
\end
!! Example 1
Add `Topics` as new tag and remove `OldTopics` as old tag
<$macrocall $name="wikitext-example-without-html"
src="""<<add-remove-tags OldTopics Topics>>
"""/>
Now do reverse e.g. remove `OldTopics` as old tag and add `Topics` as new tag
<$macrocall $name="wikitext-example-without-html"
src="""<<add-remove-tags Topics OldTopics>>
"""/>
\define BtnTagListops(btntext,add-remove,tooltip)
<$button tooltip="""$tooltip$""">
<$wikify name="timestampState" text="{{$:/config/TimestampDisable}}">
<$action-setfield $tiddler="$:/config/TimestampDisable" $value="yes"/>
<$action-listops $tags="$add-remove$" />
$btntext$
<$action-setfield $tiddler="$:/config/TimestampDisable" $value=<<timestampState>>/>
</$wikify>
</$button>
\end
\define todoBtnDoNow()
<$wikify name="tt" text="switch tag">
<$macrocall $name="BtnTagListops" btntext="Do this now" add-remove="ToDoNow -ToDo" tooltip=<<tt>>/>
</$wikify>
\end
This example is part of <<tag exmp025>>. It switch tags without changing the timestamps. If you press the below button the tag of current tiddler changes from `ToDo` to `ToDoNow`
<$macrocall $name="wikitext-example-without-html"
src="""<<todoBtnDoNow>>
"""/>
\define pdflink(label path page) [ext[$label$|$path$#page=$page$]]
Here a macro is used to open a specific page in an external pdf file.
```
\define pdflink(label path page) [ext[$label$|$path$.pdf#page=$page$]]
```
* `label`: the link label to pdf file
* `path`: a relative or absolute path to pdf file (including `.pdf` extension)
* `page`: a page number like 5. Note that the page should be in the range.
!! Example
<$macrocall $name="wikitext-example-without-html"
src="""><<pdflink label:"sample-pdf-file: Page 5" path:"examples/sample-pdf-file.pdf" page:5>>
"""/>
\define pdflink2(label path file page) [ext[$label$|$path$/$file$#page=$page$]]
\define pdflink(label file page) <$macrocall $name=pdflink2 label="""$label$""" path={{exmp026/pdfs-path}} file="""$file$""" page="""$page$"""/>
In this version, the base path is defined in a tiddler, `exmp026/pdfs-path`. It could be defined in a `field` of a tiddler, but this way is a little more transparent:
```
\define pdflink2(label path file page) [ext[$label$|$path$/$file$#page=$page$]]
\define pdflink(label file page) <$macrocall $name=pdflink2 label="""$label$""" path={{exmp026/pdfs-path}} file="""$file$""" page="""$page$"""/>
```
Here a macro is used to open a specific page in an external pdf file.
```
\define pdflink(label file page) [ext[$label$|$path$.pdf#page=$page$]]
```
* `label`: the link label to pdf file
* `file`: the name of pdf file (including `.pdf` extension)
* `page`: a page number like 4. Note that the page should be in the range.
!! Example
<$macrocall $name="wikitext-example-without-html"
src="""><<pdflink label:"Go to page 4" file:"sample-pdf-file.pdf" page:4>>
"""/>
This is {{!!title-}} and it is part of <<tag exmp027>>.
This is {{!!title-}} and it is part of <<tag exmp027>>.
This is {{!!title-}} and it is part of <<tag exmp027>>.
This is part of exmp054. Do not delete!
This is part of exmp054. Do not delete!
This is part of <<tag exmp057>>. Do not delete.
This is part of <<tag exmp057>>. Do not delete.
This is part of <<tag exmp057>>. Do not delete.
This is part of <<tag exmp057>>. Do not delete.
! Developer links
<<<
<<list-links "[tag[developer]!has[draft.of]sort[title]] -[[Links]]">>
<<<
!Under development
<<<
; QuizCard with pure CSS
:http://szenio.de/quiz/
;Wonderful QuizCard
:http://szenio.de/quiz/
<<<
A Pocket Full of Tips: file:///G:/TW/Tobias%20Beer/a%20pocket%20full%20of%20tips-5.1.19.html
Filters: file:///G:/TW/Tobias%20Beer/Filters-5.1.19.html
My-Notes: file:///G:/TW/01.%20My-TW-Notes/myNotes.html
TW 5.1.19: file:///G:/TW/Archive/TW-Full/tiddlywiki-5.1.19.html
There *is* a way to disable dragability of an element:
The following CSS should disable dragging of all links:
```
a {
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
user-select: none;
-webkit-user-drag: none; user-drag: none;
-webkit-touch-callout: none;
}
```
Note: to limit this to just certain links, change the above to:
```
.nodrag a { ... }
```
and then wrap the desired link(s) within .nodrag, like this:
```
@@.nodrag [[SomeLink]]@@
```
Tiddlywiki by default has auofocus on Searchbox on the sidebar. This may cause annoying behaviour when you open a wiki and a search word in the sidebar search box. To disable this feature:
# Open [[$:/config/Search/AutoFocus]]
# Set the text value of this tiddler to `false`.
<<docit>>
See also: [[Switch Tags without Change in Timestamp]]
; How all core images can be listed?
The core images tagged `$:/tags/Image` are actually ''shadow tiddlers''. The "tag" macro looks for shadow tiddlers by default. The list-links macro will only look for shadow tiddlers if you provide an appropriate filter that includes them:
```
<<list-links "[all[shadows+tiddlers]tag[$:/tags/Image]]">>
```
<<alert warning """''Shadow tiddlers'' are the payload tiddlers within plugins. They are hidden from most operations because they are not "real" tiddlers; this is done to reduce clutter.""">>
!! Example
List //ten// core images in a table with their title. The below example is given by [[Joe Armstrong|https://groups.google.com/d/msg/tiddlywikidev/ctz7Z_dwNNo/Zx-Z1vo6BgAJ]].
* You can remove the `limit[10]` operator to list all images
* This is a dynamic table and the number of `list` widget outputs determine the number of rows
<<wikitext-example-without-html
src:"""<table>
<tr><th align="left">Title</th><th>Image</th></tr>
<$list filter="[all[shadows+tiddlers]tag[$:/tags/Image]limit[10]]">
<tr><td>{{!!title}}</td><td><$transclude /></td></tr>
</$list>
</table>
""">>
;How an image stored in Google Drive can be displayed in Tiddlywiki?
: Use the _canonical_uri field
!! Howto
# create a new tiddler
# add a field called: `_canonical_uri`
# copy and paste the sharelable link of your image on Google Drive as field value
# save tiddler
# See this instruction for how create a sharable link of image: https://support.awesome-table.com/hc/en-us/articles/115002196665-Display-images-from-Google-Drive
!! Example
The below example show a tiddler with `_canonical_uri` looks like
<<fields "exmp125/image-from-google-drive">>
Here is a another example uses the external image and embed it this tiddler.
<<wikitext-example-without-html
src:"""[img width=128px [exmp125/image-from-google-drive]]""">>
;How to show a certain level of tag tree?
: Use `tagging` operator to select certaing level.
```
level 1: <$list filter="[tag[$:/.mr/toc]]">
</$list>
level 2: <$list filter="[tag[$:/.mr/toc]tagging[]]">
</$list>
level 3: <$list filter="[tag[$:/.mr/toc]tagging[]tagging[]]">
</$list>
```
;The TW standard date format looks like `YYYY0MM0DD`, using the `split` operator of TW5.1.20 it is possible to handle `YYYY-0MM-0DD` and display results as `Month day, year`
!! Example
The below example [[exmp084/demo]] shows how dates like `2019-08-01` can be treated using the `split` operator.
{{exmp084/demo||template/code}}
;Remarks
: The date as `2019-08-01` is stored in field `test-field`
:The `split[-]` splits the entry on `-` delimiter
:The `nth[?]` operator select the first, second, or third part of result. For example `nth[1]` takes the first part
:The lest `$set` widget takes the nth entry based on month number. For example if month number is 3 then `+[nth<mpos>]` returns Mar
!! Result
> {{exmp084/demo}}
; How to display fields that have a specific prefix in the current tiddler?
: for fetching fields and their values in current tiddler use `$list` widget and `all[current]`
!! Example
Example of fetching fields and values in current tiddler where field name starts with `my` :
<$macrocall $name="wikitext-example-without-html"
src="""<$list filter="[all[current]fields[]prefix[my]]" variable="field">
<$list filter="[all[current]get<field>]" variable="value">
<<field>> : <<value>> <br/>
</$list>
</$list>
"""/>
See [[exmp081/demo]] for details.
; How to display list of tiddlers tagged with parent tiddler, when it is opened?
: Use conditional view template.
!! Example
The below template shows all tiddlers tagged with the parent tiddler as an ordered list:
* It checks to see if there is any tiddler tagged with the current tiddler (parent). This is performed by the outer `list` widget.
* It then makes a call to `list-links` macro to display the tiddlers using an ordered list.
* A short message is also showed indication tiddlers tagged with the parent tiddler.
Source: [[viewtemplate/tagging]]
<pre><$view tiddler="viewtemplate/tagging"/></pre>
<<vspace 2cm>>
<$macrocall $name="alert" type="danger" src="""''Note'': Reffering to paranet tiddler by `<<currentTiddler>>` in the text is problematic. Using the double angle brackets syntax in the open like this causes the text in the target variable to be wikified. Thus, if you had a tiddler called "HelloThere Jeremy" the word "HelloThere" would be turned into a link to a different tiddler."""/>
;How to display all tiddlers tagged with a list of inputs? That means find and display all tiddlers tagged with any tags in the input list
: Use the `tagging` filter operator
This may happen when a user selects or inputs a list of tags and its required to find anny tiddler tagged with any tags in the input list
!! Example i
A list of tags is given through a macro. Display all tiddlers tagged with this input list.
<<code-link "exmp140/demo01">>
;Remarks
* The `tagLists` here defines the list of input tags
* The input list is used in `[subfilter<tagsList>]`
* With the `+[tagging[]]`, each input tag is processed in turn. The list of tiddlers carrying that tag is generated, sorted, and then dominantly appended to the operator's overall output.
The above example generates the below results.
<<content "exmp140/demo01">>
!! Example ii
A list of tags is given through an inputbox . Display all tiddlers tagged with this input list.
<<code-link "exmp140/demo02">>
;Remarks
* The `$edit-tex` widget here gets the list of input tags from user and stores in [[$:/temp/exmp140]]
* The input list is used in `[subfilter{$:/temp/exmp140}]`
* With the `+[tagging[]]`, each input tag is processed in turn. The list of tiddlers carrying that tag is generated, sorted, and then dominantly appended to the operator's overall output.
The above example generates the below results.
<<content "exmp140/demo02">>
<<vspace 2em>>
<<alert info "If a tag has space in name give it using double squar brackets e.g `[[my tag with space]]`">>
All tiddler links are draggable by default. They can be dragged within a browser window for manipulating tiddlers, or dragged to a different browser window to initiate an import operation
If you drag-and-drop a whole wiki file (a Tiddlywiki file e.g. //mywiki.html//) over another wiki, an [[import operation|https://tiddlywiki.com/#Importing%20Tiddlers]] will be inititaed
This way you can also update old wiki files. Assume you have an //empty.html// of new release. If you drag and drop your old wiki file over the //empty.html//, TW will import all tiddlers except the newer system (core, plugin) tiddlers.
!! Example
# Open an empty.html (can be downloaded from: https://tiddlywiki.com/#GettingStarted)
# Open it in a browser
# Drag your old wiki over it
# Choose which tiddlers you would like to be imported
# Save your empty.html
That's all.
;How to create a custom draggable lets you drag and drop a list of selected items?
:Use the $draggable widget
!! Example i
Create a custom draggable for all tiddlres tagged with `solution`
><$macrocall $name="wikitext-example-without-html"
src="""<$draggable filter="[tag[solution]]">Drag me</$draggable>
"""/>
!! Example ii
Create a custom draggable for all tiddlres tagged with `datatiddler` and use some CSS classes to beautify it
><$macrocall $name="wikitext-example-without-html"
src="""<$draggable filter="[tag[datatiddler]]" class="btn btn-info">Drag all Data Tiddlers</$draggable>
"""/>
;Remarks
: This way one can create a budnle to be exported to other wiki using drag and drop.
Tag pills are draggable, and are equivalent to simultaneously dragging all of the individual tiddlers carrying the tag
If you drag-n-drop a Tag pill between wikis (two Tiddlywiki files) ALL the tiddlers under that Tag can get imported.
!! Example
Try to drag the below tag to another wiki files. This will import all tiddlers tagged with `coding` to the new wiki.
<$macrocall $name="wikitext-example-without-html"
src="""<<tag coding>>
"""/>
Thanks to [[Josiah|https://groups.google.com/d/msg/tiddlywiki/GnA7A8tZcCM/QKH6T4YxHQAJ]]
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="256px" height="256px">
<g transform="translate(50,50)">
<path d="M38,-1h12v2h-12zM-38-1h-12v2h12z"/>
<path d="M40,-1h8v2h-8zM-40-1h-8v2h8z" transform="rotate(30)"/>
<path d="M40,-1h8v2h-8zM-40-1h-8v2h8z" transform="rotate(60)"/>
<path d="M38,-1h12v2h-12zM-38-1h-12v2h12z" transform="rotate(90)"/>
<path d="M40,-1h8v2h-8zM-40-1h-8v2h8z" transform="rotate(120)"/>
<path d="M40,-1h8v2h-8zM-40-1h-8v2h8z" transform="rotate(150)"/>
<path d="M-0.5,0v-35h1v35z"/>
<path d="M0,-0.75h30v1.5h-30z"/>
<path d="M0,-0.75h30v1.5h-30z" transform="rotate(-30)" fill="#888"/>
<path d="M25-12A28,28 0,0,1 28-2m-0.3,0l-1-2h2z" stroke-width="1" stroke-linejoin="round" stroke="#F00" fill="#F00"/>
<circle r="2"/>
</g>
</svg>
; How create CSS dynamically in Tiddlywiki?
:Use TW scrippting elements to generate a stylesheet dynamically!
!! Example
Assume you have some tiddlers contains CSS but NOT tagged with `$:/tags/Stylesheet`. It is also possible to add more tiddlers (for example those added by users), you can create a stylesheet by dynamic populating CSS from those tiddlers.
As an example, we have three diffent tiddlers each have some CSS and tagged with <<tag exmp064>>, to create a dynamic stylesheet create a tiddler as below
<<<
* title: what you want
* tag: `$:/tags/Stylesheet`
* text:
```
<$list filter="[tag[exmp064]]">
<$transclude/>
</$list>
```
<<<
For details see [[Example 64: Demo]]
!! Remarks
As [[PMario|https://groups.google.com/d/msg/tiddlywiki/Puq3nkIlMtk/qZLZRd4QDAAJ]] stated the tiddlers that contains the CSS code needs the pragma as below. Have a look at the added "prettylink" rule. The below is valid CSS and the prettylink will be active.
```
\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock prettylink
/*
[[Link to the docs]]
*/
.test-style {
color: red;
}
```
If you delete the pragma in such example, the pretty link like `[[test */]]` will fool the brower css parser.
!! More resources
;Use a custom field to style a tiddler
:[[Tiddlywiki custom style faqs|https://tiddlywiki.com/#Q%3A%20How%20can%20I%20use%20a%20custom%20field%20to%20style%20a%20tiddler%3F]]
<<docit>>
```
tags: $:/tags/Stylesheet
type: text/vnd.tiddlywiki
text:
[data-tiddler-title="{{$:/HistoryList!!current-tiddler}}"] {
height:100vh;
}
[data-tiddler-title="{{$:/HistoryList!!current-tiddler}}"] .tc-tiddler-body {
height:90%;
overflow: auto;
}
```
Generate dynamic stylesheet and apply them conditionally
This is a small python script start a local server for saving single wiki file. It is called ''Python Server''.
<<code-link exmp108/twserver.py>>
!! Linux usages
# Assume TiddlyWiki files live in `/home/ubi/TW`, abbreviated `~/TW`.
#* Use the correct path for your case
# There (`/home/ubi/TW`) place the script as `twserver.py`.
# Start `twserver.py` for example in a terminal window:<div>
```
/usr/bin/python3 ~/TW/twserver.py
```
</div>
# Then point your browser to http://localhost:8080/.
# Status messages started appearing in the terminal window.
# In the browser window a list of files and directories below `~/TW` appeares.
# Open one of TW files, e.g notes.html, and created a new Tiddler and save the changes (TW by default saves automatically)
## The server will create a backup in `~/TW/twBackups` on the fly, e.g `notes.html.YYYYMMDDhhmmss` .
## And then save also the changes to e.g. `~/TW/notes.html`.
<<alert info "It is possible to call the script and start the server on system startup or login procedures">>
!! Windows usages
The procedure is exactly the same as Linux. As an example consider the below file structure
* Main folder: `C:\TW`
* Server path: `C:\TW\Python Server`
* Start Python: go to server path and luanch `python twserver.py`
* Open browser and point to to http://localhost:8080/
* Click on a TW file of choice to open it in browser
* Make a new tiddler and save (or let TW saves automatically)
!! Start a default wiki file
How to instruct server to start a wiki file by default on Windows ^^[[1|https://groups.google.com/d/msg/tiddlywiki/M64suMWXDYQ/lnm3dL19BAAJ]] ^^?
* Open the `twserver.py`
* Adding the line
```
os.system('"C:/Program Files/Firefox Developer Edition/firefox.exe" -url http://127.0.0.1:8080/notes.html')
```
before
```
HTTPServer(('localhost',8080),ExtendedHandler).serve_forever()
```
* It will start up firefox pointing to my `notes.html`
** Note that here the Developer Edition of firefox so your path might be different based on your browser of choice!)
<<docit>>
;The twserver-go
A TiddlyWiki HTTP Server written in Go.
;Setup
# Download the latest build for your platform.
# Extract the archive.
# cd into the directory that was just created.
# Put the TiddlyWiki's `empty.html` file inside the www subfolder.
# Rename the `empty.html` file to `index.html`.
# Run the server: `./twserver`.
# Open your web browser and browse to: `http://localhost:8080`.
The [[hacdias/webdav|https://github.com/hacdias/webdav/]] is a simple Go WebDAV server. It can be used to save Tiddlywiki single html file using any web browser (firefox, chrome, edge) even old browser like IE.
The `webdav` command line interface is really easy to use so you can easily create a WebDAV server for your own user.
!!How to use
# Simply download the suitable executable from https://github.com/hacdias/webdav/releases
#* for example for Windows 64bit downlaod `windows-amd64-webdav.zip`
# Unzip the file in the above step in your folder of choice
#* For demonstration purpose, `C:\TW\Webdav` is used here. This folder called //webdav root folder//.
# Create a folder in the root of webdav to put your wiki files there
#* In this demo it is `C:\TW\Webdav\wikis`
#* Copy some wiki files to wiki folder. For demo purpose here `test.html` has been put in this folder
# Create a configuration file in webdav root folder to setup the server as you like.
#* For demonstration purpose `C:\TW\Webdav\webday.ymal` is used here which is contains<div>
<pre>modify: true
address: 127.0.0.1
port: 8080
tls: false
cert: cert.pem
key: key.pem
users:
- username: admin
password: admin
scope: ./wikis
</pre>
</div>
#Create a shell script as below to fire up your server.
#* For demonstration it is called here `C:\TW\Webdav\startServer.cmd` containing the below script <div>
<pre>REM Start WebDav Server
webdav.exe -c webdav.yaml
</pre>
</div>
#Fire up your server by run `C:\TW\Webdav\startServer.cmd` script (e.g double click on it)
#Go to your browser of choice and in address bar type `http://localhost:8080/yourwiki.html` and login with "admin" and "admin" (or with the credentials you used in your configuration file).
#* In this demo //test.html// is used so in address bar type: `http://localhost:8080/test.html`
!! Remarks
* The wiki folder can have any number of sub folders like
** `C:\TW\Webdav\wikis\work`
** `C:\TW\Webdav\wikis\personal`
* There is no need for shell script and one can fire up durectly from the Windows powershell or command line e.g
** `webdav.exe -c webdav.yaml`
* The webdav server allows to add any number of users each with different wiki folder, credential and access level
* For path use `/` like `a/sample/path`. This is true also on Windows
* Relative paths are considered with respect to location of `webdav` executable. for example
** If on Windows `webdav.exe` is in `C:\TW\Webdav` and the scope (wikis folder) is `C:\TW\Work` then<div>
<pre>users:
- username: admin
password: admin
scope: ./../Work
</pre>
</div>
* The webdav server accepts absolute (fixed) paths for example `scope: "C:/TW/Work"` note to `/` instead of `\` on Windows.
<<alert info src:"''Note'': The webdav is totoally ''portable''. When you use relative path for wikis folder, it can be placed on a thumb drive and used anywhere!">>
!! How to create a landing page
* Assume you have setup your server as below<div>
```
scope: .
modify: true
address: 127.0.0.5
port: 8086
tls: false
cert: cert.pem
key: key.pem
users:
- username: admin
password: admin
scope: "./wikis"
```
</div>
* Use a wiki e.g. `landing-page.html` stored in wikis folder which has a tiddler with the below contents to create a list of links to wikis<div>
```
<$list filter="[enlist{!!webdav-wikis}addprefix[http://127.0.0.5:8086/]addsuffix[.html]]">
<li><a href=<<currentTiddler>> target=_blank><$view tiddler=<<currentTiddler>> field=title/></a></li>
</$list>
```
</div>
** a field called `webdav-wikis` filled with space separated title of wikis stored in wikis folder
* For simplicity one can have a shell script (e.g `landing-page.cmd`) to start Microsoft Edge Chromium with laninding page as below:<div>
```
@echo off
REM Open the Webdav landing-page
echo start microsoft edge chromium
start msedge.exe http://127.0.0.5:8086/landing-page.html
```
</div>
!! References
* https://github.com/hacdias/webdav
* https://tiddlywiki.com/#Saving%20via%20WebDAV
Here is a very simple example of a dropdown using `focusPopup`
<<docit>>
<$macrocall $name="wikitext-example-without-html"
src="""<$edit-text tiddler="exmp095/data" tag="input" default="" focusPopup="exmp095/state" class="tc-popup-handle"/>
<$reveal state="exmp095/state" type="nomatch" text="" default="">
<div class="tc-block-dropdown">
<$linkcatcher to="exmp095/data">
<div class="tc-dropdown-item">
[[One]]
[[Two]]
[[Three]]
</div>
</$linkcatcher>
</div>
</$reveal>
"""/>
https://mail.google.com/mail/u/0/#inbox/FMfcgxwLswPCvpmGCKGpSvsdrTWgQbSL
Editing fields in the current Tiddler in view mode is tricky at the beginning because the field you are editing keeps loosing focus.
Here is a quick solution to this issue.
The simplest approach is to place the following in a tiddler tagged `$:/tags/ViewTemplate`
```
<$edit-text field="description"/>
```
Then wrap the above in a list widget to have it appear selectively such as only on tiddlers that already have the //description// field.
Alternatively place he above in a ''template tiddler'' and transclude that In the view template tiddler
in a tiddler tagged `$:/tags/ViewTemplate`
```
{{||yourtemplate}}
```
<<alert warning "Note: If you use the `{{||yourtemplate}}` directly (typed in the body) in a random tiddler you will experience the same lost of focus issue.">>
Using it through the ''view template'' works because what you are looking at is the rendering of the view template not your current tiddler.
You may want to fold the tiddler so you do not see the content twice.
Templates have the advantage of being able to have edits for multiple fields without making the view template tiddlers any more complex. eg
```
Using template:<br>
Description: <$edit-text field="description"/><br>
Caption: <$edit-text field="caption"/><br>
```
One way to make it possible to decide in any given tiddler if you want to edit a field in the current tiddler, when in view mode, is to create a field in any given tiddler called `viewtemplate` and name your view template eg viewtemplate: `testTemplate`
Then to activate this add to a tiddler tagged `$:/tags/ViewTemplate`
```
<$list filter="[all[current]has[viewtemplate]get[viewtemplate]]" variable="view-template">
<$transclude tiddler=<<view-template>>/>
</$list>
```
So if the template is named in any tiddler the view template will transclude that template. You may want to add a `list-before` field with the value `$:/core/ui/ViewTemplate/body` in the tiddler tagged `$:/tags/ViewTemplate`
What is nice is if the fields do not exist they are silently created.
If you create your own new tiddler button you can set the viewtemplate field at creation or use a template to create your tiddlers with the view template already set. Or just clone an existing tiddler.
!! Example i
<<<
Try this for a quick way to edit in the view mode a field on the current tiddler
; QuickFieldEdit - edit-field-list
: Place this in a tiddler tagged `$:/tags/ViewTemplate`
```
<$list filter="[all[current]has[edit-field-list]]" variable=nul>
<$list filter={{!!edit-field-list}} variable=named-field>
<<named-field>> <$edit-text field=<<named-field>>/><br>
</$list>
</$list>
```
Now in any tiddler place a list of field names (space separated) in a field called `edit-field-list` eg
`caption description`
And you can edit these as text fields in the view mode.
<<<
!! Example ii
<<<
To edit the text field in the current Tiddler in view mode:
* in a tiddler tagged `$:/tags/ViewTemplate`
* put the below script
```
in a tiddler tagged $:/tags/ViewTemplate
<$list filter="[is[current]edit-inline[yes]]" variable=null>
{{||$:/core/ui/EditTemplate/body/editor}}
</$list>
```
* Now set the field `edit-inline` on any tiddler to `yes` and you can edit the text directly.
<<alert danger "Some editor toolbar buttons do not work with this method.">>
<<<
;How to add a new toolbar button to toggle direction of tiddler from LTR to RTL and vice versa?
To have this button, two tiddlers shall be created as below
# An action tiddler to implements the button and all actions required
# A stylesheet to use CSS for setting style of any tiddler tagged with `rtl` to show its text area in an RTL mode
!! The action tiddler
First create an action tiddler as below
* title: $:/core/ui/EditorToolbar/rtl
* tags: $:/tags/EditorToolbar
* icon: $:/core/images/right-arrow
* caption: RTL
* description: Toggle Right To Left
* condition: `[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]`
* text: <div>
```
And the following text:
<$list filter="[<targetTiddler>tag[rtl]]" variable="ignore" emptyMessage="""
<$action-listops $tiddler=<<targetTiddler>> $tags="+rtl"/>
""">
<$action-listops $tiddler=<<targetTiddler>> $tags="-rtl"/>
</$list>
```
</div>
!! The stylesheet tiddler
Next create a stylesheet tiddler
* tags: `$:/tags/Stylesheet`
* text: <div>
```
\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock
.tc-tiddler-frame.tc-tagged-rtl textarea.tc-edit-texteditor {
direction: rtl;
}
```
</div>
!! How to use
Now every thiddler has no type and its type is `text/vnd.tiddlywiki` in edit mode shows a <code><<doc-svg $:/core/images/right-arrow>></code> on click adds the `rtl` tag and switch the direction of textarea from left, to right
A complete example is avialable at http://kookma.rtl.tiddlyspot.com/
<<alert danger "''Note'':This method only works with Tiddlywiki original editor and not with CodeMirror. ">>
<<alert danger "''To be completed''">>
Add description on how colorify svg image
"""
Mohammad,
Interesting.
https://tiddlywiki.com/#Using%20SVG explains what happens, if the content type is set.
The class tc-image-button seems to be used only for sizes, not for fill-definitions in vanilla, see
https://tiddlywiki.com/#%24%3A%2Fthemes%2Ftiddlywiki%2Fvanilla%2Fbase
All the best,
Thomas
"""
; Why blank filter in list does not execute the emptyMessage?
The TW parser doesn't differentiate between a parameter with a ''blank value'' and a parameter that ''is not specified'' at all. Thus, since `filter=""`, it's as if you had just written
<$macrocall
$name="wikitext-example-without-html"
src="""<$set name="myVariable" filter="" value="It's magic" emptyValue="It's not magic">
<$text text=<<myVariable>> />
</$set>
""" />
To display content when the story is empty, create `$:/config/EmptyStoryMessage` and enter the desired contents.
!! Example i
The following would show the GettingStarted tiddler when all others are closed.
```
{{GettingStarted||$:/core/ui/ViewTemplate}}
```
!! Example ii
The following would show the a nice list to important tiddlers (here these are ) when all others are closed.
```
[[Home]] | [[My Tasks]] | [[Referencs]]
```
!! Example iii
This example shows the content of GettingStarted in a tiddler frame when there is no tiddlers open in story river.
```
<div class="tc-tiddler-frame">{{GettingStarted}}</div>
```
See also prevent empty story river discussion on [[Google Group|https://groups.google.com/d/msg/tiddlywiki/wPTdcfG09Rw/Q0Q9WKIFAwAJ]]
{{$:/plugins/danielo/encryptTiddler/Encrypt-Tiddler}}
See the plugin here: $:/plugins/danielo/encryptTiddler
This is a more sophisticated version by [[Stephan Hradek]]. This template displays target tiddler title as heading one, and its contents below it. On clicking the title, TW navigate to target tiddler in the edit mode
!! Template tiddler
There is now also an enhanced version of the [[template/full]] which allows editing of the transcludet tiddler by clicking the headline.
<<<
Title: [[template/full-enhanced]] <br>
Text: as below
```
!! <$button message="tm-edit-tiddler" param={{!!title}} class="tc-btn-invisible tc-tiddlylink"><$view field="title"/></$button>
<$transclude mode="block"/>
```
The above template uses two fields `title` and `text`. The defualt field is used by `$transclude` widget is `text`.
<<<
<<alert info "The [[template/full-enhanced]] transcludes target tiddler with a button on clicking navigates to target tiddler in edit mode." width:"100">>
!! Usage
Now assume the [[exmp070/demo01]] should be transcluded using the above [[template/full-enhanced]] template. So
><<wikitext-example-without-html
src:"""{{exmp070/demo01||template/full-enhanced}}
""">>
!! Remarks
Transcluding by [[template/full-enhanced]] displays
* title of target tiddler by heading two `!!` and it is clickable (on clicking the tiddler title, TW navigates to target tiddler in edit mode)
* body (text) of target tiddler is shown below the title
Eric is one the main developer in TiddlyWiki, specially the classic version. He prepared many docs, plugin and macros for TW and has served the community with his great contribution.
!!New work
;Insider book
: http://tiddlytools.com/InsideTW
:http://insidetiddlywiki.tiddlyspot.com/
;Filter generator
:http://tiddlytools.com/filtergenerators.html
;Tiddlywiki Classic
:http://www.tiddlytools.com/
;Tiddlylife a classic TW example
:http://tiddlytools.com/TiddlyLife.html
;Announce in Forum
:https://groups.google.com/d/msg/tiddlywiki/hDvGdteiPIQ/w2n3GdfqCAAJ
The approach is used here can be employed to apply custom css dynamically.
Search Term: <$edit-text tiddler='$:/temp/ExactSearch' field='text' tag='input'/>
<$checkbox tiddler='$:/temp/ExactSearch' field='include_system' checked=true unchecked=false> Include System Tiddlers</$checkbox>
<$list filter='[[$:/temp/ExactSearch]has[text]field:include_system[true]]'>
<$list filter='[regexp:text{$:/temp/ExactSearch}]-[[$:/temp/ExactSearch]]'>
</$list>
</$list>
<$list filter='[[$:/temp/ExactSearch]has[text]!field:include_system[true]]'>
<$list filter='[!is[system]regexp:text{$:/temp/ExactSearch}]-[[$:/temp/ExactSearch]]'>
</$list>
</$list>
---
Ref: [[Jed Carty Solution|https://www.ooktech.xyz:8443/Public#Exact%20Phrase%20Search]]. Also see this topic in [[forum|https://groups.google.com/d/msg/tiddlywiki/PEnAcsPjA8E/3vSovsuABQAJ]]
\import exmp101/macro
;How search for exact occurance?
:Use the `regexp` with word boundary flag
The purpose is to search for exact literal phrase. For example, when search for 12, only return tiddlers which have the exact phrase 12 and NOT 123 or test12.
!! Code
To develop a script to search in tiddlers title for exact matches of phrases, it is needed to use `regexp` operator. The `regexp` lets define word boundary and this direct to exact match. For details see [[http://tw-regexp.tiddlyspot.com/]]
The below `exact-search` macro does the magic. It contains
* a select widget to select among predefined fields
* a textbox (edit-text widget) to enter the search phrase
* a helper function `myFilter` to create the filter from selected field and enetered phrase as `[all[tiddlers]!is[system]regexp:$(sfield)$[\b$(sterm)$\b]]` which means
** to select all tiddlers not systtem tiddler `all[tiddlers]!is[system]`
** search using in selected field`regexp:$(sfield)$`
** find exact phrase using word boundary `\b` as `[\b$(sterm)$\b]`
* all variables are created using macros and `$vars` widget
<<alert info "''Note'': For learning purpose, macro displays the constructed filter.">>
<<code-link exmp101/macro>>
!! Example
This is an example show how `exact-search` works. For example search for //12// or //1// or //Core Images// and compare the result with standard search in tiddlywiki.
<$macrocall $name="wikitext-example-without-html"
src="""<<exact-search>>"""/>
;Remarks
: the `literal` flag in [[search operator|https://tiddlywiki.com/prerelease/#search%20Operator]] does not work here, e.g `search:title:literal[]` which looks for exact matches cannot distinguish 1 in 1 and 312.
;More information
:[[search operator|https://tiddlywiki.com/prerelease/#search%20Operator]]
:[[regexp operator|https://tiddlywiki.com/prerelease/#regexp%20Operator]]
base-font-size:14px
base-line-height:1.5em
base-font-weight:400
base-font-color:green
!! Sort tiddlers in tag pill
The below macro is developed to sort tagged tiddlers in tag pill. It actually populates the list field of the mainTag tiddler and then sort them.
!! Syntax
```
<<sort-tagging mainTag, label:"Sort Tagged Tiddlers", order:"ascend">>
```
Source: [[exmp046/macro]]
!! Content and attributes
|!Attributes |!Type |!Description |
|mainTag |required|the title of base tiddler or main tag other tiddlers tagged with|
|label |optional|the button label, default value is "Sort Tagged Tiddlers"|
|order |optional|the sort order (ascending, or descending), default is "ascend"|
;Note
:If the `order` parameter is not `ascend`, then the macro will sort descending, no matter what is passed.
!! Example i
Sort the tiddlers tagged with <<tag exmp046>> in ''ascending'' order
<<<
<$macrocall $name="wikitext-example-without-html"
src="""<<sort-tagging mainTag:"exmp046">>
"""/>
List field of [[exmp046]]: {{exmp046!!list}}
<<<
!! Example ii
Sort the tiddlers tagged with <<tag exmp046>> in ''descending'' order
<<<
<$macrocall $name="wikitext-example-without-html"
src="""<<sort-tagging mainTag:"exmp046" label:"Sort in descending order" order:"descend">>
"""/>
List field of [[exmp046]]: {{exmp046!!list}}
<<<
This tiddler gets its custom styles by tag. See [[stylesheet/exmp010]].
The word `Experimental` is added to the end of tiddler title.
Every tiddler has `period` as tag will get this style.
For more information see also [[Custom styles by tag in Tiddlywiki.com|https://tiddlywiki.com/#Custom%20styles%20by%20data-tags]]
<<alert danger "''Danger'': The real title of this tiddler is ''{{!!title}}''. So be very careful of using these kind solutions.">>
\define stuff(myvar mylist)
I saw $myvar$. Then <br/>
<$list filter="[enlist[$mylist$]]">
<$view field="title"/><br/>
</$list>
\end
The below macro can accept variable number of args using `mylist`.
```
\define stuff(myvar mylist)
I saw $myvar$. Then <br/>
<$list filter="[enlist[$mylist$]]">
<$view field="title"/><br/>
</$list>
\end
```
<$macrocall $name="wikitext-example-without-html"
src="""<<stuff "Rose" "aa bb cc">>"""/>
And
<$macrocall $name="wikitext-example-without-html"
src="""<<stuff "Rose" "aa bb cc dd ee">>"""/>
* Example 1
An embeded text document
```
<embed src="myfile.txt">
<embed src="myfile.txt" type="text/plain">
<embed src="myfile.txt" type="text/plain" height="50px" width="100%">
```
><div style="height:60px;background-color:beige;">
<embed src="examples/myfile.txt">
</div>
* Example 2
An embeded video document. To embed a video use Html5 `video` tag
<$macrocall $name="wikitext-example-without-html"
src="""<div style="text-align:center;">
<video controls width="320">
<source src="examples/SampleVideo_1280x720_1mb.mp4"
type="video/mp4">
Sorry, your browser doesn't support embedded videos.
</video>
</div>
"""/>
<<alert info "To center video, use `text-align:center;` CSS">>
%% reverse a list
reverse([], L) -> L;
reverse([H|T], L) -> reverse(T, [H|L]).
[data-tags ~="erlang_code"] .tc-tiddler-body { display:none; }
<$list filter="[is[current]tag[erlang_code]]">
<button>Compile</button>
<pre>{{!!text}}</pre>
</$list>
\define if-sidebar-visible(text)
<$reveal state="$:/state/sidebar" type="nomatch" text="yes" default="yes">
$text$
</$reveal>
\end
\define if-sidebar-not-visible(text)
<$reveal state="$:/state/sidebar" type="nomatch" text="no" default="yes">
$text$
</$reveal>
\end
\rules only filteredtranscludeinline transcludeinline macrocallinline macrocallblock
html body.tc-body {
background: <<if-sidebar-visible "green">><<if-sidebar-not-visible "blue">>;
}
/*To see this in action add the `$:/tags/Stylesheet` to this tiddler
and then hide/show the sidebar to see how background color changes.
*/
To embed a video use html5 `video` tag. For description see [[Html Video element|https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video]]
* Example
Here the video file is stored in a local folder.
<$macrocall $name="wikitext-example-without-html"
src="""<div style="text-align:center;">
<video controls width="480">
<source src="examples/SampleVideo_1280x720_1mb.mp4"
type="video/mp4">
Sorry, your browser doesn't support embedded videos.
</video>
</div>
"""/>
''Note'': "To center video, use `text-align:center;` CSS".
\define mac20() [search:title[example]]
This is an example shows the application of `subfilter`. Here a macro reuturns a filter step.
```
\define mac20() [search:title[example]]
```
Then in a list widget it is used with another filter as below
<$macrocall $name="wikitext-example-without-html"
src="""><$list filter="[subfilter<mac20>] +[tag[exmp016]]">
</$list>
"""/>
\define mytiddlerslist(myfield)
<$list filter="[has[$myfield$]tags[]]"><$view field=title/> </$list>
\end
A macro as below is used to return all tiddlers having `myfiled`.
```
\define mytiddlerslist(myfield)
<$list filter="[has[$myfield$]tags[]]"><$view field=title/> </$list>
\end
```
Then the maco is called inside a `$wikify` widget and its result is passed to a `$list` widget.
!! Working example
Here all tiddlers having `responder` field are listed inside macro and then the output is passed to another list to show the tiddler tags using a custom template.
<$macrocall $name="wikitext-example-without-html"
src="""<div class="dynamic-table">
<$wikify name="mytiddlers" text=<<mytiddlerslist responder>>>
<$list filter=<<mytiddlers>> >
<span class="ditem">
<$transclude tiddler="$:/core/ui/TagTemplate"/>
</span>
</$list>
</$wikify>
</div>
"""/>
!! Variable column method
A fancy css here is used to display the results of above code [[See tiddlywiki.com |https://tiddlywiki.com/#Formatting%20List%20Results%20as%20Tables%20with%20CSS%20-%20Variable%20Column%20Method]].
<<wikitext-example-without-html
src:"""<style>
.dynamic-table {
max-width:700px; /* could transclude tiddler width instead */
-ms-box-orient: vertical;
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -moz-flex;
display: -webkit-flex;
display: inline-flex;
-webkit-flex-wrap: wrap;
flex-wrap: wrap;
flex-direction: row;
}
.ditem {
max-width:160px; min-width:160px;
flex: 0 0 2em; /* -grow, -shrink, -basis */
}
""">>
/*
This example shows the timeline in Recent Tab in sidebar can be customized using css.
Here the color of timeline changed to some kind of green!
*/
.tc-sidebar-lists .tc-timeline {
color:#708807;
}
These are examples show how the last modified tiddlers can be listed.
!! Sample 1
List the five last modified / created tiddlers tagged with `solution`.
<$macrocall $name="wikitext-example-without-html"
src="""<<list-links "[has[modified]!sort[modified]limit[5]]" type:"ol">>
"""/>
!! Sample 2
List the ten last modified / created //non-system// tiddlers.
<$macrocall $name="wikitext-example-without-html"
src="""<<list-links "[has[modified]!is[system]!sort[modified]limit[5]]" type:"ol">>
"""/>
* Remarks
> `!is[system]` excludes system tiddlers
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>An HTML page</title>
</head>
<body>
<h1>An HTML page</h1>
<p>This is an HTML page.</p>
</body>
</html>
\define myproject(mtag, msort:"modified", title:"My Project")
<$navigator story="$:/StoryList" history="$:/HistoryList">
<$button class="tc-btn-invisible tc-tiddlylink">
{{$:/core/images/folder}} $title$
<$action-sendmessage $message="tm-close-all-tiddlers" />
<$list filter="[tag<__mtag__>!sort<__msort__>]">
<$action-navigate $to=<<currentTiddler>>/>
</$list>
</$button>
</$navigator>
\end
This example opens all tiddlers tagged with `batch` by simply clicking the below button.
<<myproject mtag:"batch" title:"Open all Tiddlers with tag ''batch''" msort:"title">>
\define myMac(x,y)
<$importvariables filter="[tag[mycode]]">
<<smac1 """$x$""">> <<smac2 """$y$""">>
</$importvariables>
\end
\define smac1(a) This is $a$
\define smac2(b) and she lives in $b$.
<pre><$view/></pre>
\define date-str(date)
<$list filter="[[$date$]splitbefore[-]]" variable=x >
<$list filter="[[$date$]removeprefix<x>splitbefore[-]removesuffix[-]]" variable=m>
<$list filter="[[exmp037/data/months]getindex<m>]" variable="mname">
<$list filter="[[$date$]splitbefore[-]removesuffix[-]]" variable=y >
<$list filter="[[$date$]removeprefix<x>removeprefix<m>removeprefix[-]]" variable=d >
<<mname>> <<d>>, <<y>>
</$list>
</$list>
</$list>
</$list>
</$list>
\end
><$macrocall $name="wikitext-example-without-html"
src="""<<date-str "2019-01-31">>"""/>
\define mac-xx() This is another macro in [[Example 43: Macro Overloading]].
<<mac-yy>>
\define tagsort(mainTag, label:"Sort Tags", order:"ascend")
<$button>$label$
<$reveal type="match" default="ascend" text=<<__order__>> >
<$action-listops $tiddler=<<__mainTag__>> $filter="[tag<__mainTag__>sortan[]]"/>
</$reveal>
<$reveal type="nomatch" default="ascend" text=<<__order__>> >
<$action-listops $tiddler=<<__mainTag__>> $filter="[tag<__mainTag__>!sortan[]]"/>
</$reveal>
</$button>
\end
\define sortTagWizard()
<$edit-text
tiddler="$:/temp/sort-tag-tiddlers"
field="sortTag"
tag="input"
default=""
placeholder="select tag to sort"
focusPopup=<<qualify "$:/state/popup/sort-tag-tiddlers">>
class="tc-popup-handle"/>
<$button
popup=<<qualify "$:/state/popup/sort-tag-tiddlers">>
class="tc-btn-invisible tc-btn-dropdown"
tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}}
aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>
{{$:/core/images/down-arrow}}</$button>
<$reveal state="$:/temp/sort-tag-tiddlers!!sortTag" type="nomatch" text="">
<$button class="tc-btn-invisible tc-btn-dropdown">
<$action-deletetiddler $tiddler="$:/temp/sort-tag-tiddlers"/>
{{$:/core/images/close-button}}
</$button>
</$reveal>
<$reveal state="$:/temp/sort-tag-tiddlers!!sortTag" type="nomatch" text="">
<$macrocall $name="tagsort" mainTag={{$:/temp/sort-tag-tiddlers!!sortTag}} label="Sort {{$:/temp/sort-tag-tiddlers!!sortTag}} tag"/>
</$reveal>
<div class="tc-block-dropdown-wrapper">
<$reveal
state=<<qualify "$:/state/popup/sort-tag-tiddlers">>
type="nomatch"
text=""
default="">
<div class="tc-block-dropdown">
<$linkcatcher to="$:/temp/sort-tag-tiddlers!!sortTag">
<$list filter="[tags[]search:title{$:/temp/sort-tag-tiddlers!!sortTag}sort[]]">
{{||$:/core/ui/Components/tag-link}}
</$list>
</$linkcatcher>
</div>
</$reveal>
</div>
\end
!! Example
The macros in this tiddler implement a mechanism to select a tag and sort tiddlers tagged with it. Edit the tiddler to see the code behind this tool.
> <<sortTagWizard>>
!! More information
See [[Sort Tag Wizard]] for description of code and its mechanism. Similar and yet more efficient tool has been developed in <<tag exmp047>>
As another example for [[Count items within a Field]] the below code shows the number of items in field `keywords` to the number of items in the field `foo`
<$macrocall $name="wikitext-example-without-html"
src="""><$count filter="[list[!!keywords]]" /> / <$count filter="[list[!!foo]]" />
"""/>
If you want to use the code with a tiddler its title comes from a variable, one solution is to use the `tiddler` widget, so you can use the below code. This code counts the number of items `foo` and `notes` in a tiddler its title comes from variable `ckl_state` and displayes as `a/b`.
```
\define ckl_state() $(currentTiddler)$_state
<$tiddler tiddler=<<ckl_state>>>
<$count filter="[list[!!keywords]]" /> / <$count filter="[list[!!foo]]" />
</$tiddler>
```
Ref: [[FrD|https://groups.google.com/d/msg/tiddlywiki/OQt4ddlf02Q/tK8tPpadBgAJ]]
\define newTitle() myTiddler-{{{[[0]add[$(inc)$]addprefix[0000]split[]last[3]join[]]}}}
\define newTiddler(n:0)
<$set name="inc" value={{{ [<__n__>add[1]] }}}>
<$wikify name="myTitle" text="<<newTitle>>" >
<$list filter="[<myTitle>] +[!has[title]]"
emptyMessage=""" <$macrocall $name="newTiddler" n=<<inc>> /> """>
<$action-createtiddler $basetitle=<<myTitle>> tags="myTag" />
</$list>
</$wikify>
</$set>
\end
!! Zero padded sequence number
This example demonstrate how the second and third solutions of [[Create Tiddler with Sequence Number]] works. A macro called `newTitle` creates a zero padded number as below.
```
\define newTitle() myTiddler-{{{[[0]add[$(inc)$]addprefix[0000]split[]last[3]join[]]}}}
```
This code also prevent any overwritting previous tiddlers, i.e if some tiddlers with lower sequence number are deleted, the first free sequence number is selected.
To see the details edit this tiddler and look at the code. Here is a button to create new tiddler
<$button actions=<<newTiddler>>>
Create a new tiddler
</$button>
\define mc2()
This is a `code` and __underline__.
\end
\define mc()
\rules only
This is a `code` and __underline__.
\end
Consider the below two macros. They are fed to `wikify` widget. The second macro has `\rules only` pragma. This prevents the parser from kicking in in this macro block and it works. The second example does not work. See the output and compare with expected output. For more information hae a look at: [[Wkify Widget and Macro Variable]]
```
\define mc2()
This is a `code` and __underline__.
\end
\define mc()
\rules only
This is a `code` and __underline__.
\end
```
<$macrocall $name="wikitext-example-without-html"
src="""
>Example 1: <$wikify name="result" text=<<mc>>>
<<result>>
</$wikify>
>Example 2: <$wikify name="result" text=<<mc2>>>
<<result>>
</$wikify>
"""/>
\define variable-test(var)
<$list filter="[[$var$]] +[is[variable]]" emptyMessage="''$var$'' - //Undefined variable or macro//">
''$var$'' - Existed variable or macro
</$list>
\end
This example shows solution ii in [[Check if Macro or Variable Exists]] to check the existence of a macro variable.
```
\define variable-test(var)
<$list filter="[[$var$]] +[is[variable]]" emptyMessage="''$var$'' - //Undefined variable or macro//">
''$var$'' - Existed variable or macro
</$list>
\end
```
<$macrocall $name="wikitext-example-without-html"
src="""
# <<variable-test list-links>>
# <<variable-test list-linkss>>
"""/>
\define gt(a, b) $a$ $b$ +[nsort[]last[1]remove[$b$]]
\define lt(a, b) $a$ $b$ +[nsort[]first[1]remove[$b$]]
\define exmp-gt()
<$list filter=<<gt $(x)$ 5>> variable="result">
<<result>>
</$list>
\end
\define exmp-lt()
<$list filter=<<lt $(x)$ 5>> variable="result">
<<result>>
</$list>
\end
!! Simple example
<<<
This example shows how greater and less than filter works.
<$macrocall $name="wikitext-example-without-html"
src="""<$list filter=<<gt 5 3>> variable="x" >
<<x>>
</$list>
<$list filter=<<lt 3 9>> variable="x" >
<<x>>
</$list>
"""/>
<<<
!! Another example
<<<
Here two example macros have been developed to demonstrate how a variable can be compared to a constant.
<$macrocall $name="wikitext-example-without-html"
src="""<$list filter="2 8 5 7 6 3 9" variable="x">
<<exmp-gt>>
</$list>
<$list filter="2 8 5 7 6 3 9" variable="x">
<<exmp-lt>>
</$list>
"""/>
<<<
\define is-thisTid-newer(TidA, TidB)
<$set name="tidAMod" value={{{ [[$TidA$]get[modified]] }}}>
<$set name="tidBMod" value={{{ [[$TidB$]get[modified]] }}}>
<$list filter="[<tidAMod>] [<tidBMod>] +[nsort[]last[1]removesuffix<tidAMod>]">
Yes, ''$TidA$'' is newer
</$list>
<$list filter="[<tidAMod>] [<tidBMod>] +[nsort[]last[1]removesuffix<tidBMod>]">
No, ''$TidA$'' is older
</$list>
</$set>
</$set>
\end
This example shows how `is-thisTid-newer` works. Edit the two tiddlers
* [[demo/exmp054/tid01]]
* [[demo/exmp054/tid02]]
to see how result changes.
<$macrocall $name="wikitext-example-without-html"
src="""> <<is-thisTid-newer demo/exmp054/tid01 demo/exmp054/tid02>>
"""/>
This example shows how a doubly sort table can be created using a nested `$list` widgets.
There is a list of tiddlers contains book data tagged with //ebook//! the below table shows the books bibliography data
* sorted first in vendor name, and
* second, sorted in author name
<$macrocall $name="wikitext-example-without-html"
src="""><table>
<$list filter="[tag[ebook]has[vendor]each[vendor]get[vendor]sort[]]" variable="publisherName">
<$list filter="[tag[ebook]has[vendor]field:vendor<publisherName>sort[author]]" variable="bookName">
<tr>
<td>
<$link to=<<bookName>>><$text text={{{[<bookName>get[title]removeprefix[demo/exmp057/]]}}}/></$link>
</td>
<td>
<$view tiddler=<<bookName>> field='author'/>
</td>
<td>
<$view tiddler=<<bookName>> field='vendor'/>
</td>
</tr>
</$list>
</$list>
</table>
"""/>
;Remark
: The below `$text` widget gets the tiddler name and remove the `demo/exmp057` prefix. This is because the tiddlers name in this wiki has a special prefixes to show they are part of certain example.
```
<$link to=<<bookName>> >
<$text text={{{[<bookName>get[title]removeprefix[demo/exmp057/]]}}}/>
</$link>
```
<div class="ml-list">
Here's my take on examples plus a little bit of re-arranging and editing of Jeremy's descriptions
# <div>
If the "tiddler" attribute is present, get the text of the tiddler, or the value of the "emptyValue" attribute if the text field is blank or missing
```
<$set name="myvar" tiddler="SomeTiddler" emptyValue="sometext">
```
</div>
##<div>
If the "subtiddler" attribute is present, get the text of the subtiddler from the specified tiddler, or the value of the "emptyValue" attribute if the subtiddler text is blank or missing
```
<$set name="myvar" tiddler="SomeTiddler" subtiddler="SomeSubTiddler" emptyValue="sometext">`
```
</div>
##<div>
If the "field" attribute is present, get the value of that field, or the value of the "emptyValue" attribute if the field is blank or missing
```
<$set name="myvar" tiddler="SomeTiddler" field="somefield" emptyValue="sometext">
```
</div>
##<div>
If the "index" attribute is present, get the value of the specified index, or the value of the "emptyValue" attribute if the index is blank or missing
```
<$set name="myvar" tiddler="SomeTiddler" index="somefield" emptyValue="sometext">
```
</div>
#<div>
If the "filter" attribute is present and not blank, return the entire filter results using double square brackets quoting around any results that include spaces
```
<$set name="myvar" filter="[somefilter[]]">
```
</div>
##<div>
If both the "filter" attribute and the "value" attribute are present and the filter results are not empty, return the value of the "value" attribute, otherwise return blank
```
<$set name="myvar" filter="[somefilter[]]" value="somevalue">
```
</div>
##<div>
If both the "filter" attribute and the "emptyValue" attribute are present, return the entire filter results using double square brackets quoting around any results that include spaces, or the value of the "emptyValue" attribute if the result is empty
```
<$set name="myvar" filter="[somefilter[]]" emptyValue="sometext">
```
</div>
##<div>
If the "filter" attribute, the "value" attribute, and the "emptyValue" attribute are present, return the value of the "value" attribute, or the value of the "emptyValue" attribute if the result is empty
```
<$set name="myvar" filter="[somefilter[]]" value="somevalue" emptyValue="sometext">
```
</div>
##<div>
If both the "filter" attribute and the "select" attribute are present and the "select" attribute is a valid number "N", return the "Nth" result from the filter
```
<$set name="myvar" filter="[somefilter[]]" select="3">
```
</div>
#<div>
If neither the "tiddler" or "filter" attributes are provided, return the value of the "value" attribute, or the value of the "emptyValue" attribute if the "value" attribute is blank or missing
```
<$set name="myvar" value="somevalue" emptyValue="sometext">
```
</div>
This tiddler shows demo for <<tag exmp060>>, in which ''tabs'' macro is used to display the content of tiddlers they have reference to fields or `currentTiddler` variavle
* ''Works'' by using template
Here a template [[exmp060/template]] is used here to solve the issue of `{{!!field-name}}` referencing (transclusion).
<$macrocall $name="wikitext-example-without-html"
src="""><<tabs "[search:title[exmp060/data]]" template:"exmp060/template">>
"""/>
*''Does not work'', if template is not used
<$macrocall $name="wikitext-example-without-html"
src="""><<tabs "[search:title[exmp060/data]]">>
"""/>
<<alert warning "Note to the value of fields and `currentTiddler` displayed in the above examples.">>
\define pastille(tagName)
<svg width="14" height="14" >
<circle cx="7" cy="7" r="6" stroke="grey" fill={{$tagName$!!color}}/>
</svg>
\end
\define circle(color)
<svg width="14" height="14" >
<circle cx="7" cy="7" r="6" stroke="grey" fill=<<__color__>>/>
</svg>
\end
\define label(color:grey)
<svg width="30" height="8" >
<rect x="0" y="0" width="30" height="8" rx="4" fill="$color$" />
</svg>
\end
!! Example i
<<<
Sample example shows a macro create a svg where color is given to macro parameter.
```
\define pastille(tagName)
<svg width="14" height="14" >
<circle cx="7" cy="7" r="6" stroke="grey" fill={{$tagName$!!color}}/>
</svg>
\end
```
; Demo
<$macrocall $name="wikitext-example-without-html"
src="""<<pastille "Example 61: Pastille Macro">>
"""/>
<<<
!! Example ii
<<<
The circle macro is a simple form of pastille macro as below
```
\define circle(color)
<svg width="14" height="14" >
<circle cx="7" cy="7" r="6" stroke="grey" fill=<<__color__>>/>
</svg>
\end
```
; Demo
<$macrocall $name="wikitext-example-without-html"
src="""<$list filter="red blue green cyan yellow orange purple " variable=color>
<$macrocall $name="circle" color=<<color>> />
</$list>
"""/>
<<<
!! Example iii
<<<
This example create colorful rectangle like Trello label.
```
\define label(color:grey)
<svg width="30" height="8" >
<rect x="0" y="0" width="30" height="8" rx="4" fill="$color$" />
</svg>
\end
```
; Demo
<$macrocall $name="wikitext-example-without-html"
src="""<$list filter="limegreen yellow orange red pink turquoise dodgerblue" variable=color>
<$macrocall $name="label" color=<<color>> />
</$list>
"""/>
<<<
This is a demo shows how [[Show a Summary on Tiddler]] can be implemented.
The example uses a viewtemplate tiddler [[$:/.tb/ui/ViewTemplate/summary]]
The below example shows how `mycls` CSS class is generated using dynamic stylesheet.
The `mycls` is generated dynamically from several other tiddlers has CSS in [[exmp064/stylesheet]].
The [[exmp064/stylesheet]] is tagged with `$:/tags/Stylesheet` and so it is applied as a CSS stylesheet by Tiddlywiki.
<$macrocall $name="wikitext-example-without-html"
src="""<div class="mycls">
This is a DEMO!
</div>
"""/>
!!Remarks
The below tiddlers are used to create this demo
<<list-links "[tag[exmp064]!<currentTiddler>]" type:ol>>
\define switch_simple(item, list:"a b c")
<$list filter="[enlist<__list__>search<__item__>]" emptyMessage="""No $item$ in: $list$""">
You passed <<currentTiddler>>
</$list>
\end
\define a() This is the action for a.
\define b() This is action for b.
\define c() This is action for c.
\define default() This is default action.
\define switch_advanced(item, list:"a b c")
<$list filter="[enlist<__list__>search<__item__>]" emptyMessage=<<default>> variable="actMacro">
<$macrocall $name=<<actMacro>> />
</$list>
\end
<pre><$view/></pre>
!! Example i
<<<
<<switch_simple a>>
<<switch_simple b>>
<<switch_simple cd>>
<<<
!! Example ii
<<<
<<switch_advanced a>>
<<switch_advanced b>>
<<switch_advanced d>>
<<<
For description of code see [[Switch Case Construct]]
Example using `numb` macro
* ''Exmp 01''
<$macrocall $name="wikitext-example-without-html"
src="""> <$list filter="[list[MyNumberTiddler]limit[5]]" variable="myVar">
<<myVar>>
</$list>
"""/>
* ''Exmp 02''
<$macrocall $name="wikitext-example-without-html"
src="""><$list filter="[list[MyNumberTiddler]limit[8]]">
do something <br>
</$list>
"""/>
<<alert info "In TW 5.1.18 forward, you can use `range` operator to do this kind of operation efficiently.">>
\define add-index(index, value, dataTid)
<$button> Add index/value
<$action-setfield $tiddler="$dataTid$" $index="$index$" $value="$value$"/>
</$button>
\end
\define remove-index(index, dataTid)
<$button> Remove index/value
<$action-setfield $tiddler="$dataTid$" $index="$index$" />
</$button>
\end
;How to add/remove DataTiddler properties (index/value pairs) using Tiddlywiki script?
: See [[Add Remove DataTiddler Index/Value Pairs]] for detailed explanation.
For demonstration here we use two macros as below
<<<
```
\define add-index(index, value, dataTid)
<$button> Add index/value
<$action-setfield $tiddler="$dataTid$" $index="$index$" $value="$value$"/>
</$button>
\end
\define remove-index(index, dataTid)
<$button> Remove index/value
<$action-setfield $tiddler="$dataTid$" $index="$index$" />
</$button>
\end
```
<<<
!! Example: Add new index/value
<<<
The below example adds a new index/value pair (`GIF: Graphics Interchange Format`) to [[exmp040/acronyms/image]] DataTiddler.
<$macrocall $name="wikitext-example-without-html"
src="""<<add-index index:"GIF" value:"Graphics Interchange Format" dataTid:"exmp040/acronyms/image">>
"""/>
<<<
!! Example: Remove an index/value pair
<<<
The below example removes the index/value pair (`GIF: Graphics Interchange Format`) from [[exmp040/acronyms/image]] DataTiddler.
<$macrocall $name="wikitext-example-without-html"
src="""<<remove-index index:"GIF" value:"Graphics Interchange Format" dataTid:"exmp040/acronyms/image">>
"""/>
<<<
!! Demo DataTiddler
<<<
The below DataTiddler is used here for demonstration.
The [[exmp040/acronyms/image]] DataTiddler is used here:
{{exmp040/acronyms/image}}
<<<
More information at: [[Eric Shulman|https://groups.google.com/d/msg/tiddlywiki/ud_zV7Ss_bY/9SUCv4p2AgAJ]]
<<alert warning "''NOTE'': This seems does not work in 5.1.20+">>
; How to exclude some tiddlers tagged with say `ignored` from table of content when using `toc-selective-expandable`?
This is the toc-selective-expandable code:
```
\define toc-selective-expandable(tag,sort:"",itemClassFilter,exclude,path)
<$vars tag="""$tag$""" sort="""$sort$""" itemClassFilter="""$itemClassFilter$""" excluded="""$exclude$ -[[$tag$]]""" path="""$path$/$tag$""">
<ol class="tc-toc toc-selective-expandable">
<$list filter="""[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$] -[[$tag$]] $exclude$""">
<$list filter="[all[current]toc-link[no]]" variable="ignore" emptyMessage=<<toc-selective-expandable-empty-message>> >
<$macrocall $name=toc-unlinked-selective-expandable-body tag="""$tag$""" sort="""$sort$""" itemClassFilter="""$itemClassFilter$""" exclude=<<excluded>> path=<<path>> >
</$list>
</$list>
</ol>
</$vars>
\end
```
As you can see the macro accepts an `exclude` attribute
This is the filter where your ''exclude'' filter would be used:
```
<$list filter="""[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$] -[[$tag$]] $exclude$""">
```
!! Example
* Exclude tiddler tagged with `ignored`
<<<
If you want to exclude - say - all tiddlers tagged `ignored` you pass
`exclude:"-[tag[ignored]]"`
<<<
* Exclude all tiddlers has a field named `blue`
<<<
If you want to exclude all tiddlers with the field `blue`
`exclude:"-[has:field[blue]]"`
<<<
<<alert danger """
''Important note'': Every term in the exclude filter MUST be a `negated` term (with the `-` prefix) or it will CAUSE infinite recursion. For example, if you write `exclude="[tag[Foo]]"` instead of `exclude="-[tag[Foo]]"`, then all tiddlers tagged "Foo" will be treated as matching tiddlers at *every* level of the tree and the code will recurse until the browser crashes.
""">>
;How to add Javascript code to Tiddlywiki and execute on wiki startup?
# added `<script> ... </script>` around your code
# tag the tiddler with `$:/tags/RawMarkup`
# save-and-reload your document
* What this does is to add the content of the tagged tiddler to the bottom of the `<head>` section of the document.
* This allows your JS code to be invoked as soon as the document is loaded, even before the TWCore wiki is initialized
For more information see
* [[SystemTag: $:/tags/RawMarkup|https://tiddlywiki.com/#SystemTag%3A%20%24%3A%2Ftags%2FRawMarkup]]
* Example of
This is a sample tiddler. It is part of Example 08.
* One
* Two
*Three
A paragraph of text.
\define key(key1,key2,key3)
\whitespace trim
<kbd>$key1$</kbd>
<$reveal text="$key2$" type="nomatch" default="">+<kbd>$key2$</kbd></$reveal>
<$reveal text="$key3$" type="nomatch" default="">+<kbd>$key3$</kbd></$reveal>
\end
[[P01|Exmp015-P01]]: This is part of example 15.
[[P02|Exmp015-P02]]: This is also another part of example 15.
This is part of Example 2. Note the tiddler has no spaces in its title.
See: [[Make a List of Buttons]]
This is part of Example 2. Note the tiddler has ''no space'' in its title.
See: [[Make a List of Buttons]]
This is part of Example 2. Note the tiddler has ''spaces'' in its title.
See: [[Make a List of Buttons]]
\define add-remove-tags(tiddler, oldTag, newTag)
<$button> Add ''$newTag$'' tag and Remove ''$oldTag$'' tag
<$action-listops $tiddler="$tiddler$" $field="tags" $subfilter="[[$newTag$]]" />
<$action-listops $tiddler="$tiddler$" $field="tags" $subfilter="-[[$oldTag$]]" />
</$button>
\end
\define myactions()
<$tiddler tiddler=<<__tiddler__>> >
<$fieldmangler>
<$action-sendmessage $message="tm-add-tag" $param=<<__newTag__>> />
<$action-sendmessage $message="tm-remove-tag" $param=<<__oldTag__>> />
</$fieldmangler>
</$tiddler>
\end
\define add-remove-tags(tiddler, oldTag, newTag)
Add <<tag $newTag$>> Remove <<tag $oldTag$>>
<$button actions=<<myactions>> >
{{$:/core/images/erase}}
</$button>
\end
This is a sample tiddler used for demo of search operator.
Contents of `people` filed: ''{{!!people}}''
See: [[Search in Field]]
This is a sample tiddler used for demo of search operator.
Contents of `people` filed: ''{{!!people}}''
See: [[Search in Field]]
01: Jan
02: Feb
03: Mar
04: Apr
05: May
06: Jun
07: Jul
08: Aug
09: Sep
10: Oct
11: Nov
12: Dec
ACL: Access control list
ANSI: American National Standards Institute
CLI: Command line interpreter
CPU: Central processing Unit
CRT: Cathode Ray Tube
DHCP: Dynamic Host Configuration Protocol
DNS: Domain Name System
FTP: File Transfer Protocol
HTTP: HyperText Transfer Protocol
HTTPS: HyperText Transfer Protocol Secure
IP: Internet Protocol
ISDN: Integrated Services Digital Network
ISP: Internet service provider
LAN: Local area network
MAC: Media access control
PPP: Point-to-point Protocol
RAM: Random Access Memory
SSID: Service set identifier
UDP: User Datagram Protocol
WWW: World Wide Web
one: i
two: ii
three: iii
four: iv
five: v
six: vi
seven: vii
eight: viii
nine: ix
ten: x
PNG: Portable Network Graphics
TIFF: Tagged Image File Format
JPEG: Joint Photographic Experts Group
{
"GIF": "Graphics Interchange Format"
}
USA: 840
GBR: 826
DEU: Not set
GBR: 826
DEU: 276
GRD: 308
IRN: 364
FRA: 250
\define mac-xx()
This is mac-xx in [[exmp043/macro/overloading]].
\end
\define mac-yy()
This is "mac-yy" in [[exmp043/macro/overloading]].
This calls "mac-xx".<br>
<<mac-xx>>
\end
{
"father": "a male parent",
"mother": "a woman who has given birth to a child ",
"carcinogen": "any substance that produces cancer",
"xian": "a city of central China; capital of ancient Chinese empire 221-206 BC"
}
\define sort-tagging(mainTag, label:"Sort Tagged Tiddlers", order:"ascend")
<$button>$label$
<$reveal type="match" default="ascend" text=<<__order__>> >
<$action-listops $tiddler=<<__mainTag__>> $filter="[tag<__mainTag__>sortan[]]"/>
</$reveal>
<$reveal type="nomatch" default="ascend" text=<<__order__>> >
<$action-listops $tiddler=<<__mainTag__>> $filter="[tag<__mainTag__>!sortan[]]"/>
</$reveal>
</$button>
\end
This is a sample tiddler!
!!Do Not Delete
This is part of <<tag exmp055>>
!! Another test
This is another sample tiddler!
```
Sample code block.
```
!!Do Not Delete
This is part of <<tag exmp055>>
This text pulls its content from caption and title fields of this tiddler:
* Tiddler title: //{{!!title}}//
* Tiddler caption: //{{!!caption}}//
This text pulls its content from caption and title fields of this tiddler:
* Tiddler title: //{{!!title}}//
* Tiddler caption: //{{!!caption}}//
<$tiddler tiddler=<<currentTab>>>
<$transclude mode="block" />
</$tiddler>
This is part of <<tag exmp063>> dont delete!
This is part of <<tag exmp063>> dont delete!
This is part of <<tag exmp063>> dont delete!
.mycls{
font-size: 16px;
text-align: center;
}
.mycls{
line-height:1em;
}
/* This stylesheet tiddler is generated conditionally! It populate all tiddlers tagged with exmp064
and exclude the current tiddler and 'Example 64: Demo'. More sophisticated filters can be used*/
<$list filter="[tag[exmp064]!tag[solution]!<currentTiddler>!title[Example 64: Demo]]">
<$transclude/>
</$list>
Part of <<tag exmp065>> Do not delete
Part of <<tag exmp065>> Do not delete
Part of <<tag exmp065>> Do not delete
This is part of <<tag exmp066>> do not delete it
\define switch()
<$action-setfield $tiddler="exmp067/data" $field="fa" $value={{exmp067/state}} />
<$action-setfield $tiddler="exmp067/data" $field="fb" $value="$(Temp)$" />
\end
<$set name=Temp tiddler="exmp067/data" field="fa">
Select a value
<$select tiddler='exmp067/state'
actions=<<switch>>
>
<$list filter='One Two Three Four Five'>
<option><$view field='title'/></option>
</$list>
</$select>
</$set>
\define deleteButton()
<$button>
{{$:/core/images/delete-button}}
<$action-deletetiddler $tiddler=<<currentTiddler>>/>
</$button> - <$link to=<<currentTiddler>> ><$text text=<<currentTiddler>> /></$link>
\end
!! Remove temporary tiddlers
Temporary tiddlers are `$:/temp` and `$:/state` and its good to be removed time by time to free occupied spaces.
<<<
Select tiddlers <$select field='status' tooltip='Choose a new site title'>
<option>[prefix[$:/temp/]]</option>
<option>[prefix[$:/state/]]</option>
</$select>
<$button>
<$action-deletetiddler $filter="[subfilter{!!status}]" />
Delete all: <b><$text text={{!!status}} /></b> tiddlers
</$button>
<$list filter="[subfilter{!!status}]">
<<deleteButton>><br>
</$list>
<<<
This is a sample tiddler
* One
* Two
Do not delete. See <<tag exmp071>>
Do not delete. See <<tag exmp071>>
This tiddler is part of <<tag exmp072>>. Do not delete
\define toggle-button(stateTiddler, onlabel:"On", offlabel:"off")
<$reveal type="nomatch" state=<<__stateTiddler__>> text="on">
<$button set=<<__stateTiddler__>> setTo="on">$onlabel$</$button>
</$reveal>
<$reveal type="match" state=<<__stateTiddler__>> text="on">
<$button set=<<__stateTiddler__>> setTo="off">$offlabel$</$button>
</$reveal>
\end
This is a demo to show how <<tag exmp081>> works. It displays all fields have specific prefix `my` and their values in the current tiddler.
<$macrocall $name="wikitext-example-without-html"
src="""<$list filter="[all[current]fields[]prefix[my]]" variable="field">
<$list filter="[all[current]get<field>]" variable="value">
<b><<field>></b> : <<value>> <br/>
</$list>
</$list>
"""/>
\import [[exmp082/macro]]
The below example demonstrate the use of `doc-svg` macro. A fille color of `red` has been sent and the image tiddler `$:/core/images/delete-button` has been sent as svg icon.
<$macrocall $name="wikitext-example-without-html"
src="""This is a delete icon <<doc-svg $:/core/images/delete-button red>> Check the size!
"""/>
<<doc-svg accessible-icon red>>
\define doc-svg(tiddler:"", color:"")
<span class="kk-doc" style="fill:$color$;"><$transclude tiddler=<<__tiddler__>> /></span>
\end
<style>
.kk-doc svg{
width: 1.2em;
height: 1.2em;
vertical-align: middle;}
</style>
\define expr() ^$(counts2)$$
\define listTags(tags)
<$wikify name="counts" text=<<tagcount "$tags$">>>
<$list filter="[enlist<counts>nsort[]]" variable="counts2">
<$list filter="[enlist<__tags__>sort[]]" variable="tag">
<$list filter="[tag<tag>count[]regexp<expr>]">
<<counts2>> -- <<tag>> <br/>
</$list>
</$list>
</$list>
</$wikify>
\end
\define tagcount(tags)
<$list filter="[enlist<__tags__>]" variable="tag">
<$list filter="[tag<tag>count[]]"/>
</$list>
\end
<$set name="year" filter="[{!!test-field}split[-]nth[1]]">
<$set name="mpos" filter="[{!!test-field}split[-]nth[2]]">
<$set name="day" filter="[{!!test-field}split[-]nth[3]]">
<$set name="month" filter="Jan Feb Mar Apr May June July Aug Sep Oct Nov Dec +[nth<mpos>]">
<<month>> <<day>>, <<year>>
</$set>
</$set>
</$set>
</$set>
<$set name=selected value=7>
<$list filter="[range[1,10]]" variable="item" >
<$list filter="[range[1,10]allbefore<selected>] +[prefix<item>]">
<<currentTiddler>> is before selected item: <<selected>><br>
</$list>
<$list filter="[range[1,10]allafter<selected>] +[prefix<item>]">
<<currentTiddler>> is after selected item: <<selected>><br>
</$list>
</$list>
</$set>
<$set name="todayMonthDay" value=<<now 0MM0DD>>>
<$list filter="[all[tiddlers]]" variable="tiddler">
<$set name="monthDay" filter="[<tiddler>get[created]split[]last[13]first[4]join[]]">
<$list filter="[<monthDay>match<todayMonthDay>]">
<$link to=<<tiddler>> /><br>
</$list>
</$set>
</$list>
</$set>
Part of <<tag exmp090>> do not delete
Part of <<tag exmp090>> do not delete
This tiddler contains data for <<tag exmp091>>. Do not delete.
Sample list
<$macrocall $name="wikitext-example-without-html"
src="""<ul><li>line 1</li>
<li>line 2</li>
<li> </li>
<li>line 3</li>
<li style="something">line 4</li></ul>
"""/>
<$action-deletetiddler $tiddler="$:/temp/mywarning"/>
<!-- this script delete the temporary tiddler $:/temp/mywarning at the startup. Used for macro with dismiss alerts inline -->
mouse: 2
keyboard: 5
monitor: 8
flopy: 0
LPT-printer: 0
cabel: 6
speaker: 0
1: Technology is just a tool. In terms of getting the kids working together and motivating them, the teacher is the most important. //Bill Gates//
2: Technology is nothing. What's important is that you have a faith in people, that they're basically good and smart, and if you give them tools, they'll do wonderful things with them. //Steve Jobs//
3: Technology can be our best friend, and technology can also be the biggest party pooper of our lives. It interrupts our own story, interrupts our ability to have a thought or a daydream, to imagine something wonderful, because we're too busy bridging the walk from the cafeteria back to the office on the cell phone. //Steven Spilberg//
4: Science and technology revolutionize our lives, but memory, tradition and myth frame our response. //Arthur M. Schlesinger//
5:Science and technology are the keys to both our longevity and our demise. Our entire existence on this planet is a double-edged sword. //Rhys Darby//
6: Engineering or technology is all about using the power of science to make life better for people, to reduce cost, to improve comfort, to improve productivity, etc. //N. R. Narayana Murthy//
7: Success in creating AI would be the biggest event in human history. Unfortunately, it might also be the last, unless we learn how to avoid the risks. //Stephen Hawking//
8: Every once in a while, a new technology, an old problem, and a big idea turn into an innovation. //Dean Kamen//
9: New technology is not good or evil in and of itself. It's all about how people choose to use it.//David Wong//
10: Technological progress has merely provided us with more efficient means for going backwards. //Aldous Huxley//
11: Biology is the most powerful technology ever created. DNA is software, protein are hardware, cells are factories. //Arvind Gupta//
12: To master a new technology, you have to play with it. //Jordan Peterson//
13:It is more difficult to rule yourself than to rule a city. //Jordan Peterson//
14: No guts, no story. //Chris Brady//
15: My life is my message. //Mahatma Gandhi//
16: Screw it, let’s do it. //Richard Branson//
17: Boldness be my friend. //William Shakespeare//
18: Keep going. Be all in. //Bryan Hutchinson//
19: My life is my argument. //Albert Schweitzer//
20: Fight till the last gasp. //William Shakespeare//
21: Stay hungry. Stay foolish. //Steve Jobs//
22: You can if you think you can. //George Reeves//
23: Whatever you are, be a good one. //Abraham Lincoln//
24: The past does not equal the future. //Tony Robbins//
25: Good things happen to those who hustle. //Anaïs Nin//
26: If it matters to you, you’ll find a way. //Charlie Gilkey//
27: Forget about style; worry about results. //Bobby Orr//
28: Whatever you do, do with all your might. //Marcus Tullius Cicero//
29: It does not matter how slowly you go as long as you do not stop. //Confucius//
30: It is better to live one day as a lion, than a thousand days as a lamb. //Roman proverb//
31: Life is fragile. We’re not guaranteed a tomorrow so give it everything you’ve got. //Tim Cook//
\define SwapActiveStyle(style1,style2)
<$fieldmangler tiddler="$style1$">
<$action-sendmessage $message="tm-add-tag" $param="$:/tags/Stylesheet"/>
</$fieldmangler>
<$fieldmangler tiddler="$style2$">
<$action-sendmessage $message="tm-remove-tag" $param="$:/tags/Stylesheet"/>
</$fieldmangler>
\end
\define swapper(style1,style2)
<$vars sheet="$:/tags/Stylesheet">
<$list filter="[[$style1$]tag<sheet>]">
<$button>Switch to <$text text="""$style2$"""/>
<<SwapActiveStyle """$style2$""" """$style1$""">>
</$button>
</$list>
<$list filter="[[$style2$]tag<sheet>]">
<$button>Switch to <$text text="""$style1$"""/>
<<SwapActiveStyle """$style1$""" """$style2$""">>
</$button>
</$list>
</$vars>
\end
\define base-convertor(num,base,result:"")
<$list filter="[<__num__>remainder<__base__>add[1]]" variable=remidx>
<$list filter="[<__num__>divide<__base__>trunc[]]" variable=num>
<$list filter="[enlist<syms>nth<remidx>addsuffix<__result__>]" variable="result">
<$list filter="[<num>!regexp[^0$]]" emptyMessage=<<result>>>
<$macrocall $name=base-convertor num=<<num>> base="$base$" result=<<result>>/>
</$list>
</$list>
</$list>
</$list>
\end
\define re-base(base,num)
<$vars
syms="0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"
>
<<base-convertor $num$ $base$>>
</$vars>
\end
<pre><$view/></pre>
<<variable01>> - <<variable02>>
;Create a bookmarklet link to export all tiddlers tagged with datatiddler
*<div>
Call the `save-as-bookmarklet` with desired title and `[tag[datatiddler]]`
<$macrocall $name="wikitext-example-without-html"
src="""<<save-as-bookmarklet DataTiddler "[tag[datatiddler]]">>
"""/>
</div>
*Drag and drop the above link to bookmark bar
!! How to use
To inject the above bookmarklet tiddlers, open a new wiki and click on the new bookmark `DataTiddler`
\define save-as-bookmarklet-href()
(function() {
$tw.wiki.addTiddlers($(json-tiddlers)$);
})()
\end
\define save-as-bookmarklet(title,filter)
<$wikify name="json-tiddlers" output="text" text="""<$text text=<<jsontiddlers filter:"$filter$">>/>""">
<a href={{{ [<save-as-bookmarklet-href>encodeuricomponent[]addprefix[javascript:]] }}}><$text text=<<__title__>>/></a>
</$wikify>
\end
\define searchtid() x$:/temp/exact-search
\define selecttid() x$:/temp/select-search
\define myFilter() [all[tiddlers]!is[system]regexp:$(sfield)$[\b$(sterm)$\b]]
\define exact-search()
Search by <$select tiddler=<<selecttid>> default="title" tag="input">
<$list filter="title caption tags text created modified" variable=vfield>
<option value=<<vfield>>><<vfield>></option>
</$list>
</$select>
<$edit-text tiddler=<<searchtid>> tag="input" default="" placeholder="keywords" /><br/>
<$vars
sterm={{{[<searchtid>get[text]] }}}
sfield={{{[<selecttid>get[text]] }}} >
Filter: <span style="color:green"><$text text=<<myFilter>> /></span><br>
Number tiddlers found: <b><$count filter=<<myFilter>>/></b>
<$reveal type="nomatch" text=<<sterm>> default="" >
<$macrocall $name="list-links" filter=<<myFilter>> type=ol/>
</$reveal>
</$vars>
\end
<pre><$view/></pre>
\define standardSearch()
<$set name=searchFilter value="[all[tiddlers]!is[system]search:title,caption,text[$(searchTerms)$]]">
//<small>Standard search: <$count filter=<<searchFilter>> /> matches</small>//<br>
<$list filter=<<searchFilter>> >
<$link/><br>
</$list>
</$set>
\end
\define filterSearch()
//<small>Filter search: <$count filter=<<searchTerms>>/> matches</small>//<br><!--for debugging-->
<$list filter=<<searchTerms>> >
<$link/><br>
</$list>
\end
\define combo-search(stateTiddler:"")
<$vars pattern="^\["
stateTid={{{ [[$:/temp/combosearch/]addsuffix[$stateTiddler$]addsuffix<qualify>] }}}>
<!--UI -->
combo search <$edit-text tiddler=<<stateTid>> tag=input default="" placeholder="search by keyword or filter"/>
<!-- show results if any-->
<$reveal state=<<stateTid>> type="nomatch" text=""><!--do not display when searchbox is empty-->
<$button class="tc-btn-invisible">
<$action-setfield $tiddler=<<stateTid>> $field="text" $value=""/>
{{$:/core/images/close-button}}
</$button><br>
<$set name=searchTerms tiddler=<<stateTid>> field=text>
<$list filter="[<searchTerms>trim[]minlength[3]limit[1]]" emptyMessage="Search text too short" variable=ignore>
<!-- Check input search term -->
<div class="tc-search-results">
<$list filter="[<searchTerms>regexp<pattern>]" emptyMessage=<<standardSearch>> >
<<filterSearch>>
</$list>
</div>
</$list>
</$set>
</$reveal>
</$vars>
\end
<pre><$view/></pre>
\define show-tiddlers(fname)
<$list filter="[all[tiddlers]has[$fname$]]" emptyMessage="//No tiddler with field ''$fname$''//">
<dt><$link/></dt>
<dd>alias: <$view field="$fname$"/></dd>
</$list>
\end
<$button> Rename ''alias'' to ''aliases''
<$list filter="[all[tiddlers]has[alias]]">
<$action-setfield aliases={{!!alias}}/>
<$action-deletefield alias/>
</$list>
</$button>
!!! Tiddlers with ''alias'' field
><<show-tiddlers alias>>
!!! Tiddlers with ''aliases'' field
><<show-tiddlers aliases>>
\define linkup() [[$(first)$, $(second)$]]
<$tiddler tiddler="$:/temp/exmp106">
| First Name|<$edit-text class='tc-edit-texteditor' field='firstname_temp' placeholder='First Name' size=30/>|
| Last Name |<$edit-text class='tc-edit-texteditor' field='lastname_temp' placeholder='Last Name' size=30/>|
<$vars second={{!!lastname_temp}} first={{!!firstname_temp}}>
... you can use <<linkup>> here to refer to the combined result
</$vars>
</$tiddler>
\define getAllMatches(fieldname,fieldvalue)
<$list filter="[$fieldname$[$fieldvalue$]]">
<<currentTiddler>><br>
</$list>
\end
#!/usr/bin/python3
from http.server import SimpleHTTPRequestHandler, HTTPServer
import datetime, shutil, os
def makebackup(src):
(srcpath, srcfile) = os.path.split(src)
tstamp=datetime.datetime.now().strftime("%Y%m%d%H%M%S")
dstpath = os.path.join(srcpath,'twBackups')
if not os.path.exists(dstpath):
os.mkdir(dstpath)
shutil.copyfile(src, os.path.join(dstpath, srcfile+'.'+tstamp))
class ExtendedHandler(SimpleHTTPRequestHandler):
def do_OPTIONS(self):
self.send_response(200, 'OK')
self.send_header('allow','GET,HEAD,POST,OPTIONS,CONNECT,PUT,DAV,dav')
self.send_header('x-api-access-type','file')
self.send_header('dav','tw5/put')
self.end_headers()
def do_PUT(self):
length = int(self.headers['Content-Length'])
path = self.translate_path(self.path)
makebackup(path)
with open(path, "wb") as dst:
dst.write(self.rfile.read(length))
self.send_response(200, 'OK')
self.send_header('Content-Type', 'text/html')
self.end_headers()
os.chdir(os.path.dirname(os.path.abspath(__file__)))
HTTPServer(('localhost',8080),ExtendedHandler).serve_forever()
<$transclude tiddler="exmp110/data/tid03" field=text mode=block/>
<$transclude tiddler="exmp110/data/tid03" field=text mode=block/>
This tiddler has the below fields:
<$list filter='[all[current]fields[]] -[enlist[text title created modified tags creator modifier]]' variable="fld">
''<<fld>>'':<$text text={{{[<currentTiddler>get<fld>]}}}/><br>
</$list>
Tiddler 01
;Example
:Part of example 111
Tiddler 02
;Sample code
:<div><pre>This is part of example 111.
Do not Delete!
</pre></div>
Tiddler 01
;Example
:Part of example 111
\define slAction()
<$action-setfield $tiddler="exmp111/demo/tidPath" $value={{{ [[exmp111/temp/selectTid]get[text]get[text]] }}} />
\end
Examples: <$select tiddler="exmp111/temp/selectTid" default="exmp111/data/tid01" actions=<<slAction>> >
<$list filter="[prefix[exmp111/data]]">
<option value=<<currentTiddler>>>
<$view field=caption><$view field=title/></$view>
</option>
</$list>
</$select>
\define toc-all(here,exclude)
<$list filter="""[title[$here$]tagging[]] $exclude$ -[[$here$]]""">
<$link/>
<div style="padding-left:2em;">
<$macrocall $name="toc-all" here=<<currentTiddler>> exclude="""$exclude$ -[[$here$]]"""/>
</div>
</$list>
\end
\define tiddlerButton()
<$button> Create a Tiddler
<$action-sendmessage $message="tm-new-tiddler" title=<<now "DDth MMM YYYY">> text="""[[$(currentTiddler)$]]"""/>
</$button>
\end
<<tiddlerButton>>
\define minall(filter)
<$text text={{{ [subfilter<__filter__>minall[]] }}}/>
\end
\define maxall(filter)
<$text text={{{ [subfilter<__filter__>maxall[]] }}}/>
\end
\define count(filter)
<$text text={{{ [subfilter<__filter__>count[]] }}}/>
\end
\define sum(filter)
<$text text={{{ [subfilter<__filter__>sum[]] }}}/>
\end
\define product(filter)
<$text text={{{ [subfilter<__filter__>product[]] }}}/>
\end
\define mean(filter)
<$vars
xcount ={{{[subfilter<__filter__>count[]]}}}
xsum ={{{ [subfilter<__filter__>sum[]] }}} >
<$text text={{{ [<xsum>divide<xcount>] }}}/>
</$vars>
\end
\define median(filter)
<$vars
xcount ={{{[subfilter<__filter__>count[]]}}} >
<$list filter="[<xcount>remainder[2]match[0]]" variable=ignore>
<!-- even number -->
<$vars mid0={{{ [<xcount>divide[2]] }}}
mid1={{{ [<xcount>divide[2]add[1]] }}} >
<$text text={{{[subfilter<__filter__>sort[]first<mid0>last[]] [subfilter<__filter__>sort[]first<mid1>last[]]+[sum[]divide[2]]}}} />
</$vars>
</$list>
<$list filter="[<xcount>remainder[2]!match[0]]" variable=ignore>
<!-- odd number -->
<$vars mid={{{ [<xcount>divide[2]ceil[]] }}} >
<$text text={{{ [subfilter<__filter__>sort[]first<mid>last[]]}}} />
</$vars>
</$list>
</$vars>
\end
A sample tiddler.
* One
* Two
This is a tiddler used for demonstration purpose.
> The //tabs// macro presents a selection of tiddlers as a set of tabs that the user can switch between.
-- Tiddlywiki
<$tiddler tiddler=<<currentTab>> >
<$view field=caption><$view field=title/></$view>
<$button message="tm-edit-tiddler" tooltip="Edit">E</$button>
</$tiddler>
<$edit-text tiddler="$:/temp/sidebar" tag=input default="" placeholder="input a tiddler title"/>
<$list filter="[{$:/temp/sidebar}!is[missing]]" variable=ignore>
<h3><$link to={{$:/temp/sidebar}}></$link></h3>
<$transclude tiddler={{$:/temp/sidebar}} mode=block/>
</$list>
\define create_id_from_timedata(prefix) $prefix$-<<now [UTC]YYYY0MM0DD0hh0mm0ssXXX>>
\define uniqueId(prefix:id)
<$wikify name=id text=<<create_id_from_timedata """$prefix$""">> >
<$button tooltip="create unique id" class="tc-btn-invisible" message="tm-copy-to-clipboard" param=<<id>> >{{$:/core/images/copy-clipboard}}
</$button> <$text text=<<id>>/>
</$wikify>
\end
{
"xx": "",
"yy": "hello"
}
\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock
.tc-tiddler-frame.tc-tagged-rtl textarea.tc-edit-texteditor {
background: red;
direction: rtl;
}
\define body()
Dear $(name)$,
I write to inform you that your pet, $(pet)$ has filed for emancipation.
\end
\define createButton()
<$button tooltip="Create new letter" aria-label="new letter" class=<<tv-config-toolbar-class>>>
<$action-sendmessage $message="tm-new-tiddler" title=<<title>> text=<<body>> />
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
{{$:/core/images/new-button}}
</$list>
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
<span class="tc-btn-text"><$text text="new letter" /></span>
</$list>
</$button>
\end
\define source-language() en
\define target-language() fa
\define link-google-translate() https://translate.google.com/#view=home&op=translate&sl=$(source-language)$&tl=$(target-language)$&text= $(mytext)$
\define translate()
<$set name=mytext tiddler=<<currentTiddler>> field=text>
<$button tooltip='Use Google Translate to translate tiddler and instructions'>
<$action-sendmessage $message="tm-open-external-window" $param=<<link-google-translate>> windowName="_translate" windowFeatures="height=400, width=600"/>
TRANSLATE $(source-language)$ > $(target-language)$
</$button>
</$set>
\end
<$list filter="[all[current]tag[translate]]">
<<translate>>
</$list>
\define cell-bg(name, row, column, bg-color:"pink")
<style>
.$name$ tbody tr:nth-child($row$) td:nth-child($column$) {
background: $bg-color$;
}
</style>
\end
\import exmp124/macro/table-style
!!! Specific Cell
```
<<cell-bg myClass row:"1" column:"2">>
<<cell-bg myClass row:"2" column:"4" lightgreen>>
```
<<cell-bg myClass row:"1" column:"2">>
<<cell-bg myClass row:"2" column:"4" lightgreen>>
!!! Specific Rows even / odd
```
<<cell-bg myClass row:"even" column:"5" lightyellow>>
<<cell-bg myClass row:"odd" column:"5" lightblue>>
```
<<cell-bg myClass row:"even" column:"5" lightyellow>>
<<cell-bg myClass row:"odd" column:"5" lightblue>>
!!! Every Row
```
<<cell-bg myClass row:"1n" column:"1" lightcyan>>
```
<<cell-bg myClass row:"1n" column:"1" lightcyan>>
!!! First 3 rows
```
<<cell-bg myClass row:"-1n+3" column:"3" orange>>
```
<<cell-bg myClass row:"-1n+3" column:"3" orange>>
!!! Every Cell in a row
```
<<cell-bg myClass row:"8" column:"n" "#dd0">>
```
<<cell-bg myClass row:"8" column:"n" "#dd0">>
<$macrocall $name="wikitext-example-without-html"
src="""|myClass |k
| aaa | bbb | cccc | ddd | eee |h
|Body row 1| Column 2 | Column 3 | Column 4 | Column 5 |
|Body row 2| Column 2 | Column 3 | Column 4 | Column 5 |
|Body row 3| Column 2 | Column 3 | Column 4 | Column 5 |
|Body row 4| Column 2 | Column 3 | Column 4 | Column 5 |
|Body row 5| Column 2 | Column 3 | Column 4 | Column 5 |
|Body row 6| Column 2 | Column 3 | Column 4 | Column 5 |
|Body row 7| Column 2 | Column 3 | Column 4 | Column 5 |
|Body row 8| Column 2 | Column 3 | Column 4 | Column 5 |
| caption text |c
"""/>
\define main(name, pet)
\define child() 123456
Dear ''$name$'',
I write to inform you that your pet, ''$pet$'' has filed for emancipation. Call //<<child>>//.
\end
\define substr(string, start:0, length)
<$vars Length={{{ [[$length$]!is[blank]then[$length$]]~[[$string$]length[]] }}} >
<$text text={{{ [<__string__>split[]butfirst<__start__>first<Length>join[]] }}} />
</$vars>
\end
\define triml(string) {{{ [<__string__>addsuffix[/]trim[]removesuffix[/]] }}}
\define trimr(string) {{{ [<__string__>addprefix[/]trim[]removeprefix[/]] }}}
The below code proposed by [[Lin|https://groups.google.com/d/msg/tiddlywiki/kpgWMO8NO6Q/JEUAFpI1AgAJ]] if it is put in a tiddler as described in [[Execute JavaScript on startup]] lets you to copy text on select and mouse up except when you are in editor.
```js
// we won't do copy on select on text editor, otherwise you can't select and override text in the editor or text input
function checkIfElementIsEditor(element)
{
if (!element || !element.nodeName) return false;
const isEditableElement = ['INPUT', 'TEXTAREA', 'BUTTON'].includes(element.nodeName);
if (!isEditableElement) {
if (!element.className || !element.className.toLowerCase) return false;
}
const isTextEditor = element.className.toLowerCase().includes('codemirror');
return isEditableElement || isTextEditor;
}
// if we start selection on editor, we prevent the following execution of this script
let copyOnSelectPreventNextCopy = false;
document.addEventListener('mousedown', function onMouseDown() {
const elementsUnderMouse = document.querySelectorAll(':hover'
);
if (!elementsUnderMouse || Array.from(elementsUnderMouse).some(checkIfElementIsEditor)) {
copyOnSelectPreventNextCopy = true;
}
});
// Copy on select, copy document selection when mouse button is up
document.addEventListener('mouseup', function onMouseUp() {
const elementsUnderMouse = document.querySelectorAll(':hover');
if
(
copyOnSelectPreventNextCopy ||
!elementsUnderMouse ||
Array.from(elementsUnderMouse).some(checkIfElementIsEditor)
) {
copyOnSelectPreventNextCopy = false;
return;
}
document.execCommand('copy');
});
```
\define kbd(string, delim:" ", sep:"+")
<$list filter="[[$string$]split[$delim$]first[]]"><kbd><<currentTiddler>></kbd></$list>
<$list filter="[[$string$]split[$delim$]rest[]]"> $sep$ <kbd><<currentTiddler>></kbd></$list>
\end
\define dummy-button(string, delim:" ", sep:" ", class)
<$list filter="[[$string$]split[$delim$]first[]]"><$button class="$class$" tooltip="demonstration button only"><<currentTiddler>></$button></$list>
<$list filter="[[$string$]split[$delim$]rest[]]"> $sep$ <$button class="$class$" tooltip="demonstration button only"><<currentTiddler>></$button></$list>
\end
<svg viewBox="0 0 400 400" xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Example triangle01- simple example of a 'path'</title>
<desc>A path that draws a triangle</desc>
<rect x="1" y="1" width="398" height="398" fill="none" stroke="blue" />
<path d="M 100 100 L 300 100 L 200 300 z" fill="red" stroke="blue" stroke-width="3" />
</svg>
{{exmp132/data/tid02||exmp132/template/TE}}
This is a sample tiddler. It is part of <<tag exmp132>>.
* One
* Two
<$reveal state=<<qualify "TE">> type="nomatch" text="edit"><$transclude mode="block"/> <$button class="mybuttons" set=<<qualify "TE">> setTo="edit">Edit</$button>
</$reveal>
<$reveal state=<<qualify "TE">> type="match" text="edit"><$transclude tiddler="$:/core/ui/EditTemplate" /> <$button class="mybuttons" set=<<qualify "TE">> setTo="show">Show</$button></$reveal>
This is a sample tiddler.
It is part of Example 133.
This example shows how to split a tiddler by lines.
\define splitbyline(tiddler)
<$list filter="[<__tiddler__>get[text]splitregexp[\n]!is[blank]">
<$text text=<<currentTiddler>>/><br/>
</$list>
\end
This tiddler contains a `structure` field stores a web address to an image in the net.
\define showStructure(tid)
<$image source={{$tid$!!structure}} />
\end
<<showStructure "exmp134/data/tid01">>
\define tv-wikilinks() no
One Two [[Thrity Two]] Forty [[Forty One]]
\define input() arbitrary text .. .etc. # ... @title1 @title2 [[@title with space]]
<<<
<$list filter="[enlist<input>removeprefix[@]]">
<<currentTiddler>>
</$list>
<<<
><$vars text="""this is some aribrart text .. .etc. # ... @title1 @title2 @[[title with space]]""" reg="""(?:(?:@(\[\[.*[^\]]\]\]|\S+))|(?!@)\S+|\s)""">
<$list filter="[<text>search-replace:gi:regexp<reg>,[ $1]enlist-input[]]">
<<currentTiddler>>
</$list>
</$vars>
!! Creating a Reading List
Because Tiddlywiki is radically customizable and allows you to think in new ways, it can be hard to "get it" if you haven't used it. In this video, I show what it looks like to be fluent in Tiddlywiki by creating a complete, functional application to track books and articles we've read and would like to read, in just over an hour. This video is 100% uncut and unrehearsed, programming mistakes and all.
See [[exmp137/VideoButtons]] for watching!
I go through using Tiddlywiki and compare it with Obsidian, for both personal wikis and Zettelkasten.
See [[exmp137/VideoButtons]] for watching!
This is a sample vide!
See [[exmp137/VideoButtons]] for watching!
This example shows Videos opened inside a details tag!
For more information see: [[Video Embedded in Modal Window]]
<$list filter="[tag[video]]" variable=currentTiddler>
<details>
<summary><$view field="caption"><$view field="title"/></$view></summary>
{{||exmp137/VideoTemplate}}
</details>
</$list>
<$list filter="[tag[video]sort[title]]" variable=currentTiddler>
<$button class="tc-btn-invisible tc-tiddlylink">
<$view field="caption"><$view field="title"/></$view>
<$action-sendmessage $message="tm-modal" $param="exmp137/VideoTemplate" currentTiddler=<<currentTiddler>>/>
</$button><br>
</$list>
<div class="container">
<iframe src={{!!url}} width="100%" height="315" frameborder="0" allowfullscreen class="video"></iframe>
</div>
This is a video from Aparat
* This tiddlers is part of <<tag exmp138>>
* In the view mode a user class applied to set the left border
* In the edit mode the user class is not applied
.userclass138:not([data-tiddler-title^="Draft of"]){
border-left: 5px solid blue;
}
<table>
<$list filter="A B C D E F G H I J K L M N O P Q R S T U V W X Y Z">
<tr>
<th colspan = 2><<currentTiddler>></th>
</tr>
<$list filter="[prefix<currentTiddler>sortan[]]">
<tr>
<td style="text-align:right"><$link/></td>
<td><$view field="modified" format="date" template="YYYY.0MM.0DD"/></td>
</tr>
</$list>
</$list>
</table>
\define tagsList() css tools
<<list-links filter:"[subfilter<tagsList>] +[tagging[]]" >>
List of Tags: <$edit-text tiddler="$:/temp/exmp140" tag=input default=""/> //<small><$count filter="[subfilter{$:/temp/exmp140}] +[tagging[]]"/> matches</small>//
<<list-links filter:"[subfilter{$:/temp/exmp140}] +[tagging[]]" >>
[[abs Operator]] [[add Operator]] [[addprefix Operator]] [[addsuffix Operator]] [[after Operator]] [[all Operator]] [[allafter Operator]] [[allbefore Operator]] [[append Operator]] [[backlinks Operator]] [[before Operator]] [[bf Operator]] [[butfirst Operator]] [[butlast Operator]] [[ceil Operator]] [[commands Operator]] [[compare Operator]] [[contains Operator]] [[count Operator]] [[cycle Operator]] [[days Operator]] [[decodehtml Operator]] [[decodeuri Operator]] [[decodeuricomponent Operator]] [[divide Operator]] [[duplicateslugs Operator]] [[each Operator]] [[eachday Operator]] [[editiondescription Operator]] [[editions Operator]] [[else Operator]] [[encodehtml Operator]] [[encodeuri Operator]] [[encodeuricomponent Operator]] [[enlist Operator]] [[enlist-input Operator]] [[escapecss Operator]] [[escaperegexp Operator]] [[exponential Operator]] [[field Operator]] [[fields Operator]] [[filter Operator]] [[first Operator]] [[fixed Operator]] [[floor Operator]] [[format Operator]] [[get Operator]] [[getindex Operator]] [[getvariable Operator]] [[has Operator]] [[haschanged Operator]] [[indexes Operator]] [[insertbefore Operator]] [[is Operator]] [[join Operator]] [[jsonstringify Operator]] [[last Operator]] [[length Operator]] [[limit Operator]] [[links Operator]] [[list Operator]] [[listed Operator]] [[log Operator]] [[lookup Operator]] [[lowercase Operator]] [[match Operator]] [[max Operator]] [[maxall Operator]] [[min Operator]] [[minall Operator]] [[minlength Operator]] [[modules Operator]] [[moduletypes Operator]] [[move Operator]] [[multiply Operator]] [[negate Operator]] [[next Operator]] [[nsort Operator]] [[nsortcs Operator]] [[nth Operator]] [[order Operator]] [[pad Operator]] [[plugintiddlers Operator]] [[power Operator]] [[precision Operator]] [[prefix Operator]] [[prepend Operator]] [[previous Operator]] [[product Operator]] [[putafter Operator]] [[putbefore Operator]] [[putfirst Operator]] [[putlast Operator]] [[range Operator]] [[reduce Operator]] [[regexp Operator]] [[remainder Operator]] [[remove Operator]] [[removeprefix Operator]] [[removesuffix Operator]] [[replace Operator]] [[rest Operator]] [[reverse Operator]] [[round Operator]] [[sameday Operator]] [[search Operator]] [[search-replace Operator]] [[sentencecase Operator]] [[shadowsource Operator]] [[sign Operator]] [[slugify Operator]] [[sort Operator]] [[sortan Operator]] [[sortby Operator]] [[sortcs Operator]] [[sortsub Operator]] [[split Operator]] [[splitbefore Operator]] [[splitregexp Operator]] [[storyviews Operator]] [[stringify Operator]] [[subfilter Operator]] [[subtiddlerfields Operator]] [[subtract Operator]] [[suffix Operator]] [[sum Operator]] [[tag Operator]] [[tagging Operator]] [[tags Operator]] [[then Operator]] [[title Operator]] [[titlecase Operator]] [[toggle Operator]] [[trim Operator]] [[trunc Operator]] [[untagged Operator]] [[untrunc Operator]] [[uppercase Operator]] [[variables Operator]] [[ActionConfirmWidget]] [[ActionCreateTiddlerWidget]] [[ActionDeleteFieldWidget]] [[ActionDeleteTiddlerWidget]] [[ActionListopsWidget]] [[ActionLogWidget]] [[ActionNavigateWidget]] [[ActionPopupWidget]] [[ActionSendMessageWidget]] [[ActionSetFieldWidget]] [[ActionWidgets]] [[BrowseWidget]] [[ButtonWidget]] [[CheckboxWidget]] [[CodeBlockWidget]] [[CountWidget]] [[DiffTextWidget]] [[DraggableWidget]] [[DroppableWidget]] [[DropzoneWidget]] [[EditBitmapWidget]] [[EditTextWidget]] [[EditWidget]] [[EncryptWidget]] [[EntityWidget]] [[EventCatcherWidget]] [[FieldManglerWidget]] [[FieldsWidget]] [[ImageWidget]] [[ImportVariablesWidget]] [[KeyboardWidget]] [[LinkCatcherWidget]] [[LinkWidget]] [[ListWidget]] [[LogWidget]] [[MacroCallWidget]] [[MessageCatcherWidget]] [[NavigatorWidget]] [[PasswordWidget]] [[RadioWidget]] [[RangeWidget]] [[RevealWidget]] [[ScrollableWidget]] [[SelectWidget]] [[SetVariableWidget]] [[SetWidget]] [[TextWidget]] [[TiddlerWidget]] [[TranscludeWidget]] [[VarsWidget]] [[ViewWidget]] [[WikifyWidget]]
\define indexTiddler() exmp141/data/indexTiddler
\define tmpIframeTid() $:/temp/exmp141/select
\define tmpSearchTid() $:/temp/exmp141/edit
This example demonstrates how Tidllywiki official static pages can be aggregated and displayed in an iframe!
Search: <$edit-text tiddler=<<tmpSearchTid>> tag=input default=""/>
<$vars index={{{ [<indexTiddler>get[text]] }}} link={{{ [<tmpIframeTid>get[text]] }}} searchTerm= {{{ [<tmpSearchTid>get[text]] }}}>
<$select tiddler=<<tmpIframeTid>> field=text >
<$list filter="[enlist<index>search:title<searchTerm>]">
<option value={{{ [<currentTiddler>encodeuri[]split[%]join[%25]addprefix[https://tiddlywiki.com/static/]addsuffix[.html]] }}}><<currentTiddler>></option>
</$list>
</$select> <a href=<<link>> title="Open web page in a separate window/tab" target="_blank">link</a>
<div class="exmp141-container">
<iframe class="exmp141-responsive-iframe" src=<<link>> ></iframe>
</div>
</$vars>
<style>
.exmp141-container {
position: relative;
width: 100%;
overflow: hidden;
padding-top: 56.25%; /* 16:9 Aspect Ratio */
}
.exmp141-responsive-iframe {
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
width: 100%;
height: 100%;
border: none;
}
</style>
\define indexTiddler() exmp141/data/indexTiddler
\define tagsList() [[Filter Operators]] Widgets
\define generateList()
<$vars lb="[[" rb="]]"><$list filter="[subfilter<tagsList>] +[tagging[]]" ><$text text={{{ [<currentTiddler>addsuffix<rb>addprefix<lb>] }}} /> </$list></$vars>
\end
<!-- Statistics -->
''Matches'': <$list filter="[subfilter<tagsList>]">
<$text text=<<currentTiddler>> />: //<$count filter="[tag<currentTiddler>]"/> matches//.
</$list>
<$button>Index Tiddlers
<$wikify name=TiddlersList text=<<generateList>> >
<$action-setfield $tiddler=<<indexTiddler>> $field=text $value=<<TiddlersList>> />
<$action-setfield $tiddler=<<indexTiddler>> $field=type $value="text/plain" />
</$wikify>
</$button>
<!-- display a link to index tiddler -->
Index: <$list filter="[<indexTiddler>!is[missing]]" emptyMessage="no index tiddler existed!"/>
\define AddTopic(topic) <option value={{{ [[$topic$]encodeuri[]addprefix[https://en.wikipedia.org/wiki/]] }}}>$topic$</option>
<$select field="curr-topic" default="TiddlyWiki">
<<AddTopic "TiddlyWiki">>
<<AddTopic "WikiWikiWeb">>
<<AddTopic "Project Xanadu">>
</$select> <a href={{!!curr-topic}} title="Open web page in a separate window/tab" target="_blank">link</a>
<iframe src={{!!curr-topic}} height="500" width="100%"></iframe>
;Remarks
* See [[Create Index of Tiddlywiki Static Pages and Display in Iframe]] for more details
* This solution was proposed by [[Eric Shulman| https://groups.google.com/d/msgid/tiddlywiki/5a5a7dd6-4724-4a03-ae29-09931f8d9a74n%40googlegroups.com]]
This is part of <<tag exmp029>>. Do not delete.
This is part of <<tag exmp029>>. Do not delete.
This is part of <<tag exmp029>>. Do not delete.
<<tabs class:"tc-vertical" tabsList:"[tag[Explorer]!has[draft.of]]" default:"Responders Statistics">>
You can import it into your wiki (you will have to click a button to create a template tiddler, or you can import the template tiddler as well) then you can give a file name (complete with extension) and a filter and then click export as text and a text file with the contents of the tiddlers gets created and downloaded, or click export as rendered html to get the contents of the tiddler exported as rendered html. If you have a tiddler that already transcludes the tiddlers you want in the correct order you can just give that tiddler title as the filter.
`haschanged[]` will list all tiddlers since the last time the wiki was loaded from disk, ie the reload button, or if you close the tab and reopen again.
It is perfect for an ''emergency save'', like list everything changed since I loaded it this morning. Export to JSON, restore from last working version and import the json.
!! Example
# Open the <<advanced-search>>
# Choose the `Filter` tab
# Enter the below filter `[haschanged[]!prefix[$:/state]!prefix[$:/temp]![$:/StoryList]![$:/HistoryList]]`
# Click on export tiddler icon on the right side
# Save as JSON file
You can import this JSON later into a wiki file.
!!! See also
<<list-links "[search:keywords[change]] -[<currentTiddler>]" type:"ol">>
<<docit>>
https://www.didaxy.com/exporting-static-sites-from-tiddlywiki
; How to display external images (from local folders)?
:Have a thumbnail of the image displayed; click on thumbnail to see the full resolution image.
The solution here uses two buttons, but it is possible to have a thumbnail and on click display the full resolution image. The solution includes two macros. The macro assumes
* The images are located in a local folder
* The thumbnails are stored in `thumbs` under image folder (default is `TW-Images/thumbs/`)
```
\define imageit(image:"image",path:"TW-Images/")
<$macrocall $name="imageaid" image="$path$$image$" thumb="$path$thumbs/$image$" state="$:/ImageState/$image$" />
\end
\define imageaid(image:"image.jpg" ,thumb:"pathToThumb", state:"ImageRevealState")
<$button set="$state$" setTo="hide">Full image</$button>
<$button set="$state$" setTo="show">Small Image</$button><p/>
<$reveal type="match" state="$state$" text="show">
<img src="$thumb$" />
</$reveal>
<$reveal type="match" state="$state$" text="hide">
<img src="$image$" />
</$reveal>
\end
```
* Main macro `imageit`
|!Attribute|!Description|
|imgage|The image name including extention e.g. `mypic.jpg`|
|path|The path to image folder, defualt is `TW-Images/`|
The macro `imageit` calls the other macro `imageid` which uses in turn `reveal` widget to show the images.
!! How it works?
# Put the macros in a tiddler tagged with `$:/tags/Macro`
#<div>
Call it whenever you like as below
```
<<imageit "mypic.jpg">>
<<imageit "sample.png" "d:/TW/pictures/">>
```
</div>
!! Single file wiki
(e.g. testWiki.html)
# External image can be put everywhere in local disk as can be embed in wiki using canonical URI.
#* See full solution here: https://kookma.github.io/TW-Scripts/#Create%20External%20Images%20from%20A%20Directory
# Single file on GitHub pages (github web server) acts the same for single file wiki
#* See https://github.com/kookma/TW-Scripts the examples folder
!! Node.js wiki
(e.g. myWiki) [The description here tested on Windows 10 + Tiddlywiki 5.1.22 + Node.js 12.13.1)
NO `tiddlywiki.files` is used here
# the wiki started like tiddlywiki myWiki --server so the address is http://127.0.0.1:8080/
# If you create a folder called files, inside wikiforlder, then you can get access to all objects (images, pdfs, subfolders ...)
#* through http://127.0.0.1:8080/files/obj-name
#* example: http://127.0.0.1:8080/files/IMG_20160405_120320.jpg [WORK]
#* all sub folders in `files` work as above
# you cannot access objects in a folder like `pictures` inside wikifolder [NOT WORK]
!! Node.js using tiddlywiki.files
to be completed ....
This method uses `canonical_uri` to embed extarnla images and videos.
The `canonical_uri` lets you load an image, video or pdf
<$list filter="[tag[exmp120]has[_canonical_uri]]">
><<fields>>
</$list>
!! Use html5 embed tag
Another universal method is using the html`embed` tag as described in <<tag embed>>
<<list-links "[tag[embed]]">>
[ext[examples/myfile.txt]]
\define fakebtn()
<button style='opacity: 0.5;' disabled>This button is fake</button>
\end
*Fake button (disabled) proposed by Mark S
<<<
```
<$list filter="[tag[someTag]limit[1]]" emptyMessage=<<fakebtn>> >
<$button>This button is real</$button>
</$list>
```
<$list filter="[tag[someTag]limit[1]]" emptyMessage=<<fakebtn>> >
<$button>This button is real</$button>
</$list>
<<<
* Not-allowed cursor
<<<
```
<$button style='opacity: 0.6;cursor:not-allowed'>End</$button>
```
<$button style='opacity: 0.6;cursor:not-allowed'>End</$button>
<<<
* HTML5 disabled button
<<<
```
<button disabled style='opacity: 0.6;'>End</button>
```
<button disabled style='opacity: 0.6;'>End</button>
<<<
<<docit>>
https://groups.google.com/d/msg/tiddlywiki/NTFr-oFJD4E/iFN6Rz__AwAJ
Also: http://sycom.github.io/TiddlyWiki-Plugins/
\define fibber(last:"0",next:"1",count:"1")
<$list filter="[<__count__>!match[0]]" emptyMessage="<<__last__>> <<__next__>>" >
<$set name="count" filter="[<__count__>subtract[1]]" select=0>
<$set name="next" filter="[<__last__>add<__next__>]" select=0>
<<__last__>> <$macrocall $name=fibber last=<<__next__>> next=<<next>> count=<<count>>/>
</$set></$set>
</$list>
\end
;Using the recursive feature of macro, develop a code to calculate the Fibonacci sequence
: The [[Fibonacchi|https://en.wikipedia.org/wiki/Fibonacci_number]] sequence starts with "0" and "1" and each new number in the sequence is the sum of its two previous numbers.
!! Solution
The below macro is a solution to Fibonacci sequence using the recursive macro.
<<show-macro>>
!! Content and attributes
|!Attributes |!Type |!Description |
|last |required|the last entry in the sequence. The default value is `0`|
|next |required|the text entry in the sequence. The default value is `1`|
|count |required |number of entries in the sequence to be calculated. The default value is `1`|
;Remarks
: the `fibber` macro calculates the Fibonacci sequence using the recursive function `fibber`
:the first `$list` widget checks if the number of requested entries, `count` is zero, then it displays the `last` and `next` entries.
:if the `count` is not zero, then it decreases the `count` parameter by one and calculates the `next` entry by adding the previous values of entries `last` and `next` using the two `$set` widgets. It then calls the `fibber` with new values of `count`, `last`, and `next`
:the recursive calculation is continued until `count` is equal zero.
!! Examples
Starting from "0" and "1", calculate and print the next 6 numbers of Fibonacci sequence.
<$macrocall $name="wikitext-example-without-html"
src="""<<fibber 0 1 6>>"""/>
Starting from "3" and "5", calculate and print the next 10 numbers of Fibonacci sequence.
<$macrocall $name="wikitext-example-without-html"
src="""<<fibber 3 5 10>>"""/>
For getting the property value from a data tiddler (dictionary) using a field, use the below syntax
```
<$transclude tiddler="data-tiddler" index={{!!field-name}}/>
```
<<alert danger "The `{{data-tiddler##{{!!field-value}}}}` will not work! Nesting `{}` is not allowed">>
; Assume several tiddlers have a common tag and a field called `ingredient`, how to display the value of the `ingredient` from all tiddlers with the tag?
: Use the `list` widget with `get` operator. Each input title is processed in turn. If the corresponding tiddler contains field `ingredient`, and the value of this field is //not empty//, then its value is appended to the output. For more information see [1].
!! Example
The below example displays the value of ingredient field from sveral tiddlers tagged with <<tag exmp063>>
<$macrocall $name="wikitext-example-without-html"
src="""><$list filter="[tag[exmp063]get[ingredient]]">
<<currentTiddler>><br>
</$list>
"""/>
!! Duplicated values
; If there are several tiddlers with same ingredent value, how list (display) the value only one time (no repeated values)?
: Use the `each` operator, to remove duplicates. See [2] below
```
<$list filter="[tag[food]each[ingredient]get[ingredient]]">
</$list>
```
!! Reference
# https://tiddlywiki.com/#get%20Operator
# https://tiddlywiki.com/#each%20Operator
; How use a customized filename for saving Tiddlywiki as a singlefile?
: Referening ot [[Tiddlywiki documentation|https://tiddlywiki.com/#Hidden%20Setting%3A%20Filename%20for%20Save%20Wiki%20Button]] it is possible to have customized filename.
If a tiddler named $:/config/SaveWikiButton/Filename is created, the text in that tiddler will be used as the default file name used for saving the TiddlyWiki.
!! Example
The below script in $:/config/SaveWikiButton/Filename cuase on save a filebame like `MyWiki - 18.08.2019-17.40.24.html` is created.
```
MyWiki - <<now "0DD.0MM.YYYY-0hh.0mm.0ss">>.html
```
; How to write a filter that returns only the first suffix word after a given prefix?
: Use prefix, removeprefix, and splitbefore operators to do that.
!! Example
On Tiddlywiki.com, go to the Advanced Search, Shadows tab, and search for (the prefix): `$:/core/ui/ControlPanel/`. It returns about 50 results.
The only ones are requested are the ones that have a //single word// after that //prefix//. For example: the `$:/core/ui/ControlPanel/Saving` is rquested but NOT `$:/core/ui/ControlPanel/Saving/DownloadSaver`.
So, the filter shall:
1. Find only the tiddlers have one word after the prefix `$:/core/ui/ControlPanel/`
2. Return all those single words (remove the prefix)
```
<$list filter="[all[shadows]prefix[$:/core/ui/ControlPanel/]removeprefix[$:/core/ui/ControlPanel/]splitbefore[/]!suffix[/]]">
</$list>
```
!! Remarks
* The `all[shadows]prefix[$:/core/ui/ControlPanel/]` finds all shadow tiddlers their title starts with `$:/core/ui/ControlPanel/`
* The `removeprefix[$:/core/ui/ControlPanel/]` remove the part `$:/core/ui/ControlPanel/` from title
* The `splitbefore[/]` filter, remove remaining text from title after `/`, but include `/` in the output.
* The last parst `!suffix[/]` ignores all results having trailing `/`. This will remove those output having `a/b/...` means are not single word after `$:/core/ui/ControlPanel/`.
!! A complete example
The below script, adds two extra steps. It formats the output as numbered list and also make links to each tiddler. Note that the `set` widget creates the link.
```
<ol>
<$list filter="[all[shadows]prefix[$:/core/ui/ControlPanel/]removeprefix[$:/core/ui/ControlPanel/]splitbefore[/]!suffix[/]]" variable="xx1">
<$set name=lnk filter={{{[<xx1>addprefix[$:/core/ui/ControlPanel/]]}}}>
<li><$link to=<<lnk>> > <$text text=<<lnk>>/> </$link></li>
</$set>
</$list>
</ol>
```
; How export all tiddler except the core?
One can use exactly the same tiddlers in both configurations (apart from needing the tiddlyweb and filesystem plugins, but those are usually handled by reference from the tiddlywiki.info file), so the filter to use would be `[is[tiddler]]`.
<<alert info "Open [[$:/AdvancedSearch]], Filter tab and enter `[is[tiddler]]` and then press export. ">>
; How it is possible to find all `[[links]]` in tiddler fileds?
: Use `regexp` with suitable input
! Example
Find all wikitext links (those in double square brackeks `[[]]`) in a filed called `myfield`.
You need to put your expression in a separate variable as below.
```
<$vars reg="(?g)\[\[.*?\]\]">
<$list filter="[!is[system]regexp:myfield<reg>]">
</$list>
</$vars>
```
!! Remarks
* The `$vars` widget defines a new variable `reg` to store the regexp search pattern
* The `$list` widget then uses a `regexp` filter operator to find the wikitext links
[img class="float-right" [list.ico]]
!! ''A quick tutorial on TW filters''
Here the usage and application of filters are shown through examples.
<<tabs tabsList:"[tag[filter]!has[draft.of]nsort[]] -[[Filter Tutorial]]" default:"1.1" class:"tc-vertical">>
Also have a look at [[filtered transclusion|https://tiddlywiki.com/#Transclusion%20in%20WikiText]].
The below syntax can be used to transclude a list of tiddlers matching a specified filter:
```
{{{[tag[2018.10.02]||DailyTemplate]}}}
```
The [[DailyTemplate]] is a simple template tiddler is used for output.
See the below the example in action. This example lists all tiddlers tagged with `2018.10.02`.
<<wikitext-example-without-html
"""{{{ 2018.10.02 || DailyTemplate }}}
""">>
!! Filtered Transclusion
Here the modified example by [[Stephan Hradek]] is used in [[http://tw5magick.tiddlyspot.com/]].
!! Template tiddler
The template tiddler is as below
<<<
Title: [[template/tocEntry]] <br>
Text: as below
```
<dt><$link><$view field="title"/></$link></dt><dd><$transclude field="description"/></dd>
```
The above template uses two fields `title` and `description`. So the target filter is required to have a `description` field.
<<<
!! Syntax
When using transcluging by templates on the filter output the syntax is as belows
```
{{{ [[filter-expression]] || TemplateTiddler }}}
```
!! Usage
Now assume it is desired to display all tiddlers tagged with `exmp071` by [[template/tocEntry]] template. So
><<wikitext-example-without-html
src:"""<dl>{{{ [tag[exmp071]] || template/tocEntry }}}</dl>
""">>
!! Remarks
Transcluding by [[template/full]] displays
* title of target tiddler by heading two `!!`
* body (text) of target tiddler below the title
<<alert warning "''Note'': The filtered transclusion uses three curly braces as `{{{filter||template}}}`." width:"100">>
;There is a demo tiddler packed into a plugin and it used a viewtemplate. It did not work until it is opened and saved again. Example is sticky footer in Shiraz plugin!
:When you say “open them and save them again” are you referring to the tiddlers within your plugins? If so, it sounds like some of your filter expressions are only picking up “real” tiddlers, and not shadow tiddlers.
If you want to get all tiddlers tagged “foo” including shadow tiddlers you need a filter like this:
```
[all[shadows+tiddlers]tag[foo]]
```
; How to list all DataTiddlers have an index/value pairs of (`myIndex: myValue`)?
: Use a filter to find all DataTiddlers and then search in them to see if there is a `myIndex` index and then check if its value is `myValue` then make a link to it.
!! Example
The below example finds and lists all DataTiddler:
* have an index named: `validateAll`
* that has its value: `true`
* and it makes a link to the tiddlers
```
\define make-link() <$link to="$(display)$">$(display)$</$link><br>
<$list filter="[type[application/x-tiddler-dictionary]]" variable=dataTid>
<$set name="display" value=<<dataTid>>>
<$set name="data" tiddler=<<dataTid>> index="validateAll">
<$list filter="[<data>] -[[true]]" emptyMessage=<<make-link>>>
</$list>
</$set>
</$set>
</$list>
```
!! Remarks
* The macro create a nice link to founded DataTiddlers
* The first `list` widget lists all DataTiddlers in current wiki
* The second `list` widget filters those DataTiddlers has a `true` value for `validateAll` index. It uses an else form, beacuse the filter is empty for those DataTiddlers are the answer, so the emptyMessage will triggered and a link will be created for answer.
<<alert primary "This solution can also be used to find DataTiddlers having certain indexes.">>
My take on the 5 most important widgets to learn would be:
* `<$transclude>`
* `<$set>` (note that `<$tiddler>` is really just an instance of the `<$set>` widget)
* `<$list>`
* `<$text>`
* `<$link>`
And if I was allowed another 5 they would be:
* `<$macrocall>`
* `<$edit-text>`
* `<$button>`
* `<$navigator>`
* `<$reveal>`
There’s also a bundle of widgets that I consider to be hacked that have hung over from the very early days of TW5. At the beginning we didn’t have flexible enough primitives to model some behaviour (like the story river), and so there’s a number of widgets that encapsulate blobs of JavaScript that could soon be replaced by more generic, smaller components:
* `<$navigator>`
* `<$fieldmangler>`
* `<$linkcatcher>`
* `<$encrypt>` for encrypting the payload of standalone HTML TiddlyWikis
* `<$raw>`
What is the best practice for embedding float images in tiddlers to prevent overflow?
!! Solution
#https://groups.google.com/d/msg/tiddlywiki/5bZwwj6cyac/2LzFeA7AAwAJ
#https://groups.google.com/d/msg/tiddlywiki/5bZwwj6cyac/bz_GPwsoBAAJ
!! Remarks
:The first solution seems to work better, the second does not work on TW 5.1.17 and above. The [[$:/plugins/.mr/shiraz/stylesheet/tw-adjustment]] has implemented the first version to wrap the float image inside the tiddler.
There is a wikitext syntax for images eg: `[img[pig.png]]`. But what if I want to center the image. Or if I want the image left or right aligned and the text should flow around the image.
There are 3 macros now.
* `<<image-left "pig.png">>`
* `<<image-center "pig.png">>`
* `<<image-right "pig.png">>`
<br>
!! Left aligned image
```
<<image-left "pig.png">>
```
Activates a `float-left` CSS rule for the image container.
<<image-left "pig.png" caption:"//Fig 1. floating image//" width:"20%">>
If you want to add a caption to the image, just use:
```
<<image-left "pig.png" caption:"//Fig 1. floating image//" width:"20%">>
```
As you can see, inline formatting rules can be used.
<br>
!! Center aligned image
The image below will be centred and slightly bigger. There is no text flow around the image. The macro is used like this:
```
<<image-center "pig.png" caption:"Fig 2. Centered image" width:"30%">>
```
<<image-center "pig.png" caption:"Fig 2. Centered image" width:"30%">>
!! Right aligned image
<<image-right "pig.png" caption:"''Fig 3. Float right image''" tooltip:"The lovely pig from north" width:"20%">>
This image uses:
```
<<image-right "pig.png" caption:"''Fig 3. Float right image''" tooltip:"The lovely pig from north" width:"20%">>
```
!! Clearfix
Since "float-left" and "float-right" CSS rules have some effects on the text flow, we need a mechanism, that disables this effect. So we need to assign a special class to the last paragraph of this page: eg:
```
@@.image-text ... @@
```
<<alert info "''Note'': There are more elegant solutions to do this.">>
!!! Tiddlers in this solution
<<list-links "[tag[floating-images]] -[<currentTiddler>]" type:"ol">>
; Is there a "folding editor" macro - could be called something like:
```
<<folding-editor "Tiddler-01">>
<<folding-editor "Tiddler-02">>
```
!! A folding editor
The below macro accepts a tiddler title and create an inline folding editor. A small pen is shown on the right and by clicking it reveals an editor to edit the tiddler inline.
```
\define folding-editor(tiddler)
<$set name="state" value={{{ [[$:/state/folding-editor/]addsuffix<currentTiddler>addsuffix<__tiddler__>] }}}>
<$reveal stateTitle=<<state>> type="nomatch" text="edit">
<span style="float: right;">
<$button class="tc-btn-invisible" setTitle=<<state>> setTo="edit">{{$:/core/images/edit-button}}</$button>
</span>
<$list filter="[<__tiddler__>is[missing]] [<__tiddler__>!is[missing]!has[text]]">
<<__tiddler__>>
</$list>
<$transclude tiddler=<<__tiddler__>> mode="block"/>
</$reveal>
<$reveal stateTitle=<<state>> type="match" text="edit">
<span style="float: right;">
<$button class="tc-btn-invisible" setTitle=<<state>> setTo="">{{$:/core/images/done-button}}</$button>
</span>
<$edit-text class="tc-edit-texteditor" tiddler=<<__tiddler__>> tag="textarea" default="" placeholder={{$:/language/EditTemplate/Body/Placeholder}}/>
</$reveal>
</$set>
\end
```
The [[font-awesome-base64|https://github.com/keithorbit/font-awesome-base64]] is simple minified CSS with all fone awesome free in form of compressed base64. You can simply add the it to Tiddlywiki as below:
; Add font-awesome-base64
# import font-awesome.min.css from above url into your Tiddlywiki
# tag it with `$:/tags/Stylesheet`
# save
; Use font-awesome-base64
The free version of font awesome are avialbale through font-awesome-base64, the instruction for use font awesome can be found here in [[basin use|https://fontawesome.com/how-to-use/on-the-web/referencing-icons/basic-use]]
For example
```
<i class="fas fa-camera"></i>
```
These font Aswesone are optimized to meed the TW standard. So, they can readily be styled (rescaled, recolor, transclude,...)
<<alert info "This is a TW5 plugin embed Fontawesome 5.0 as a base64 css in Tiddlywiki.">>
!! Discussion
There is a discussion at [[Forume|https://groups.google.com/d/msg/tiddlywiki/wp0pY_Aervc/Pg-svkruAwAJ]]. The Font awesome 5.0 has a folder containing the svg files so they can be imported and used as single file in TW.
See the below recommendations
* [[TonyM|https://groups.google.com/d/msg/tiddlywiki/wp0pY_Aervc/GziGZ4PyAwAJ]]
* [[Josiah|https://groups.google.com/d/msg/tiddlywiki/wp0pY_Aervc/vXcFkyAQBAAJ]]
* Similar project
There is other projects for font-icons among them is [[Material Icons]]
! Using fontawesome svg with TW
Ref: [[Josiah|https://groups.google.com/d/msg/tiddlywiki/wp0pY_Aervc/vXcFkyAQBAAJ]]
For the FontAwesome SVGs, used as is, I would set width="auto" height="22pt" In fact you can leave width out entirely as "auto" is implied. The reason is that FA SVGs have a "viewBox" that is normally 512 high but can come in variant widths.
And the 22 "points" height is when you want the the same height as icons in TW as the core icons are all (I think) 22pt x 22pt (viewBox="0 0 128 128") -- i.e square.
SVGs can be confusing at first as the dimensions are not exactly the apparent "image" size. The width and height are actually a scaling in relation to the viewBox.
NOW, if you want square icons, like they are in TW, you could force the FA SVG to reshape by using `width="22pt"` `height="22pt"` and adding `preserveAspectRatio="none"`. I suspect many of the FA SVGs will reshape well. Anyway, IMO its better interface icons are the same size :-)
Here's an example of how the start could look for an FA SVG for a TW icon ...
```
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" width="22pt" height="22pt" preserveAspectRatio="none">
```
; How to read two inputs from a user form and create a link by concatenating two variables?
: Use a macro with $tiddler with $edit-text to
!! Code
<<code-link exmp106/macro/linkup>>
* Everything (except the linkup macro definition) is inside a `$tiddler` widget to set the context, so you can just refer to the fields without having to specify the tiddler each time
* The `$vars` widget gets the input from the temporary fields and puts them into variables
* The `<<linkup>>` macro uses `$(...)$` syntax to access the variable values instead of passing them as parameters.
<<alert info "Eeverything in TiddlyWiki is context dependent, so variables only exist //WITHIN// the scope of their container.">>
!! Example
The below example shows how the code works.
<<content exmp106/macro/linkup>>
This plugin adds full text search capabilities to TiddlyWiki, which provides features like language awareness (ex. treating jump, jumps, jumping, and jumped as different forms of the same word) and ordering results by search relevance, meaning the first result is going to be the one that the search engine figures as the closest match to what you're looking for.
<<docit>>
https://groups.google.com/d/msg/tiddlywiki/gEpIkzW5ADU/RALNIKbUAAAJ
Work with nasty tiddler names
https://groups.google.com/d/msg/tiddlywiki/gEpIkzW5ADU/AVM8cj0FAQAJ
\import exmp107/macro/get-all-matches
;How to find all matches when looking for specified value in a field?
:this means to list all tiddlers has a certain field with the value is searched.
!! Code
Here a macro is developed. It gets the filed name and using a `$list` widget looks for the specified value
<<code-link exmp107/macro/get-all-matches>>
* the input parameter `fieldname` is the name of field in which search will perform
* the input parameter `fieldvalue` is the value for which search is performed
<<alert info "''Note:'' The above macro finds only //exact matches//. So, it is case sensistive.">>
!! Example
Find all tiddlers have `responder` field contains the value `Simon Huber`
<$macrocall $name="wikitext-example-without-html"
src="""><<getAllMatches responder "Simon Huber">>
"""/>
!! Remarks
* To return a link to matched tiddlers modify the code as below<div>
```
\define getAllMatches(fieldname,fieldvalue)
<$list filter="[$fieldname$[$fieldvalue$]]">
<$link/><br>
</$list>
\end
```
</div>
* Use `$macrocall` widget, which also invokes a macro, but allows to pass parameters whose values can be retrieved from variables instead of just being quoted strings. Thus:<div>
```
<$macrocall name="getAllMatches" fieldname=<<someFieldnameVariable>> fieldValue=<<someFieldvalueVariable>> />
```
</div>
;[[Question|https://groups.google.com/d/msg/tiddlywiki/_OnqU7IiB9g/XrbaGLBUCAAJ]]: How get the JavaScript macro output as raw text (NOT wikified)?
<<<
In a normal TiddlyWiki macro the below pragma
```
\rules only
```
prevents the macro output from wikification! How prevent TiddlyWiki from wikifying the output of a JS macro output or how get the raw text as output?
<<<
!! Solution i
Ref: [[Best solution|https://groups.google.com/d/msg/tiddlywiki/_OnqU7IiB9g/Dk40NpL6CAAJ]]
The trick is to use the “type” attribute of the ''$macrocall'' widget. It causes it to interpret the text as //plain text//, rather than //wikitext//. However, if you try `<$macrocall $type="text/plain" $name="dumpvariables"/>` on it’s own you’ll see that it puts the text in a plain text block (like triple backticks). The wikify widget lets us extract the plain text from that output.
```
<$wikify name="output" text="""<$macrocall $type="text/plain" $name="dumpvariables"/>""">
<$text text=<<output>>/>
</$wikify>
```
!!Example
<<<
```
<$wikify name="output" text="""<$macrocall $type="text/plain" $name="dumpvariables"/>""">
;Raw or plain output
:<$text text=<<output>> />
;Wikified output
:<<xx>>
</$wikify>
```
!!!Remarks
Here `dumpvariables` is a sample JS macro. You can use your own JS macro which may have many input parameters e.g
```
<$wikify name="output" text="""<$macrocall $type="text/plain" $name="regexpsub" sourceText={{snr/sample01}} searchValue="is" replaceValue="IS" />""">
<$text text=<<output>>/>
</$wikify>
```
<<<
!! Solution ii
Ref: [[Alternative solution|https://groups.google.com/d/msg/tiddlywiki/_OnqU7IiB9g/IxloHlq3CAAJ]]
To render the plain output of a JS macro you can do this:
```
<pre><$text text=<<macro-name-here>>/></pre>
```
If you need the output in a ''variable'' you’ll need to use the wikify widget:
```
<$wikify name="output" text="""<pre><$text text=<<macro-name-here>>/></pre>""">
<$text text={{{ [<output>split[|]join[||]] }}} />
</$wikify>
```
; How to get the macro name only NOT retreive the value?
In filter expression, sometimes you need to get the name of macro instead of its value:
* To get the macro name only use it inside `[]`
* To retrieve the value oc macro use it inside angle bracket `<MyMacro>`
For example
```
\define MyMacro() This is a test
<$list filter="[[myMacro]addsuffix[ -Variable]]" ...
<$list filter=:"[<MyMacro>addsuffix[ -Variable]]" ...
```
* In the first $list it produces `MyMacro - Variable`
* In the second $list it produces `This is a test -Variable `
For a real use case see: [[Check if Macro or Variable Exists]]
;How to extract the first line of text field of selected tiddlers?
:use $list with suitable filter to select the tiddlers, then use `regexp` to extract the firat line.
!! Example
Extract the first line of all tiddlers tagged with `definition`
```
<$list filter="[tag[definition]sort[title]]">
<$link /><br>
@@color:green; {{{ [<currentTiddler>get[text]splitregexp[\n]first[]] }}}@@
</$list>
```
* The filter shown above matches all tiddlers tagged with "definition" and sorts the resulting list by title (case-insensitive).
* Then, within the list widget, for each tiddler that was found, it sets the `<<currentTiddler>>` value and:
* `<$link /><br>` outputs a line showing a link to the current tiddler
* `@@color:green; ... @@` applies CSS syntax to set the text color
* {{{ ... }}} is an "inline list" that:
*# gets the text of the current tiddler
*# splits it into lines (using \n as the line boundary)
*# outputs the first item in the "inline list" (i.e., the first line of the text from that tiddler)
<<alert warning "Parsing lines out of text is NOT the best way to proceed. TW5 makes it easy to access tiddler fields. It might be better to put the line contents into their own fields ^^[[1|https://groups.google.com/d/msg/tiddlywiki/96KRu45GFIw/63AKG0SbAgAJ]]^^.">>
https://github.com/
GitHub, Inc. is an American multinational corporation that provides hosting for software development and version control using Git. It offers the distributed version control and source code management functionality of Git, plus its own features.
!! Global macro
Global macro are those macros defined in tiddlers tagged with `$:/tags/Macro`. These macros available in every other tiddler. See also [[ImportVariable Widget|https://tiddlywiki.com/#ImportVariablesWidget]] on Tiddlywiki.com.
!! Private macro
Any macro defined with `\define mac-name()` pragma at the top of a tiddler is private to that tiddler. This means those tiddlers are not available in other tiddlers.
!! The importvariables widget
It is possible to restrict the scope of work of macros and variables in Tiddlywiki, to do that:
# Put all your private macro inside some tiddlers and tag them for example with `privateMacro` or whatever you like.
# Use the `<$importvariables filter="[tag[privateMacro]]">` everywhere you want to use them
<<alert info "''Note'': From TW 5.1.18 and later, The `\import` pragma is an alternative syntax for using the `importVariables` widget. ">>
! Example
<$tiddler tiddler="Private Macro: A Case Study">
!!{{!!title}}
<$transclude/>
</$tiddler>
GoToTab is a guide to help you create a link that, when clicked, opens a specific tab somewhere.
https://google-webfonts-helper.herokuapp.com/fonts
is a page let you to download high quality web fonts (woff) to be included into Tiddlywiki.
<<docit>>
https://thenounproject.com/search/?q=leaf&i=846554#
<<docit>>
The below macro was introduced by {{!!responder}} to create a filter to compare two numbers and return the bigger one
```
\define gt(a, b) $a$ $b$ +[nsort[]last[1]remove[$b$]]
```
!! Remarks
* `a`, `b`' two number as input parameters
* `gt` filter will return `a`, if it is greater than `b`
Based on this idea, the below macro is developed to return the smaller number
```
\define lt(a, b) $a$ $b$ +[nsort[]first[1]remove[$b$]]
```
!! Remarks
* `a`, `b`' two number as input parameters
* `lt` filter will return `a`, if it is less than `b`
See [[Example 53|Example 53: Greater and Less Than Macro]]
A lot of wonderful css codes! Effects, overlays and amazing css tricks.
\define toc-caption()
<$set name="tv-wikilinks" value="no">
<$transclude field="caption">
<$view field="title"/>{{||$:/core/ui/ViewTemplate/tags}}
</$transclude>
</$set>
\end
\define toc-body(tag,sort:"",itemClassFilter,exclude,path)
<ol class="tc-toc">
<$list filter="""[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$] -[[$tag$]] $exclude$""">
<$vars item=<<currentTiddler>> path="""$path$/$tag$""" excluded="""$exclude$ -[[$tag$]]""">
<$set name="toc-item-class" filter="""$itemClassFilter$""" emptyValue="toc-item" value="toc-item-selected">
<li class=<<toc-item-class>>>
<$list filter="[all[current]toc-link[no]]" emptyMessage="<$link><<toc-caption>></$link>">
<<toc-caption>>
</$list>
<$macrocall $name="toc-body" tag=<<item>> sort="""$sort$""" itemClassFilter="""$itemClassFilter$""" exclude=<<excluded>> path=<<path>>/>
</li>
</$set>
</$vars>
</$list>
</ol>
\end
! Description
How to customize the `toc` macro to list tiddlers and their tags below?
```
<<toc solution>>
```
<<toc solution>>
;How to list all tiddlers with specific field name?
:Use the `has` filter operator with and without `field` suffix
Try this example filter
* `{{{ [all[]has[fieldname]] }}}` if the fieldname exists and contains a non blank value (e.g those input tiddlers in which field F has a non-empty value)
and use
* `{{{ [has:field[fieldname]] }}}` for field exist with value or empty (e.g those input tiddlers in which field F exists)
More information: https://tiddlywiki.com/prerelease/#has%20Operator
This is an intresting piece of code and has many points to learn.
```
\define newTiddlerButton()
<$button class=<<tv-config-toolbar-class>>
tooltip=<<iconTooltip>>>
<!-- Create new tiddler from tiddler titled "$param" -->
<$action-sendmessage
$message="tm-new-tiddler"
$param="$(templateTitle)$"
title="$(tiddlerTitle)$"
/>
<!-- Add as toolbar button -->
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
{{$(iconTitle)$}}
</$list>
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
<span class="tc-btn-text"><$text text="$(iconCaption)$"/></span>
</$list>
</$button>
\end
<$vars
iconCaption="Create a new tiddler from a template"
iconTitle="Template Icon Showing a Green Form Regions"
iconTooltip="Create new tiddler from 'User Standard Tiddler Template'"
templateTitle="User Standard Tiddler Template"
tiddlerTitle="Tiddler Title" >
<<newTiddlerButton>>
</$vars>
```
This is a simple plugin to convert any word in your text field starting with a predefined symbol into tags of that tiddler upon saving.
!! How it works
* Go to Control Panel > Appearance > Hashtag2tag and define a symbol. For eg: `#` or `&`
* Done!! Now you can create a new tiddler and type in your text with hashtags and save.
! How fields are hidden from editor?
* Fields are hidden from the editor if the tiddler with the title `$:/config/EditTemplateFields/Visibility/` plus the name of the field contains "hide". For example, `$:/config/EditTemplateFields/Visibility/title`
* The implementation details can be seen in the shadow tiddler $:/core/ui/EditTemplate/fields
! Example
If you want to hide the `note` field from editor
* create a tiddler titled `$:/config/EditTemplateFields/Visibility/note`
* Put `hide` inside its text (bodey)
! To see what fields are hidden
* Try the following in the "filter" tab of advanced search:
> `[all[shadows+tiddlers]prefix[$:/config/EditTemplateFields/Visibility/]]`
<$macrocall $name="wikitext-example-without-html"
src="""<$list filter="[has[myfilter]count[]]" variable=result >
<$reveal default="0" type="match" text=<<result>>>
NOTHING HERE FOLKS!
</$reveal>
<$reveal default="0" type="nomatch" text=<<result>>>
<<result>>
</$reveal>
</$list>
"""/>
Also:
* [[Mark S|https://groups.google.com/d/msg/tiddlywiki/W1AZ8kUM2g8/FFH27RysAQAJ]]
;How to hide part of text in a tiddler?
:There several ways, commenting, using css
!!Solution i
Using the html commenting
```
<!--
My text I want to hide
-->
```
!! Solution ii
Use style and classes in wikitext.
```
@@display:none;
This is hidden text
@@
```
!! Solution iii
Use html with inline styles.
```
<div style="display:none;">
This is hidden text.
</div>
```
!! Solution iv
Here is other hide stuff tricks
```
<$list filter="[{$:/config/debugmode}match[yes]]" variable=nul>
some stuff that will only show when in debug mode
</$list>
```
!! Solution v
Hide on demand (by Eric Shulman). This uses a button with reveal widget.
```
<$button class="tc-btn-invisible" popup=<<qualify "$:/temp/popup">>>
!heading text
</$button>
<$reveal type="nomatch" state=<<qualify "$:/temp/popup">> text="">
section content goes here
</$reveal>
```
<<docit>>
Also doc the recent Q&A by Eric on hidding the tag wrapper
url: https://groups.google.com/d/msg/tiddlywiki/yKiksOA-omg/8LoMoaBOAgAJ
This is a wonderful solution also by Eric:
https://groups.google.com/d/msg/tiddlywiki/Rjx1qERJ0VI/YIlf46mXAAAJ
;Is it possible to hide the username, time stamp and tags in printed tiddlers?
Put the following CSS syntax in a tiddler, tagged with `$:/tags/Stylesheet`:
```css
@media print {
.tc-subtitle {display:none;}
.tc-tags-wrapper {display:none;}
}
```
This small code will hide the tags wrapper and subtitle (includes username, modified date stam) from printing.
;How a table of contents can be displayed as tree like with connected colorful branches?
: It needs a custom TOC macro and stylesheet
[[List Tree]] has been developed by //twMat// a stylesheet to reshape a bullet list into tree like display. It can be used with the below customized macro from [[Mark S|https://groups.google.com/d/msg/tiddlywiki/g0W0mcy1cW0/adMBHO5_BAAJ]].
!! Customised TOC macro
Note that, the "toc2" is the macro you will need to create to get your tree like table of contents. Install the [[List Tree]] plugin if you haven't already.
Then create a new tiddler and tag it `$:/tags/Macro`. Put in the following contents:
```
\define toc-body2(tag,sort:"",itemClassFilter,exclude,path)
<ul class="list-tree">
<$list filter="""[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]""">
<$vars item=<<currentTiddler>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}} excluded="""[enlist<__exclude__>] -[<__tag__>]""">
<$set name="toc-item-class" filter=<<__itemClassFilter__>> emptyValue="toc-item" value="toc-item-selected">
<li class="xlist-tree">
<$list filter="[all[current]toc-link[no]]" emptyMessage="<$link><$view field='caption'><$view field='title'/></$view></$link>">
<<toc-caption>>
</$list>
<$macrocall $name="toc-body" tag=<<item>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>
</li>
</$set>
</$vars>
</$list>
</ul>
\end
\define toc2(tag,sort:"",itemClassFilter:" ")
<$macrocall $name="toc-body2" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> />
\end
```
!! Usage
To call the TOC with the title of the current tiddler, use:
```
<$macrocall $name="toc2" tag=<<currentTiddler>>/>
```
Create notes for slides (tiddlers tagged with slide)
; Release 5.1.24p
: Apr 26th, 2021
: url: https://kookma.github.io/TW-Scripts/
; Release 5.1.22p
: Mar 21st, 2020
: url: https://kookma.github.io/TW-Scripts/
; Release 5.1.21 (TW-Scripts Unleashead)
: Mar 21st, 202
: url: https://github.com/kookma/TW-Scripts/releases
; Release 5.1.18 (Initial idea)
: Nov 8th, 2018
More references with Tiddlywiki scripts
# Tobias Beer tb5: https://tobibeer.github.io/tb5/#Welcome
<<docit>>
```
Note that I tried an alternative to your "[<newTitle>] -[has[title]] -[[]]" filter, using "[<newTitle>!is[tiddler]]" instead, but it had the same problem.
```
;Checking if a plugin is installed and not disabled
:One partial solution is as below solution use `is[missing]` filter along with `lookup` in `$:/config/Plugins/Disabled/` tiddlers
!! Example
Check if the [[$:/plugins/tiddlywiki/codemirror]] is installed and is not disabled.
> <$macrocall $name="wikitext-example-without-html"
src="""{{{ [[$:/plugins/tiddlywiki/codemirror]!is[missing]] :filter[lookup:no[$:/config/Plugins/Disabled/]match[no]] }}}
"""/>
;Remarks
: This checks if the plugin tiddler is present as long as it has not been renamed.
: It checks whether the plugin has been disabled.
;Issues
This solution does not always work
* plugin installed but disabled when the wiki loaded, but later enabled (but still not active).
* plugin freshly installed but wiki has not been saved and reloaded.
<<docit>>
;Resources
* http://t5a.tiddlyspot.com/ (by Andrew Harrison)
*
*
;Backtic inside backticks
Tiddlywiki uses the <code>`backticks`</code> to create code as wikitext. Sometimes it is needed to have a backtic inside a code segment.
The solution is the use of double backticks to delineate a run of monospaced text. Using double backticks allows single backticks to occur in the intervening text.
!! Example
<<wikitext-example-without-html
src:"""`` A set of single `backticks` inside double backticks``
""">>
!! More info
See [[Wikitext formatting|https://tiddlywiki.com/#Formatting%20in%20WikiText]]
Assume the `My Alert Class Dictionary` data (dictionary) tiddler has the below content
```
primary:x
secondary:x
info:x
success:x
warning:x
danger:x
light:x
dark:x
```
How use a filter to list all indexes except `info` and `light`?
You can only do boolean subtract on an entire filter run -- not inside a run.
So this might work for the first part: `[[My Alert Class Dictionary]indexes[]addprefix[bg-]]`
If you just wanted to remove info and light, then maybe this:
` [[My Alert Class Dictionary]indexes[]!prefix[info]!prefix[light]addprefix[bg-]]`
As an example see below:
```
<$list filter="[[My Alert Class Dictionary]indexes[]!prefix[info]!prefix[light]addprefix[bg-]]" variable="alert-type">
<<alert type>><br>
</$list>
```
;When an `$edit-text` widget is tagged 'textarea' we get a multi-line resizable text editor, how to prevent/disable resizing textarea?
:Use CSS property
There’s a CSS property that lets you control resizability of text areas. This will disable resizing on all textareas:
```css
textarea {
resize: none;
}
```
If it is desired to disable resizing a specified textarea then wrap it in a div element as below
```css
.mycls textarea {
resize: none;
}
```
and use it as below
```
<div class="mycls">
<$edit-text tiddler="yourTid" field="your-field" tag="textarea"/>
</div>
```
This example shows how to rotate Svg images.
<<docit>>
<style>
.rt-180 svg {
transform: rotate(180deg);
fill:red;
}
.rt-45 svg {
transform: rotate(45deg);
fill:blue
}
</style>
* no rotation
:{{$:/core/images/copy-clipboard}}
* roatet 180 deg
:<span class="rt-180">{{$:/core/images/copy-clipboard}}</span>
* rotate 45 deg
:<span class="rt-45">{{$:/core/images/copy-clipboard}}</span>
<<docit>>
* On windows
https://drizin.io/installing-gitea-git-server-developed-in-go-in-windows/
The sidebar is generated like this:
```
<$list filter="[all[shadows+tiddlers]tag[$:/tags/SideBarSegment]!has[draft.of]]" variable="listItem">
<$reveal type="nomatch" state=<<config-title>> text="hide" tag="div">
<$transclude tiddler=<<listItem>> mode="block"/>
</$reveal>
</$list>
```
(See $:/core/ui/PageTemplate/sidebar).
\define applyTag()
<!-- first remove tag -->
<$list filter="[search:title[exmp065/data]tag[exmp065]]">
<$fieldmangler>
<$action-sendmessage $message="tm-remove-tag" $param="exmp065"/>
</$fieldmangler>
</$list>
<!-- then add tag -->
<$tiddler tiddler={{exmp065/state}}>
<$fieldmangler>
<$action-sendmessage $message="tm-add-tag" $param="exmp065"/>
</$fieldmangler>
</$list>
</$tiddler>
\end
<<docit>>
[[Read this and see it would be solved|https://groups.google.com/d/msg/tiddlywiki/cV1Gs0RV6Jg/XPspaCj2DAAJ]]
;How swith a tag among a set of tiddlers? Only one tiddler can have the tag at a time!
: The solution is to use `select` widget and an action macro
The below example demonstrate how to switch a tag among set of tiddlers. The code has two parts
# select widget to choose one tiddler among set of tiddlers
# action macro to set tag to the selected tiddler and remove it from previous tiddler
Here for this example, tag `exmp065` between three tiddlers is switched. Only one tiddler has the tag at a time. The action macro called `applyTag` is as below
```
\define applyTag()
<!-- first remove tag -->
<$list filter="[search:title[exmp065/data]tag[exmp065]]">
<$fieldmangler>
<$action-sendmessage $message="tm-remove-tag" $param="exmp065"/>
</$fieldmangler>
</$list>
<!-- then add tag -->
<$tiddler tiddler={{exmp065/state}}>
<$fieldmangler>
<$action-sendmessage $message="tm-add-tag" $param="exmp065"/>
</$fieldmangler>
</$list>
</$tiddler>
\end
```
<$macrocall $name="wikitext-example-without-html"
src="""<$select
tooltip="select a tiddler"
tiddler="exmp065/state"
field="text"
actions=<<applyTag>>
>
<$list filter="[search:title[exmp065/data]]" variable="tid">
<option value=<<tid>> > <<tid>> </option>
</$list>
</$select>
"""/>
;How display a tiddler in sidebar without modifying it or tagging it with?
:Use a tab with input to select and transclude the tiddler
!! Example
The below tiddler creates a sidebar tab for displaying tiddler temporarily on the sidebar.
> <<code-link "exmp116/sidebar">>
* To give a try, simply open [[exmp116/sidebar]] and tag it with `$:/tags/Sidebar`. A new sidebar tab called `Temporary` will appear in the sidebar.
* Enter the title of a tiddler and it will be shown under the edit textbox with a link to the displayed tiddler.
;Remarks
: the $edit-text widget gets the tiddler title from the user
: the $list widget checks if the entered title is existed
: if entered title is existed, a link to tiddler with its contentent will be displayed
;What is the simple method to add an image, logo to sidebar"?
:The clean way is to create or add the content to a tiddler tagged with `$:/tags/SideBarSegment`
!! Solution
* just use the system tag `$:/tags/SideBarSegment` to introduce any new element like your image to the sidebar
* click on a tag pill for <<tag $:/tags/SideBarSegment>> to change the order.
This will just add the logo and leave the [[$:/SiteTitle]] intact, but if you then want to hide the title, change only its display in the sidebar (remove `$:/tags/SideBarSegment` tag on $:/core/ui/SideBarSegments/site-title), since the site title is used to construct the save filename, the tab title and more "leave it alone).
<<alert info "It is possible to add image through [[Info tab|$:/core/ui/ControlPanel/Info]] from control panel. But this is not the recommended method!">>
; How show tag wrapper in edit mode in tiddler info panel to add remove tags without editing the tiddler?
: This require editing the core tiddlers
!! Solution
* Put the below code in a tiddler
* Press the `Make Changes` button
<$macrocall $name="wikitext-example-without-html"
src="""<$button>
<$action-listops $tiddler="$:/core/ui/EditTemplate/tags" $tags="+[append[$:/tags/TiddlerInfo]]"/>
<$action-setfield $tiddler="$:/core/ui/EditTemplate/tags" caption="Edit Tags"/>
<$action-setfield $tiddler="$:/config/TiddlerInfo/Default" text="$:/core/ui/EditTemplate/tags"/>
<$action-setfield $tiddler="$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info" text="show"/>
Make Changes
</$button>
"""/>
<<alert danger "''Important'': This solution makes changes in core tiddler which is not recommended!">>
A safer solution is to use a custom tiddler as below
* create a new tiddler with a proper title e.g `myEditTags-From-InfoPanel`
* tag it with `$:/tags/TiddlerInfo`
* in the text field: `{{$:/core/ui/EditTemplate/tags}}`
* add caption field with content: `Edit Tags`
\define fluidSidebar()
<$action-setfield $tiddler="$:/themes/tiddlywiki/vanilla/metrics/storywidth" $field="text" $value={{{ [[$:/themes/tiddlywiki/vanilla/metrics/storywidth2]get[text]addsuffix[px]] }}} />
<$action-setfield $tiddler="$:/themes/tiddlywiki/vanilla/metrics/storyright" $field="text" $value={{{ [[$:/themes/tiddlywiki/vanilla/metrics/storywidth2]get[text]addsuffix[px]] }}} />
<$action-setfield $tiddler="$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth" $field="text" $value={{{ [[$:/themes/tiddlywiki/vanilla/metrics/storywidth2]get[text]subtract[86]addsuffix[px]] }}} />
\end
\define fixedSidebar()
<$action-setfield $tiddler="$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth" $field="text" $value={{{ [[$:/themes/tiddlywiki/vanilla/metrics/storywidth2]get[text]addsuffix[px]] }}} />
\end
\define setTiddlerwidth()
<$range tiddler="$:/themes/tiddlywiki/vanilla/metrics/storywidth2" min="600" max="1000" default={{{ [[$:/themes/tiddlywiki/vanilla/metrics/storywidth]removesuffix[px]] }}} increment="1" actions=<<myactions>>/>
{{$:/themes/tiddlywiki/vanilla/metrics/storywidth2}}
<$set name=SidebarLayout tiddler="$:/themes/tiddlywiki/vanilla/options/sidebarlayout" field=text>
<$reveal type="match" text=<<SidebarLayout>> default="fixed-fluid")>
<$button actions=<<fluidSidebar>>>Set</$button>
</$reveal>
<$reveal type="match" text=<<SidebarLayout>> default="fluid-fixed")>
<$button actions=<<fixedSidebar>>>Set</$button>
</$reveal>
</$set>
\end
<<setTiddlerwidth>>
<<docit>>
<<show-macro>>
<<docit>>
How to build a settings panel for a plugin
https://groups.google.com/d/msg/tiddlywikidev/DntYRuumXBM/ijTOCX3eAgAJ
;Is there any simple way to provide a link to download a complete wiki?
: the standard html syntax provide such feature
Using standard HTML syntax:
<$macrocall $name="wikitext-example-without-html"
src="""<a href="#" download="targetname.html">
download this file
</a>
"""/>
;Notes
* The "targetname.html" is a ''suggested'' filename for saving the downloaded file. Some platforms may ignore this value and assign their own default filename.
* If your browser is configured to "ask for filename", you will get a platform-specific dialog box that will allow you to change the filename and/or the folder in which the file will be stored.
* Some older browser versions do not support use of the "download" attribute. See https://caniuse.com/#search=download for more info.
;Important
: This will not save recently edited and unsaved tiddlers.
<<alert info "Tiddlywiki provides more sophisticated procedures for dowloading a customized selection of wiki file. See [[download empty|https://tiddlywiki.com/prerelease/#Empty%20Edition]] and [[tm-download-file|https://tiddlywiki.com/prerelease/#WidgetMessage%3A%20tm-download-file]]">>
This is belong to Administration Tools category.
;Tiddlers in story river are displayed by title, how use caption where it is available?
: Use a customized `$:/core/ui/ViewTemplate/title` tiddler
!! Solution
# Open the [[$:/AdvancedSearch]] by clicking on the magnifying glass icon next to the sidebar search input field
# Select the "Filter" tab
# Enter `$:/core/ui/ViewTemplate/title` in the AdvancedSearch input field
# Click on the resulting link to view [[$:/core/ui/ViewTemplate/title]]
# Press the edit button
# Change the line as described below <div>
```
<$view field="title"/>
```
with this:
```
<<toc-caption>>
```
</div>
# Press the done button
<<alert danger "This solution modifies a core tiddler, which is not recommended!">>
;Reamrks
There is another method wich uses a small viewtemplate and shows caption or alias field instead of title in the story river. Have a look at [[Aliases|http://aliases.tiddlyspot.com/]] by Mat von TWaddle.
<$macrocall $name="wikitext-example-without-html"
src="""<style>
.exp-truncate {
width: 250px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
</style>
<div class="exp-truncate">
This is a test and my words are longer than 20px width,
</div>
"""/>
# Install the Firefox addon from https://github.com/buggyj/tiddlyclip/releases
# Install the TW plugin from https://github.com/buggyj/tiddlyclip-plugin/releases
# User instruction can be found here http://tiddlyclip.tiddlyspot.com/
* It seems the FF extension page has not the latest version
* There is a Chrome addon but not recommended as every time you start chrome a warning is appeared
Some resources that might be helpful for writting new plugins in Tiddlywiki:
* https://tiddlywiki.com/#Plugins contains a brief explanation of what a plugin actually is, and how it works
* https://tiddlywiki.com/dev/#Developing%20plugins%20using%20Node.js%20and%20GitHub explains how to create plugins under Node.js
* https://tiddlywiki.com/dev/#How%20to%20create%20plugins%20in%20the%20browser is a brief guide to creating plugins in the browser
* https://github.com/Jermolene/TiddlyWiki5/tree/master/plugins/tiddlywiki is a list of the official core plugins. Good simple examples include “blog”, “comments” and “help"
!!! Tinka plugin packager
<<<
The Tinka plugin provides the ability to create and modify plugins in the browser, without requiring the use of Node.js.
See https://github.com/TinkaPlugin/Tinka for the GitHub repo, and demo page at https://tinkaplugin.github.io/
<<<
Chris Hunt did a nice walkthrough a few years ago:
http://cjhunt.github.io/
Bonus - it’s made with v5.0.7, which now seems ancient. But not much has changed since then, so I’d expect the material to still work.
Alternatively, you could read through some of the core widgets in reverse order of complexity.
https://github.com/Jermolene/TiddlyWiki5/tree/master/core/modules/widgets
The “text" widget is a good place to start; it just renders a string of text provided as an attribute:
https://github.com/Jermolene/TiddlyWiki5/blob/master/core/modules/widgets/text.js
The “codeblock” is marginally more complex: it renders a `<code>/<pre>` pair to contain it’s rendered children:
https://github.com/Jermolene/TiddlyWiki5/blob/master/core/modules/widgets/codeblock.js
The “vars” widget introduces variable assignments:
https://github.com/Jermolene/TiddlyWiki5/blob/master/core/modules/widgets/vars.js
The “count” widget is a good example of a simple widget with a slightly more complicated refresh strategy: it only refreshes itself if the count has changed:
https://github.com/Jermolene/TiddlyWiki5/blob/master/core/modules/widgets/count.js
Finally, the “keyboard” widget is a simple example of a widget with an event handler:
https://github.com/Jermolene/TiddlyWiki5/blob/master/core/modules/widgets/keyboard.js
How to list (with list-links) everything tagged with "myTag" that also begins with the current year and month (specifically in the format "YYYY.0MM.")
* Solution
<<<
Use a set widget and first store your desired date into a varaibale. Here the current year and month can be generated using the `now` macro as `<<now YYYY.0MM.>>`. Other date formats can also be used.
```
<$set name="mydate" value=<<now YYYY.0MM.>> >
<<list-links "[tag[myTag]prefix<mydate>]">>
</$set>
```
<<<
The new html5 date attribute example
<style>
.user-form { padding:20px; }
.user-form .field { padding: 4px; margin:1px; background: #eee; }
.user-form .field label { display:inline-block; width:120px; margin-left:5px; }
.user-form .field input { display:inline-block; }
</style>
<form class="user-form">
<div class="field">
<label for="firstname">First Name:</label>
<input name="firstname" type="text" size="50" autofocus />
</div>
<div class="field">
<label for="lastname">Last Name:</label>
<input type="text" name="lastname" size="50" />
</div>
<div class="field">
<label for="birthdate">Birth Date:</label>
<input type="date" name="bdate" size="50" />
</div>
<form>
The HTML Details Element (`<details>`) creates a disclosure widget in which information is visible only when the widget is toggled into an "open" state. A summary or label can be provided using the `<summary>` element.
<<vspace 1cm>>
<<wikitext-example-without-html
src:"""
<details>
<summary>Details</summary>
Something small enough to escape casual notice.
</details>
""">>
!! The embed tag
The HTML `<embed>` element embeds external content at the specified point in the document. This content is provided by an external application or other source of interactive content such as a browser plug-in.
[[Mozilla MDN|https://developer.mozilla.org/en-US/docs/Web/HTML/Element/embed]]
!! Syntax
The below syntax is used to embed contents
```
<embed src="" type="MIME type" height="" width="">
```
The MIME type pecifies the media type of the embedded content
!! MIME types
A Multipurpose Internet Mail Extensions (''MIME'') type is a standard that indicates the nature and format of a document, file, or assortment of bytes. See [[Mozilla MDN|https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types]].
|!Type|!Description|!Example of typical subtypes|
|text|Any document that contains text and is theoretically human readable|text/plain, text/html, text/markdown|
|image|Any kind of image. Videos are not included, though animated images (like animated GIF) are described with an image type.|image/gif, image/png, image/jpeg, image/bmp, image/webp, image/vnd.microsoft.icon|
|audio|Any kind of audio file|audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav|
|video|Any kind of video file|video/webm, video/ogg|
|application|Any kind of binary data, especially data that will be executed or interpreted somehow.|application/javascript, application/octet-stream, application/pkcs12, application/vnd.mspowerpoint, application/xhtml+xml, application/xml, application/pdf|
See [[Example 14|Example 14: Embeding Media]]
The below example shows some html5 form features.
<<vspace 1cm>>
<<wikitext-example-without-html
"""<style>
form.form-example {
display: table;
background: #eee;
padding:15px;
}
div.form-example {
display: table-row;
}
.form-example label, .form-example input {
display: table-cell;
margin-bottom: 5px;
}
.form-example label {
padding-right: 10px;
}
</style>
<form action="" method="get" class="form-example">
<div class="form-example">
<label for="name">Enter your name: </label>
<input type="text" name="name" id="name" required>
</div>
<div class="form-example">
<label for="email">Enter your email: </label>
<input type="email" name="email" id="email" required>
</div>
<div class="form-example">
<input type="submit" value="Subscribe!">
</div>
</form>
""">>
https://ooktech.com/jed/ExampleWikis/LinkCSSStuff/
* search and replace
* add remove tags
* good css
https://icones.js.org/
Icon Explorer with Instant searching, powered by Iconify
Features
Instant Fuzzy Searching - all are done locally, no web queries!
The Bag - select your icons and pack them into a ready-to-use icon font!
svg-packer was born from this XD
Copy the usage scripts
SVGs direct download
Mobile friendly
Collection bookmarks
Categories filters
Dark mode
;Repo
:https://github.com/antfu/icones
;Developer
: Anthony Fu a GitHub trending developer https://github.com/antfu?tab=repositories
\define if(fieldname test do)
<$list filter="[is[current]field:$fieldname$[$test$]]" variable="null">
$do$
</$list>
\end
The below macro proposed by Tony in [[Forum|https://groups.google.com/d/msg/tiddlywiki/te5Nbrm9c2c/SnGJDUasBQAJ]] and modified by [[Mark S|https://groups.google.com/d/msg/tiddlywiki/te5Nbrm9c2c/QfE1uZDKBQAJ]]
!!! Code
```
\define if(fieldname test do)
<$list filter="[is[current]field:$fieldname$[$test$]]" variable="null">
$do$
</$list>
\end
```
It can do something against the contents of a field in the currentTiddler.
* `fieldname`: the name of field in current tiddler
* `test`: the content of filed
* `do`: string of what to be done
!!! ''Example''
```
<<if note "Hi Mohammad" do:"""
Hello, your note field contains Hi Mohammad!
* Hi
* Mohammad
""">>
```
Results in:
<<<
<<if note "Hi Mohammad" do:"""
Hello, your note field contains Hi Mohammad!
* Hi
* Mohammad
""">>
<<<
This macro offers a solution for simple if-then-else text generation.
It presents some added value compared to the reveal widget: it accepts variables as well as transclusions and it can show an error message.
\define if(filter,ifyes,ifno)
<$list filter="""$filter$ +[limit[1]]""" name=act emptyMessage=<<$ifno$>>>
<<$ifyes$>>
</$list>
\end
\define ifyes() YES!
\define ifno() NO!
The below simple macro can do different things based on the filter content. It uses a list widget, if the filter run has some output then the `ifyes` part is run if the filter result is empty then the `ifno` part will be run.
!!! Input parameters
* `filter`: a standard TW filter
* `ifyes`: a macro to be run if filter output is NOT empty
* `ifno`: a macro to be run if filter output IS empty
!!! Code
```
\define if(filter,ifyes,ifno)
<$list filter="""$filter$ +[limit[1]]""" emptyMessage=<<$ifno$>>>
<<$ifyes$>>
</$list>
\end
\define ifyes() YES!
\define ifno() NO!
```
!!! Example
```
<<if "[title[GettingStarted]] +[has[title]]" ifyes ifno>>
```
I have a plain text tiddler, that contains a HTML page including head and body, javascript, including libraries etc... How is it possible to load it through iframe?
!! Example
The [[Example 32: Test.html]] contains HTML page. Using iframe as below it is possible to laod it.
<<wikitext-example-without-html
src:"""<iframe src={{{ [[Example 32: Test.html]get[text]encodeuricomponent[]addprefix[data:text/html;charset=utf-8,]] }}} width=100% height=300/>
""">>
;Assume some tiddlers have a filed containing an image address, how to display the image in another tiddlers?
:Use a macro with `$image` widget to create the required construct.
!! Example
Assume tiddler [[exmp134/data/tid01]] has a field named `structure` contains the web address of an image. Write a macro to transclude the image in any other tiddler.
><<code-link exmp134/macro/tid02>>
Which results in
>{{exmp134/macro/tid02}}
;Remarks
:The image source is constructed in macro `showStructure`
:The macro actually substitutes the tiddler name in `{{$tid$!!structure}}` to construct a dynamic transclusion from variables.
\define image(tiddler, width:"128")
<$tiddler tiddler=<<__tiddler__>>>
<$image source={{!!title}} width=$width$ tooltip={{!!caption}}/>
</$tiddler>
\end
! Image with tooltip
```
<<image pig.png 64>>
```
Hover mouse on image
<<image pig.png 64>>
TiddlyWiki //can// import JSON files, but only if the 'records' in the file contain certain field names. Most important, each JSON record must have a uniquely-valued `title` field. This is used to create the corresponding tiddler. The remaining field names in the JSON record can be anything you like. However, keep in mind that certain field names have special meanings in the TWCore system.
Specifically, `title`, `text`, `tags`, `created`, `creator`, `modified` and `modifier` should be considered not be used as general-purpose field names.
Also note that the TWCore's JSON processing does ''not'' handle complex nested JSON structures... just //plain// name/value pairs within a simple list of top level objects.
Here's an example of a simple JSON file that can be imported to create tiddlers:
@@width:60%;
<pre>
[
{
"title": "TiddlerTitleGoesHere",
"text": "Tiddler content here",
"tags": "Tiddler tags here",
"foo": "This is a field named foo",
"bar": "This is a field named bar"
},
{
"title": "AnotherTitle",
"text": "Tiddler content here",
"tags": "Tiddler tags here",
"foo": "This is a field named foo",
"bar": "This is a field named bar"
}
]
</pre>
@@
<<docit>>
Which Tiddlywiki operator is inclusive?
By inclusive I mean all the input titles meet the filter conditions.
For example I want to check if all tiddlers tagged with myTag has the word xx in their title?
Or check if all tiddlers tagged with myTag has the field myfield?
So the filter is empty if only one input title does not match the criteria.
```
<$list filter="[tag[myTag]has[myfield]??"> ...
```
In the same manner we can think about any filter. This now works by limit[1] means if only one input title meets the criteria!
;Ref
:https://groups.google.com/d/msg/tiddlywiki/my9YIZEPGng/gekJsrw7BwAJ
:https://groups.google.com/d/msg/tiddlywiki/GfHh9f39YHA/VH5GuALqAAAJ
;Does Tiddlywiki exports tiddlers as bookmarklet?
:Yes, Tiddlywiki macros can be used to create [[bookmarklet|https://en.wikipedia.org/wiki/Bookmarklet]].
;How create a bookmarklet to inject tiddlers into a Tiddlywiki?
:The below macros create a bookmarklet with tiddlers selected through a filter.
!! Macros
The below code contains two macros:
* the main macro `save-as-bookmarklet`
* the helper macro `save-as-bookmarklet-href`
<<code exmp100/macro/bookmarklet>>
!!How to use
*<div>
In a wiki you want to create bookmarklet call the macro `save-as-bookmarklet` with desired title and filter like
<$macrocall $name="wikitext-example-without-html"
src="""<<save-as-bookmarklet title:"MyTiddlers" filter:"[tag[HelloThere]]">>
"""/>
This will create a bookmarklet link
</div>
* Drag the bookmarklet link to the browser bookmark bar to install it and create a new bookmark. Note the title of bookmark will be the same as you selected at previous step
* Visit another TiddlyWiki. Clicking the bookmarklet will inject the payload tiddlers into the target wiki.
The other name for this resource is "Tiddlywiki, the missing manual". This book is not finished, but has good stuffs for new TW users.
:See also this [[forum discussion|https://groups.google.com/d/msg/tiddlywiki/sEGUFWjE5Oc/3LKKM224t4YJ]]
;How to find the intersection of two filter run?
: Use the [[Venn diagram|https://en.wikipedia.org/wiki/Venn_diagram]]
!! Example i
```
\define f1() [enlist<x>]-[enlist<y>]
\define f2() [enlist<y>]-[enlist<x>]
<$vars
x="1 2 3 4 5"
y= "2 7 9 3"
>
<$list filter="[enlist<x>] [enlist<y>] -[subfilter<f1>] -[subfilter<f2>]" variable=item>
<<item>>
</$list>
</$vars>
```
!! Example ii
This solution can be used for any filter run, but may be not as efficient as above solution, because it has many macro call.
```
\define intersect-item(filter, item)
<$list filter="[<__item__>] -[subfilter<__filter__>]" variable="result" emptyMessage=<<__item__>> >
</$list>
\end
\define intersect(flt1, flt2)
<$list filter=<<__flt2__>> variable=item >
<$macrocall $name="intersect-item" filter=<<__flt1__>> item=<<item>> />
</$list>
\end
<$vars
x="7 8 -1 -3 9 11"
y= "1 2 3 4 5 6 7 8 9"
>
<$macrocall $name=intersect
flt1="[enlist<x>]"
flt2="[enlist<y>]"
/>
</$vars>
```
<<alert warning "''Note'': The `+run` filter in Tiddlywiki does not implement a real AND logical operator.">>
''Introduction to Tiddlywiki'' is a presentation made by Jeremy Ruston. It uses a new theme
; How to list all properties (index/value pairs) of a DataTiddler into a table?
This example is similar to [[Listing DataTiddler Properties]] and use the same DataTiddler.
<$macrocall $name="wikitext-example-without-html"
src="""<table>
<tr>
<th>index</th>
<th>value</th>
</tr>
<$set name="data" value="exmp039/acronyms/web">
<$list filter="[<data>indexes[]sort[title]]">
<tr>
<td>{{!!title}}</td>
<td><$transclude tiddler=<<data>> index=<<currentTiddler>>/></td>
</tr>
</$list>
</$set>
</table>
"""/>
;How to develop a JavaScript macro?
There are two separate cases here:
# Being able to use custom javascript code to do calculations and other logic
# Loading the code "on-the-fly"
As has been noted, (2) is problematic from a security standpoint... so let's just ignore that and focus on (1)...
Fortunately, the solution is //already provided// by the TWCore. You can use
https://tiddlywiki.com/dev/#JavaScript%20Macros
to define custom javascript functions that are loaded during startup processing (just like plugins).
Then, after startup, these javascript functions can be invoked from within tiddler content using the standard macro syntax (e.g., `<<myMacro arg1:"foo" arg2:"bar">>` or `<$macrocall $name="myMacro" ... />`.
In addition, just like the definition of regular in-line macros (created using `\define foo(...)`), a javascript macro's "job" is simply to generate and return content for further rendering by the TWCore engine.
A good example of a simple javascript macro can be found here:
https://tiddlywiki.com/#%24%3A%2Fcore%2Fmodules%2Fmacros%2Fnow.js
This code shows the definition of the TWCore's `<<now>>` macro, which accepts one optional parameter -- a datetime format -- and returns the corresponding datetime text as it's result.
In addition to the `<<now>>` macro, there are several other javascript macros of varying complexity that are part of the TWCore. Use <<advanced-search>> to search the *shadow* tiddlers for "core/modules/macros" and you will see about a dozen results for you to study.
Let's easily make a website using Tiddlywiki
<<docit>>
;Ref:
* GitHub source code (https://github.com/Federatial/website)
* Single page builder (https://xememex.com/federatial/)
* Group discussion (https://groups.google.com/d/msg/tiddlywiki/nbT4Z4ai5OQ/zw0v8vMxEgAJ)
<<<
This is a [[Quine|https://en.wikipedia.org/wiki/Quine_(computing)]]
* It's a Blog.
* It's interactive.
* It's all in one file.
* It's a [[Time Manager|Chandler]].
* It contains a complete IDE.
* It contains several programs.
* The user can modify the content.
* Save this file and run off-line in any browser
* It's a [[TiddlyWiki|https://tiddlywiki.com/]].
<<<
<<alert success """Note that the ''first and small'' revision is stored in: http://keeboord.tiddlyspot.com/""">>
<<alert danger "The keyboard shortcuts are now part of Tiddlywiki 5.1.19">>
\define listAllKeywords()
<$list filter="[each[keywords]get[keywords]]">
<$text text=<<currentTiddler>>/>
</$list>
\end
Search in keywords <$edit-text tiddler="$:/temp/keyword-stats" tag=input default=""/>
<$wikify name=allkeys text=<<listAllKeywords>> >
<small>All keywords: <$count filter="[enlist<allkeys>]"/></small>
<$list filter="[enlist<allkeys>sort[]search{$:/temp/keyword-stats}]">
<b><$text text=<<currentTiddler>> /></b>
<ol>
<$list filter="[contains:keywords<currentTiddler>]">
<li><$link/></li>
</$list>
</ol>
</$list>
</$wikify>
A general experimentation wiki
To access all the mature plugins by [[Kookma|https://github.com/kookma]], do as below
!! How to use (install)
<<<
# Simply drag and drop [[$:/config/KookmaPluginLibrary]] to your wiki
# Open $:/ControlPanel in your wiki
# Goto Plugins tab
# Click on the ''Get more plugins'' button
# Under ''Kookma Plugin Library'' click Open plugin library
# In the list of plugins appeared, click install on those plugins you like to install in your wiki
<<<
!! Reference
* Demo: https://kookma.github.io/TW-PluginLibrary/
* Code: https://github.com/kookma/TW-PluginLibrary
;keywords
:Horizontal story river, theme, Tiddlyresearch
Latest solutions added to TW-Scripts within last 7 days.
<<list-links "[tag[solution]days:created[-7]!sort[created]]" type:"ol">>
<$list filter="[!is[system]tag[learning]sort[title]]">
<$link to=<<currentTiddler>> tooltip="Custom tooltip"><$text text=<<currentTiddler>>/></$link><br>
</$list>
!! General references
<<<
;Thomas Elmiger (Numbered outline)
:[[https://tid.li/tw5/numbers.html]]
;Menu and Controls and Sidebar
:http://smarties.tiddlyspot.com/
;Jed Carty (Wiki Reference)
:http://inmysocks.tiddlyspot.com/
;Formulas for Tiddlywiki
:https://evanbalster.com/tiddlywiki/formulas.html
;DarJS (A nice plugin take a look)
:https://rawgit.com/abesamma/NoSQL-for-DarJS/master/DarJS.html
;TWaddle (A collection of ideas)
:http://twaddle.tiddlyspot.com/#Appetizer%20TiddlyWikis:%5B%5BAppetizer%20TiddlyWikis%5D%5D
;shortcut keys (access keys)
:https://groups.google.com/forum/#!topic/tiddlywiki/yQx3XZwkSQc
;MyMenu
:https://tiddlywiki.psat.com.au/mymenus/
;Design Write Studio
:https://designwritestudio.updog.co/
;NoteSlam by David Graford
:http://giffmex.org/tw.adaptations/noteslam.online.html
;Outliner storyview (BTC)
:http://outlineproto.tiddlyspot.com/
;Topbar and Toolbar
:http://tw5toolbar.tiddlyspot.com/
<<<
!! Macro in tiddlywiki
<<<
;Simple example of macro
:https://groups.google.com/forum/#!topic/tiddlywiki/g1qp3_Ln-J4
<<<
!! Lists and list widget
<<<
;Jeremy notes on list
:https://groups.google.com/d/msg/tiddlywiki/2Bl9rx05jqU/nzn5p7KAs4IJ
<<<
!! Themes
<<<
;Materaila theme
:http://j.d.material.tiddlyspot.com/
<<<
; Why linebreaks cause filter not work?
Joe Armstrong asked why the below code with pattern A works, but with pattern B does not work?
Why linebreaks cause the code stop working?
* Pattern A
```
<$set name="username" value={{$:/status/UserName}} emptyValue="(anonymous)">
<$set name="target" filter="[<currentTiddler>]">
<$action-createtiddler
$basetitle={{{ [[Comment by ']] +[addsuffix<username>] +[addsuffix[' on ' ]] +[addsuffix<currentTiddler>] +[addsuffix[']] }}}
role="comment" list=<<target>> text="" edit-mode="yes"/>
</$set>
</$set>
```
*Pattern B
```
<$set name="username"
value={{$:/status/UserName}}
emptyValue="(anonymous)">
<$set name="target"
filter="[<currentTiddler>]">
<$action-createtiddler
$basetitle={{{ [[Comment by ']]
+[addsuffix<username>]
+[addsuffix[' on ' ]]
+[addsuffix<currentTiddler>]
+[addsuffix[']] }}}
role="comment"
list=<<target>>
text=""
edit-mode="yes"/>
</$set>
</$set>
```
!! Answer
* The first pattern is not readable and error prone.
* The second pattern is readable.
* Although filters accept newlines as whitespace, the filtered attribute parser does not accept newlines. Thus this example does not work unless the newline is removed.
See [[GitHub Ticket 3692|https://github.com/Jermolene/TiddlyWiki5/issues/3692]]
; How to open a PDF file from inside TW and go to a specific page
```
[ext[your-label|pdf-file-address#page=pg-number]]
```
* Example
```
[ext[Math book|archive\books\math.pdf#page=4]]
```
See demos:
* Simple demo: [[Example 26|demo/exmp026/link-pdf-to-page]]
* Elegant demo (some data are stored in fields) [[Use of tiddler path|demo/exmp026/link-pdf-use-tiddlerpath]]
Links are small tiddlers act as bookmarks for intresting materials over the internet.
<span style="float:right">{{Create New Link}}</span>
;How to list all DataTiddlers (dictinary tiddlers) in the current wiki?
:Use the field `type`
<$macrocall $name="wikitext-example-without-html"
src="""><ol><$list filter="[field:type[application/x-tiddler-dictionary]]">
<li><<currentTiddler>></li>
</$list></ol>
"""/>
!! Remarks
* The `ol` html tag creates an ordered list
* `field:type[]` is a filter retrieves tiddlers with soecified type, e.g. `[field:type[application/x-tiddler-dictionary]]` gets all tiddler of type dictionary.
;How to list all fields in a wiki and display the number of tiddlers with that field?
:Use the `fields` filter operator to get the all fields and then use a nested list widget to count them.
!! Solution
The below code is one possible solution.
```
<$list filter="[all[tiddlers+shadows]fields[]sort[]]" variable="field">
<$list filter="[all[tiddlers+shadows]has:field<field>count[]]" variable="count">
<<field>> : <<count>> <br/>
</$list>
</$list>
```
!! Remarks
* The `[all[tiddlers+shadows]fields[]sort[]]` in the first `$list` widget retrieves
** fields from all tiddlers
** and sort them
* The second `list` widget with `[all[tiddlers+shadows]has:field<field>count[]]` filter
** finds tiddlers with specific field name (`has:field<field>`)
** and counts it using `count[]`
!! Example
The below example displays all fields in this wiki (TW-Scripts).
<$macrocall $name="wikitext-example-without-html"
src="""<$list filter="[all[tiddlers+shadows]fields[]sort[]]" variable="field">
<$list filter="[all[tiddlers+shadows]has:field<field>count[]]" variable="count">
<<field>> : <<count>> <br/>
</$list>
</$list>
"""/>
;How to use a `select` widget to show all `fields` in the current TW?
# Use a `list` widget with filter `fields[]sort[]` to loop in all available fileds
# Exclude shado and system tiddlers by `!is[shadow]!is[system]` filter
# Use option to create list of items
<$macrocall $name="wikitext-example-without-html"
src="""><$select field="field" tiddler="$:/temp/exmp034" default="">
<option value="">*any</option>
<$list filter="[!is[shadow]!is[system]fields[]sort[]]" variable="field">
<option value=<<field>>><<field>></option>
</$list>
</$select>
>You have selected the: ''{{$:/temp/exmp034!!field}}''
"""/>
Show all system tiddlers that you have created in the last x days!
<$macrocall $name="wikitext-example-without-html"
src="""
<<list-links "[all[tiddlers+shadows]prefix[$]days[-2]limit[10]]">>
"""/>
;How to list all tiddlers modified in the last x days?
: Use `days` operator.
As described in [[Days Operator|https://tiddlywiki.com/#days%20Operator]]
Select tiddlers where a specified date field (default "modified") is within a specified date range. Time portion is ignored.
!! Example i
List all tiddlers tagged with `solution` and ''modified'' within the last two days.
<$macrocall $name="wikitext-example-without-html"
src="""><$list filter="[tag[solution]days[-2]!sort[modified]]">
</$list>
"""/>
!! Example ii
List all tiddlers tagged with `solution` and ''created'' within the last two days.
<$macrocall $name="wikitext-example-without-html"
src="""><$list filter="[tag[solution]days:created[-2]!sort[created]]">
</$list>
"""/>
!! Remarks
* The last example only shows newly created tiddlers tagged with //solution//
* Note to the `days:created[-2]` and the `created` suffix.
* Compare the two examples, one list recent ''modified'' and the other lists recent ''created'' tiddlers tagged with //solution//.
For more information see [[days operator|https://tiddlywiki.com/#days%20Operator]]
; List all tiddlers with no hardlink?
A hard link means explicitly link to other tiddlers using `[[target address]]`
!! Example
The below example list tiddlers with no hradlink and limits the result to the first ten outputs
<$macrocall
$name="wikitext-example-without-html"
src="""><$list filter="[all[tiddlers]!is[system]] :filter[links[]count[]match[0]] +[limit[10]]" >
</$list>
""" />
;Remarks
: The filter has three parts
: The first part lists all non-system tiddlers `[all[tiddlers]!is[system]]`
: The second part `filter[links[]count[]match[0]]` uses the new `:filter` operator in Tiddlywiki 5.1.23 to list all tiddlers from part one which have no hard link
: The last part `[limit[10]]` limits the result to maximum 10 outputs
;How all tiddlers their title started with today date cane be listed and transcluded?
: The <<mono now>> macro can be used with a <<mono perfix>> operator as below:
```
<$set name="today" value= <<now YYYY-0MM-0DD>> >
<$list filter="[prefix<today>]">
<$view field="title"/><br>
<$transclude /><br>
</$list>
<$set>
```
;How one can list all tiddlers have common fields?
:Common field here means a field all tiddlers have it. There is no direct operator to return common fileds and it needs nested loop.
!! Example
* Consider you have several tiddlers all tagged with `myTag`
* These tiddlers have different fields like `fa`, `fb`, `fc`, `fd`, etc...
* Not all of them have all above fields But all of them have common fields means all have for example `fb`, and `fd`
* How one can list and display the common fields only? (here `fb`, and `fd`)
!!Code
The below code implements the above example.
<$macrocall $name="wikitext-example-without-html"
src="""<$vars tiddlerCount={{{ [tag[myTag]count[]] }}}>
<$list filter="[tag[myTag]fields[]]" variable="thisField">
<$vars fieldCount={{{ [tag[myTag]has:field<thisField>count[]] }}}>
<$reveal default=<<fieldCount>> type="match" text=<<tiddlerCount>>>
<<thisField>>
</$reveal>
</$vars>
</$list>
</$vars>
"""/>
!! Remarks
* The first $vars gets the number of tiddlers tagged with `myTag`
* The first $list retrives all the fileds in selected tiddlers here all tiddlers tagged with `myTag`
* The second $vars counts the number of tiddlers have the `thisField` which refer the fileds retrived one by one in first $list
* The $reveal compare the total number of tiddlers and the number of tiddlers have `thisField`, if they are equal the field is shown
; How to list all tiddlers tagged with say //myTag// and sort them by a specified field value and show those value
: Use a `$list` widget with `get` and `sort` operator
!! Example
The below code list all tiddleers tagged with //fruit// and sort them by the value of `nameit` field and show those values. (See <<tag exmp056>> tiddlers)
<$macrocall $name="wikitext-example-without-html"
src="""><$list filter='[tag[exmp056]get[myfield]sort[]]'>
<<currentTiddler>><br>
</$list>
"""/>
See also [[Create a Doubly Sorted Table]]
! List contacts based on specified categories
The following code lists contact tiddlers (tagged with contact) based on second tag as category. The categories are stored in [[Circles]] tiddler.
* ''Tiddler contents''
<<<
<<list-links filter:"[tag[exmp011]] -[<currentTiddler>]">>
<<<
* ''Notes''
<<<
The thing to remember is that the brackets go with the TYPE of operand....
* `[foo]` is a literal value
* `<foo>` is a variable reference
* `{{!!foo}}` is a reference to filed foo in current tiddler
* `{someTiddler}` is a reference to the text filed of someTiddler
* `{SomeTiddler!!foo}` is a reference to the value of the "foo" field in tiddler "someTiddler"
<<<
* ''Output''
```
<$list filter="[list[Circles!!text]]" variable="item">
!! <<item>>
<<<
<$list filter="[tag[contact]tag<item>]">
</$list>
<<<
</$list>
```
<$list filter="[list[Circles!!text]]" variable="item">
!! <<item>>
<<<
<$list filter="[tag[contact]tag<item>]">
</$list>
<<<
</$list>
;Mat's solution for non global macros
:https://groups.google.com/g/tiddlywiki/c/NgFPRM1fFCw/m/IB0FV-UhAQAJ
;Chris solution for global variables and macro
:https://groups.google.com/d/msgid/tiddlywiki/b24fbec3-5b12-4610-9778-3633be89af4bn%40googlegroups.com.
;Mohammad solution in Utility plugin
:https://kookma.github.io/TW-Utility/#demo%2Fshow-macro
;Mohammad find macro
:https://groups.google.com/g/tiddlywiki/c/Rx7RHqB-LbY/m/qY8rfuveAgAJ
<<docit>>
;How is it possible to write down the result of filtered list into another tiddler as harcopy (static text)?
I'd like to make a button that allows me to create a "hard copy" of the list into a tiddler in the sense that you could open the tiddler file in another program and just see the list there, i.e. in the form of a normal text file.
!! Solution
The below code list all tiddler' tagged with `Learning` and then uses a button to write their conents into a tiddler called `myErrands` as a harcopy (static text).
```
\define mymegatext()
<$list filter="[tag[Learning]limit[20]]">
<$view field=text/>
</$list>
\end
\define mybutton()
<$wikify name=mytext text=<<mymegatext>>>
<$action-setfield
$tiddler="myErrands"
tags="hardcopies"
text=<<mytext>>
/>
</$wikify>
\end
<$button actions=<<mybutton>> >
set Errands
</$button>
```
This way it is possible to merge several tiddlers into one. Like merging all tiddlers tagged with `$:/tags/Stylesheet` and export the resulted tiddler to compress using a CSS online minifier.
How to list the last 10 modified tiddlers in reverse order? It means
* Only show the last 1o tiddlers modified or created
* List the last modified/created one first
```
<<list-links "[has[modified]!sort[modified]limit[10]]" type:"ol">>
```
See [[Example 31: List Few Last Modified Tiddlers]]
!! Thomas Elmiger solution
Thomas Elmiger in [[TW Google group|https://groups.google.com/d/msg/tiddlywiki/GqB0apuMhiE/xE_66ooKHQAJ]] pointed out that, you want to minitor the lasted changes, but usually don’t need state tiddlers and temporary info (often set by the system, not by the user), so you can use the below filter:
```
[!prefix[$:/state]!prefix[$:/temp]![$:/StoryList]![$:/HistoryList]haschanged[]!sort[modified]]
```
This shows modifications from the current session (see https://tiddlywiki.com/#haschanged%20Operator).
and
```
[has[modified]!prefix[$:/state]!prefix[$:/temp]!sort[modified]limit[50]]
```
... nearly the same as above.
!!! See also
<<list-links "[search:keywords[change]] -[<currentTiddler>]" type:"ol">>
There as a question by [[bimlas|https://groups.google.com/d/msg/tiddlywiki/uYGhHaZzo9w/zK6mMJtEEQAJ]] on using a stored variabe value in other scopes.
[[Mark S|https://groups.google.com/d/msg/tiddlywiki/uYGhHaZzo9w/x-RIBEuuEQAJ]] gave a neat solution as below (I have modified it for minor issues)
```
\define mytiddlerslist()
<$list filter="[has[myfield]tags[]]"><$view field=title/> </$list>
\end
<$wikify name="mytiddlers" text=<<mytiddlerslist>>>
<$list filter="<mytiddlers>" variable="v"><<v>></$list>
</$wikify>
```
This means using a macro the same variable can be used in different scope. A working example based on this has been given in [[Example 21: List Tags Based on a Field]]. It that all tiddlers with a //responder// `filed` are listed and then their tags are displayed using a list widget in another scope.
<<alert info "The above code does not save/store the variable value, but it recalculates the variable again.">>
;How to list tiddlers tagged with foo and show them along with their poision as a number in the list?
:Use the two operators `allbefore` and `count`
!! Example
The below example lists all tiddlers tagged with `HelloThere` and displays their poistional number (order) in the list
```
<$list filter="[tag[HelloThere]]">
<$link /> - <$text text={{{ [tag[HelloThere]allbefore:include<currentTiddler>count[]] }}} /><br>
</$list>
```
\define showtagsaspills(hidetagfilter)
<$set name=tagfilter value={{!!tags}}$hidetagfilter$>
<$list filter=<<tagfilter>> >
{{||$:/core/ui/TagTemplate}}
</$list>
</$set>
\end
; How we can list tiddlers based on a tag with their other tags as tagpill?
: It can be done using nested list widget and ~TagTemplate as below
```
\define showtagsaspills(hidetagfilter)
<$set name=tagfilter value={{!!tags}}$hidetagfilter$>
<$list filter=<<tagfilter>> >
{{||$:/core/ui/TagTemplate}}
</$list>
</$set>
\end
<$list filter="[tag[exmp001]]" >
<li><$link to={{!!title}} tooltip="Custom tooltip eg open tiddler">{{!!title}}</$link> <<showtagsaspills>></li>
</$list>
```
* Example
<$list filter="[tag[exmp01]]" >
<li><$link to={{!!title}} tooltip="Custom tooltip eg open tiddler">{{!!title}}</$link> <<showtagsaspills>></li>
</$list>
; Using the new operator in TW5.1.20, how is it possible to create a Switch-Case construct using the $list widget?
:Using the `match` operator with the else `~`
!! Example
```
<$list filter="[<casevariable>] ~[[false]]" variable=case>
<$list filter="[<case>match[false]]" variable=case>
Do this if no case value
</$list>
<$list filter="[<case>match[caseone]]" variable=case>
Process "caseone"<br>
</$list>
<$list filter="[<case>match[casetwo]]" variable=case>
Process "casetwo"<br>
</$list>
<$list filter="[<case>match[casethree]]" variable=case>
Process "casethree"<br>
</$list>
<!-- Even this -->
<$list filter="[<case>match[casetwo]] [<case>match[casethree]]" variable=case>
Process "casetwo" and "casethree"<br>
</$list>
</$list>
```
!! Remarks
* The outter `$list` widget is the main `$list`
* All the inner `$list` widgets are the second `$list` widget
* The main `$list` widget recieves a filter, if it is non-empty it will result a value
* If the value is `caseone`, `casetwo` or `casethree` then the related second `$list` widget will be run
* If the first `$list` widget returns no value then the `~[[false]]` will resulst in `false` value and so, the related second `$list` widget will be run
In summary the above construct simply represent the switch-case-default construct in C language.
<<docit>>
See https://tiddlywiki.com/prerelease/#ListWidget
template The title of a template tiddler for transcluding each tiddler in the list. When no template is specified, the body of the ListWidget serves as the item template. With no body, a simple link to the tiddler is returned.
```
<$list filter="" template="someTemplate"/>
```
! Case I
`Listwidger` without variable. See how `!!filed` works. They refer to the each tiddler results from list widget.
```
<$list filter="[tag[exmp013]]" variable="myTid">
Title: {{!!title}}<br>
This is the variable `myTid`: <<myTid>><br>
Test-Filed: {{!!test-field}}<br>
</$list>
```
<$list filter="[tag[exmp03]]" variable="myTid">
Title: {{!!title}}<br>
This is the variable `myTid`: <<myTid>><br>
Test-Filed: {{!!test-field}}<br>
</$list>
! Case II
This example `Listwidget` sets a variable. See how `!!filed` works. They refer to the current tiddler (this tiddler) not the list widget variable.
```
<$list filter="[tag[exmp03]]" >
Title: {{!!title}}<br>
This is the variable `currentTiddler`: <<currentTiddler>><br>
Test-Filed: {{!!test-field}}<br>
</$list>
```
<$list filter="[tag[exmp03]]" >
Title: {{!!title}}<br>
This is the variable `currentTiddler`: <<currentTiddler>><br>
Test-Filed: {{!!test-field}}<br>
</$list>
Ref:[[Eric Shulman|https://groups.google.com/d/msg/tiddlywiki/dET9eQbM1gI/oFJeC51EBgAJ]]
The below examples shows how to access and list index/value pair of a DataTiddler (dictionary).
!! Example i
;How to retrieve and list selected number of properties (index/value pairs) of a DataTiddler?
Assume you want to list index/value pairs only for "one, three, four" indexes of [[exmp039/roman-numbers]].
<$macrocall $name="wikitext-example-without-html"
src="""><$list filter="one three four">
<<currentTiddler>>: <$transclude tiddler="exmp039/roman-numbers" index=<<currentTiddler>>/><br>
</$list>
"""/>
!! Exampe ii
;How to retrieve and list all properties (index/value pairs) of a DataTiddler?
<$macrocall $name="wikitext-example-without-html"
src="""><$list filter="[[exmp039/roman-numbers]indexes[]sort[]]">
<<currentTiddler>>: <$transclude tiddler="exmp039/roman-numbers" index=<<currentTiddler>>/><br>
</$list>
"""/>
!!! Remarks
* The `indexes` selects all data properties of the input title, here [[exmp039/roman-numbers]]
* The `sort` operator sorts the output
* The `transclude` widget display the value of given index
* The `currentTiddler` here is the loop variable and is used to show both the index and retrieve the value using transclude widget
;Users tag their tiddler, but the tag tiddler itself is not created yet! How to list the non exisiting tags?
: Use the `tags` filter operator to find all thags and the use `is[missing]` to limit the results to non exisiting (missing) items.
!! Example
Display non exisiting tags are not system tags! Limit the output to maximum ten results!
><$macrocall $name="wikitext-example-without-html"
src="""<<list-links "[all[tiddlers]tags[]is[missing]!prefix[$:/]limit[10]]">>
"""/>
;Remarks
* The `tags[]` returns all tags for all tiddlers in this wiki
* The `is[missing]` filter results to non existing tags
* The `!prefix[$:/]` excludes system tiddlers
* The `limit[10]` shows maximum ten results
Create notes on the fly. Live note lets write plane notes, no edit no save tiddler required.
{{!!url}}
How to load a local html file into TW using `iframe`?
# Assume غخع have a local html file called //test.html// located in `examples/test.html`
# Use the html5 ifram tag as below
```
<iframe src="relative path to local html" width="xx" height="xx" />
```
!! Example
The below //test.html// located in examples folder
```
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>An HTML page</title>
</head>
<body>
<h1>An HTML page</h1>
<p>This is an HTML page.</p>
</body>
</html>
```
Now load it using `iframe` as below:
<<wikitext-example-without-html
src:"""<iframe src="examples/test.html" width=100% height=300/>
""">>
Filtering is very powerful and it can be used for logical operations. This is some notes about logic operations using filtering in tiddlywiki. Most of what is here isn't all that useful generally, but hopefully it can be used to simplify filtering problems in tiddlywiki.
Filter operators that this applies to the operators //days//, //field//, //has//, //haschanged//, //is//, //regexp//, //sameday//, //search//, //prefix//, //suffix//, //tag// and untagged
<<alert success width:50% "A source used a lot is Tobias Beer's. Just note that a lot of //new operators// have been made since it was authored: http://tobibeer.github.io/tw/filters/#Filter%20Examples">>
;Learn
: theme, stylesheet
:splash screen, login screen
;An issue in field name created by action-setfield
:While Tiddlywiki does not allow to add fileds with space in name or uppercase word, but it seems the through the `$action-setfield` it is possible. How to handle space and upercase words in field name created by `$action-setfield`?
!! Solution
This does seem like a "hole" in the core handling in Tiddlywiki 5.1.21 and older. Also, when you save and reload the file, the upper case letters are automatically re-mapped to lowercase, but the spaces result in TWO fields (e.g., "this field" becomes two fields, "this" and "field").
Here is a "fixup" for it:
```
<$vars fieldName={{{ [<fieldName>split[ ]join[_]lowercase[]] }}}>
```
What this does is replace spaces with underscore, and change all uppercase to lowercase
!! Example
```
<$edit-text tiddler="$:/temp/newfieldname" tag=input />
<$edit-text tiddler="$:/temp/newfieldvalue" tag=input />
<br>
<$button> make field
<$vars fieldName={{{ [{$:/temp/newfieldname}split[ ]join[_]lowercase[]] }}}>
<$action-setfield $field=<<fieldName>> $value={{$:/temp/newfieldvalue}}/>
</$vars>
</$button>
```
;How a macro can process variable number of arguments?
:Assume you have a macro like `<<mymac arg1>>` and you can call it like `<<mymac arg1 arg2 arg3>>` and you need
!!! Solution
To have variable number of arguments you can use list as below:
```xml
\define stuff(myvar mylist)
I saw $myvar$. Then <br/>
<$list filter="[enlist[$mylist$]]">
<$view field="title"/><br/>
</$list>
\end
```
* The `mylist` argumrnt here can accept a list of argumrnts
* The `$list` widget uses `enlist` to recognize them!
See [[Example 13|Example 13: Macro and Variable Number of Arguments]]
Another solution can be found here: [[Macro and Variable Number of Arguments - P2]].
; How a macro can handle variable number of arguments?
: Proper use of `$reveal` widget can determine how many arguments have been passed.
!! Example
The below example shows a macro can handle one, two, or three input parameters.
<<code-link "exmp013/macro/variable-arguments">>
;Remarks
* The `$reveal` widget usually takes a "state" parameter, which is the name of a tiddler containing a text field with the value to compare.
* By omitting the "state" parameter, and using the "default" parameter instead, you can use `$reveal` to compare two literal values, without needs a tiddler in which to store a state value.
See also [[Macro and Variable Number of Arguments - P1]].
<<docit>>
```
\define xx(a:"Empty",b:"Empty")
<$reveal type="nomatch" text={{{[<__a__>] -[<__b__>]}}} default="">
Ther are different.
* a: $a$
* b:$b$
</$reveal>
<$reveal type="match" text={{{[<__a__>] -[<__b__>]}}} default="">
They are the same.
* a: $a$
* b:$b$
</$reveal>
\end
```
<<xx 12>>
<<xx>>
\define render-code-snippet()
```$(snippetLanguage)$
$(snippetCode)$
```
\end
\define snip(tiddler)
<$list filter="[<__tiddler__>tags[]removeprefix[$:/tags/highlight/]limit[1]]" variable="snippetLanguage">
<$wikify name="snippetCode" text="""<$text text={{{ [<__tiddler__>get[text]] }}}>""">
<<render-code-snippet>>
</$wikify>
</$list>
\end
<pre><$view/></pre>
! Macro in Tiddlywiki
TiddlyWiki //macro definitions// are ''NOT'' //functions// in the traditional programming sense. Although input "parameters" can be passed to them, and they "return" something as a result, __they don't actually "run" any of the "code" they contain__. When a macro is invoked, it does two things (and ONLY two things):
# replace all occurrences of `$paramname$` with the corresponding value that was passed as an input parameter
# replace all occurrences of `$(variablename)$` with the current value of the variable (assuming it is defined in the context of the "caller" of the macro)
That is ALL it does. After doing the replacements, the resulting content is "returned". If the macro call is being used as a widget parameter, then the result is simply passed along to the widget for further processing. However, if the macro call is embedded directly in wiki content, then it is rendered.
!! An Issue
Consider the below code in a tiddler:
```
Fields
title : Headache
list : [[A B]] [[C D]] E
tidd : Headache
\define get-related-tiddlers() <$view tiddler=$(tid)$ field="list" mode="block"/>
\define test(list-tids)
list-tids= $list-tids$
<$list filter="[enlist<__list-tids__>]">
</$list>
\end
<$set name=tid value={{!!tidd}}>
tid= <<tid>>
get-related-tiddlers= <<get-related-tiddlers>>
1. WORKS: <$macrocall $name="test" list-tids={{!!list}} field="list" />
2. BREAKS: <$macrocall $name="test" list-tids=<<get-related-tiddlers>> field="list" />
<$wikify name="GOT-related-tiddlers" text=<<get-related-tiddlers>>>
3. WORKS!: <$macrocall $name="test" list-tids=<<GOT-related-tiddlers>> field="list" />
</$wikify>
</$set>
```
;Question
: Why example 2 in the above code breaks?
In light of the above, when you invoke the following:
```
2. BREAKS: <$macrocall $name="test" list-tids=<<get-related-tiddlers>> field="list" />
```
the value of the "list-tids" parameter is simply passed along to the widget and will ''NOT'' be the contents of the list field, but rather will literally be:
```
<$view tiddler=SomeTiddlerName field="list" mode="block"/>
```
In contrast, when you use `<$wikify>` on the macro, //you are forcing it to be rendered and then capturing that result in the variable "GOT-related-tiddlers"//. Thus, the `<$view>` widget contained in the macro //DOES get processed//, and the result is then available to pass along to the "list-tids" param.
; Also, I wonder if this use case was the primary reason for making the $wikify widget? If not, what was?
: I would say it was a convincing reason, though perhaps not the only one.
<<< [[Wikipedia|https://en.wikipedia.org/wiki/Function_overloading]]
In some programming languages, function overloading or method overloading is the ability to create multiple functions of the same name with different implementations. Calls to an overloaded function will run a specific implementation of that function appropriate to the context of the call, allowing one function call to perform different tasks depending on context.
<<<
;What is macro overloading in TiddlyWiki?
: If a macro is called in a scope one (e.g inside a tiddler) and the macro itself calls another macro (a second macro) internally say //maymac//, then if this second macro //maymac// is existed in the scope of calling tiddler, it will override the core or other scope macro! This is macro overloading.
A good example is the `toc-caption` macro. For more information see Jeremy Ruston explanation [[here|https://groups.google.com/d/msg/tiddlywiki/sZNfQBxMs3c/eOXiDEFxDAAJ]].
!! Example
A set of macros has been defined in [[exmp043/macro/overloading]] as follows:
> <pre><$view tiddler="exmp043/macro/overloading" /></pre>
If the macro `mac-xx` is called the expected output is as below:
<<<
<<mac-yy>>
<<<
Now, consider it is called from [[Example 43: Macro Overloading]] which itself has an internal macro with the same name `mac-xx` as defined in [[exmp043/macro/overloading]].
><pre><$view tiddler="Example 43: Macro Overloading"/></pre>
Strangely the out is as bellow:
>{{Example 43: Macro Overloading}}
What happened is, in the second case there is a `mac-xx` defined inside [[Example 43: Macro Overloading]], so TW overloads the original macro with this one.
\import exmp130/macro/kbd-dummy-button
; How a macro can display keyboard inputs or buttons when there is a variable combination of inputs?
: Proper use of `$list` widget, `split` and `first`, `rest` operators can determine how many arguments have been passed and then process them.
!! Solution
The below code accepts a string of input delimited by space and show the keyboard combination
<<code-link exmp130/macro/kbd-dummy-button>>
;Remarks
* The first `$list` widget uses `split` and `first` operators to display the first input
* The second `$list` widget uses `split` and `rest` operators to display the remaining inputs with separator between them
* The defaults are `space` for delimiter and `+` for separator, which can be changed on demand
* By using comma you can do the same for multiple words
* By using `/` you can make a system tiddler easier to read
!! Example
The below example shows several cases of keyboard inputs. Note to the optional delimiter, separator used in different cases.
<$macrocall $name="wikitext-example-without-html"
src="""<<kbd "Ctrl Shift A B C D E F G">>
<<kbd "Ctrl-Alt Del">>
<<kbd "Control Panel, Keyboard Shortcuts" delim:"," ">" >>
<<kbd "$:/editions/tw5.com/download-empty" delim:"/" " ">>
<<kbd "$:/editions/tw5.com/download-empty" delim:"/" "/">>
<<dummy-button "Ctrl Shift A B C D E F G">>
<<dummy-button "Ctrl-Alt Del">>
<<dummy-button "Control Panel, Keyboard Shortcuts" delim:"," ">" >>
<<dummy-button "$:/editions/tw5.com/download-empty" delim:"/" " ">>
<<dummy-button "$:/editions/tw5.com/download-empty" delim:"/" "/">>
"""/>
!! Use of custom class
''Note'': The style of button and kbd can be customized using propoer CSS or one can use Shiraz color and class options"
This is an example uses [[Shiraz|https://kookma.github.io/TW-Shiraz]] classes to beautify the buttons.
<$macrocall $name="wikitext-example-without-html"
src="""<<dummy-button "Ctrl Alt A" class:"badge badge-info">>
"""/>
[img class="float-right"[$:/favicon.ico]]
!! ''A quick tutorial on TW macro''
Here the usage and application of macro are shown through examples.
<<tabs tabsList:"[tag[macro]!has[draft.of]nsort[]] -[[Macro Tutorial]]" default:"1.1" class:"tc-vertical">>
\define macx()
<$list filter="[[$:/temp/mywarning]is[missing]]">
This is an inline message with dismiss button!
<$button class="tc-btn-invisible tc-tiddlylink">
<$action-setfield $tiddler="$:/temp/mywarning" text="x"/>
×</$button>
</$list>
\end
;How to use a macro to show an inline alert message with close button to dismiss the message and when wiki is reloaded the message shown again?
: One solution is to use a stateTiddler which its value set on the wiki startup
!! Solution
The below macro uses `$:/temp/mywarning` tiddler as a state tiddler. If it is missing then the alert message will be shown. If the dismiss button is pressed, the tiddler is created and message will be disappeared.
<<show-macro>>
On wiki reload! To show again the message, the tiddler [[exmp092/startup-action]] with below contents is used to delete the `$:/temp/mywarning` tiddler.
{{exmp092/startup-action||template/code}}
<<alert info "''Note'': if instead of `$:/temp/mywarning` a state tiddler with title prefixed with `$:/state/popup` is used, then it will be removed on startup or page relaod and there is no need for startup action to delete the temporary tiddler.">>
!! Example
Click the dismiss button. To see the message again reload the wiki.
<$macrocall $name="wikitext-example-without-html"
src="""><<macx>>
"""/>
\define property-table(dataTiddler, indexTitle:"Index", valueTitle:"Value", tblClass:"", caption:"Empty")
<table class="$tblClass$">
<caption><$reveal type="nomatch" text=<<__caption__>> default="Empty">$caption$</$reveal></caption>
<tr><th>$indexTitle$</th><th>$valueTitle$</th></tr>
<$list filter="[<__dataTiddler__>indexes[]sort[]]" variable="index">
<tr>
<td><<index>></td>
<td><$transclude tiddler=<<__dataTiddler__>> index=<<index>> /></td>
</tr>
</$list>
</table>
\end
\define docit()
<span style="color:red;font-weight:bold;">To Be Documented </span>
\end
\define tagSortFunc(mainTag, order:"ascend")
<$reveal type="match" default="ascend" text=<<__order__>> >
<$action-listops $tiddler=<<__mainTag__>> $filter="[tag<__mainTag__>sortan[]]"/>
</$reveal>
<$reveal type="nomatch" default="ascend" text=<<__order__>> >
<$action-listops $tiddler=<<__mainTag__>> $filter="[tag<__mainTag__>!sortan[]]"/>
</$reveal>
\end
\define sortInTagDropdown()
<$button tooltip="Sort tiddlers A → Z" aria-label="Sort tiddlers A → Z" class='tc-btn-invisible'>Sort {{!!title}} tiddlers A → Z
<$macrocall $name="tagSortFunc" mainTag={{!!title}}/>
</$button>
<$button tooltip="Sort tiddlers Z → A" aria-label="Sort tiddlers Z → A" class='tc-btn-invisible'>Sort {{!!title}} tiddlers Z → A
<$macrocall $name="tagSortFunc" mainTag={{!!title}} order="no-ascend"/>
</$button>
\end
<<sortInTagDropdown>>
;If you do not use any parameters, is there any point in making a macro instead of transcluding a snippet of code?
:The is a matter of taste, except for extreme cases
!! Recommendation i
<<<
[[Jed Carty|https://groups.google.com/d/msg/tiddlywiki/4op7hxtoNwg/roTWIidaBAAJ]]
In practice it is just preference.
In extreme cases where you have hundreds of macros and make them all ''global'' you can have some problems because all of the macros have to be loaded with import variables if they are used or not, this is done without your intervention.
So if you have lots and lots of macros it can cause some more overhead than transclusions.
But the number of macros you would need to have a noticeable effect is almost certainly outside of what is reasonable to do.
<<<
!! Recommendation ii
<<<
[[Mario Pietsch|https://groups.google.com/d/msg/tiddlywiki/4op7hxtoNwg/gBixGZJbBAAJ]]
This is about "your preferences". ... But if others need to use your plugins, macros are probably simpler for them. They produce more "descriptive" code. eg:
* `{{test||xx}}` ... means transclude the tiddler named: test and use the template: xx to display the content.
* `<<show tiddler:"test" template:"xx">> ..` doesn't need additional description, for users to make sense of it.
While the first one is less characters, the second one describes itself. If the macros is global you need to take care, that macro names are "unique" enough, to avoid ''name clashes''.
<<<
\define make-title() [[$(myVar)$]]
This is an example shows how a list of buttons can be created and used for actions.
The below code creates a list of buttons labled with tiddler titles which tagged with `exmp012`.
It handles tiddlers have spaces in their title.
<$macrocall $name="wikitext-example-without-html"
src="""@@color:red;font-weight:700;
<$list filter="[tag[exmp02]] -[<currentTiddler>]" variable="myVar">
<$button set="!!list" setTo=<<make-title>> > <<myVar>>
</$button>
</$list>
@@
"""/>
Click any of the above buttons
The value of `list` filed is: ''{{!!list}}''
!! Helper function
To handle the spaces in the title of tiddler the below helper function has been used
```
\define make-title() [[$(myVar)$]]
```
The below code uses robocopy to create a version-incremented copies of files (here tiddlers)
The script:
* always create an identical copy of source tiddlers
* create version-incremented copies of all files differ from their source (you may change a tiddler in source or backup folder)
* version number started from 000 ~ 999, so this is maximum number of versions
* use robocopy which is very fast method for creating backups
*
!! How to use
* change the source and destination folders to meet your case
* run the batch file
```
:: Ref: https://www.experts-exchange.com/questions/23427327/How-to-use-Robocopy-to-create-files-Versions.html
:: Running the script will first Robocopy any files which don't already exist in the destination,
:: then use xcopy to create version-incremented copies of any files which do exist in the destination.
:: Mohammad Rahmani
:: Github: https://github.com/kookma
:: Rev 0.9
:: Apr 8th, 2019
@echo off
cls
:: Source and destination paths. Do not include a trailing backslash
set SourceFolder="G:\Test-Robocopy\my source"
set DestinationFolder="G:\Test-Robocopy\my dest"
:: ------------------------------------------------------------------------------------------------
:: Remove double and single qoutes if any
set source=%SourceFolder:"=%
set source=%source:'=%
set dest=%DestinationFolder:"=%
set dest=%dest:'=%
setlocal EnableDelayedExpansion
:: Copy any file, folder not existed in the destination
robocopy "%source%" "%dest%" /XC /XN /XO /R:3 /W:3 /E /XX
:: List all files existed in destination, but there is a difference between each file and its
:: source
for /F "tokens=*" %%G in ('robocopy "%source%" "%dest%" /XX /L /NDL /NS /NC /NJH /NJS /E') do (
call :_process "%%G"
)
goto :eof
:: The process subroutine here does the below tasks
:: a. create a new copy of destination file prefixed with _vxxx, where xxx: 001 ~ 999 (version-incremented copies )
:: so this only keep 1000 revisions and cannot work for more revisions
:: b. copy the source file and overwrite the destination. So, destination is always equal to source
:_process
set counter=0
set version=000
set source_path=%~dp1
set file=%~n1
set ext=%~x1
:: Create the destionation path for the existed file. by replacing the
:: source path with destination path. (search and replace)
set dest_path=!source_path:%source%=%dest%!
:: Check to see what is the last version number to create the next version number
:_loop
if exist "%dest_path%%file%_v%version%%ext%" (
set /A counter+=1
:: create a number with leading zeros like 001 ~ 999
set version=000!counter!
set version=!version:~-3!
goto :_loop
)
:: Increment the version number of the file in destination which differes from its identical one in source
echo F|xcopy "%dest_path%%file%%ext%" "%dest_path%%file%_v%version%%ext%" /C /H /R /Z /Q
:: Copy from source and overwrite the respective file in destination: source = destination
echo F|xcopy %1 "%dest_path%\%file%%ext%" /C /H /R /Z /Y /Q
goto :eof
endlocal
```
# Open https://highlightjs.org/download/
# Select the language you want and then click download
# Unzip the `highlight.zip` and open the `highlight.pack.js` in a text editor
#<div>
Paste the following line as the ''first line'' in the text editor
```
var hljs = require("$:/plugins/tiddlywiki/highlight/highlight.js");
```
</div>
#<div>
Paste the following line as the ''last line'' in the text editor
```
exports.hljs = hljs;
```
</div>
# Open the `$:/plugins/tiddlywiki/highlight/highlight.js` tiddler in your wiki and click on edit button from text editor
# Replace the content of this tiddler with the content of edited `highlight.pack.js` from text editor
# Save tiddler and save wiki
# Reload the wiki
That's all
<<alert warning "''Note'': You need to have the `highlight.js` plugin installed in your wiki. If not from control panel, plugins, click get more plugins and install the `highlight.js`.">>
!! Remarks
* See [[Add More Language Brushes to Highlight.js Plugin]]
* Using these procedure, you can add brushes for Fortran, Matlab, Julia, ...
<<docit>>
https://groups.google.com/d/msg/tiddlywiki/nANt_wWjiYE/ccfCBdkSFgAJ
* hub wiki
* node wiki
William Jackson (metabele) was an active developer for Tiddlywiki who has passed away!
The Listops wiki contains many useful examples on listops operators and also nice one on `cycle` operator which has been recently added to Tiddlywiki.
http://listops.tiddlyspot.com/
;What regexp filter can be used to match all list items `<li styel></li>` find and display their content each in a separate line?
:This cannot be done using simple `regexp`, or `splitregexp` filter operators and needs to process using a set of filters as described below
!! Solution
The below code finds all list items and show their contents in [[exmp091/data01]]. Note that
* A list item is the one delimited between `<li>` and `</li>`
* The list item can have class like `<li class="some class">` or style or both.
* What is between the opening and closing tag is called the content of list item which should be displayed here
<$macrocall $name="wikitext-example-without-html"
src="""><$vars realchars="[^\s]+">
<$list filter="[{exmp091/data01}splitregexp[\n]join[ ]splitregexp[<li.*?>]butfirst[1]splitregexp[</li>]butlast[1]regexp<realchars>]" variable=item>
<$text text=<<item>>/><br>
</$list>
</$vars>
"""/>
!! Remarks
* The `{exmp091/data01}` transclude the raw text in tiddler [[exmp091/data01]]
* The `splitregexp[\n]` split the text based of end of line character. That means it split text into lines.
* The `join[ ]`
* The `splitregexp[<li.*?>]butfirst[1]` split text on `<li.*?>` means on any `<li>` or `<li class="some class">` or style or both. and then throw away the first part.
* The `splitregexp[</li>]butlast[1]` means split on closing tag `</li>` and throw away the last part
* The `regexp<realchars>` remove empty lines.
<<alert info """The `<$vars realchars="[^\s]+">` is a regular expression that says "matcch anything that is not whitespace". It's used to verify that a line is not empty. It has to be defined in a variable beause it contains square brackets `[]`.""">>
;Find all tiddlers have three consecutive digits in their title
: The regular expression `[0-9]{3}` matches three consecutive digits. Because it contains square brackets, the way to use it with the regexp operator is via a variable (or macro), as follows:
!! Solution
* The below example exclude system tiddlers with filter `!is[system]`
* The below filter limits the output maximum to 5 result
<$macrocall $name="wikitext-example-without-html"
src="""><$set name="digit-pattern" value="[0-9]{3}">
<$list filter="[!is[system]regexp:title<digit-pattern>limit[5]]">
<$link><$text text=<<currentTiddler>> /></$link><br>
</$list>
</$set>"""/>
<<alert info "The filter syntax makes it impossible to directly specify a regular expression that contains square brackets`[]`. The solution is to store the expression in a variable, as explained in example above.">>
;Find all tiddlers with titles ending in .jpg or .jpeg, ignoring case
:Use the `i` flag is generally useful: it forces the different between capital and lowercase letters to be ignored.
!! Remarks
* The `[regexp[(?i)\.jpe?g$]]` match all tiddlers with titles ending in `.jpg` or `.jpeg`, ignoring case
* The `i` flag ignores case
* The dot `.` charcater has been escaped with `\.` to be matched
* The `$` matches the end of input
<$macrocall $name="wikitext-example-without-html"
src="""><$list filter="[regexp[(?i)\.jpe?g$]]"><$link/><br></$list>
"""/>
See also
* [[Font Awesome Plugin]]
* [[Octicons]]
\define ragscalculator(a, op, b)
<$list filter="[<__a__>$op$<__b__>]" variable=result><<result>></$list>
\end
; Basic ragscalculator
: Using basic mathematical operations in Tiddlywiki 5.1.20+ it is possible to develop a simple calculator for basic operations like addition, subtraction, multiplication
!! The macro
The `ragscalculator` below accept two numbers and the operator and simply return the result
<<show-macro>>
; Content and atributes
: a: first number of your math equation
: b: second number of your math equation
: op: basic mathematical operator as below
:: for `+` : use "add"
:: for `-` : use "subtract"
:: for `*` : use "multiply"
:: for `/` : use "divide"
!! Examples
The below examples show how `ragscalculator` can be used.
<$macrocall $name="wikitext-example-without-html"
src="""<<ragscalculator 12 add 5>>
<<ragscalculator 12 divide 5.>>
<<ragscalculator 1.23 multiply 80>>
"""/>
On the https://tiddlywiki.com/ website, if you make a tabbed internal Table of Contents as follows:
```
Tiddler Title: MyTest
<$macrocall
$name="toc-tabbed-internal-nav"
tag="Learning"
selectedTiddler="$:/temp/toc/selectedTiddler"
unselectedText="<p>Select a topic in the table of contents. Click the arrow to expand a topic.</p>"
missingText="<p>Missing tiddler.</p>"
/>
```
Some long titles cause the left side to take up half the width of the tiddler, leaving too little space to display tiddler contents on the right side.
I want to change (reduce) the width allowed on the left-side index of links without modifying the core tiddlers. How to do this?
!! Solution
Tag your tiddler above "Test". Create a stylesheet tiddler (a tiddler tagged $:/tags/Stylesheet) and put the below content inside it.
```
[data-tags~="Test"] .tc-tabbed-table-of-contents .tc-table-of-contents {
max-width: 30% ;
}
```
That should change the max-width. I think you can see how to change "Test" to some other tag name, if you prefer.
\define message-of-day(dataTiddler)
<$set name="dd" value=<<now DD>> >
<$list filter="[<__dataTiddler__>indexes[]match<dd>]" variable=item>
<$transclude tiddler=<<__dataTiddler__>> index=<<item>> />
</$list>
</$set>
\end
;How to create a message of the day generator? In other words how to show a message based on the day of month?
: Different solution is possible, but one is to use a data tiddler to store message and use the `now` macro to find the day number and extract a message with that number from data tiddler
!! Solution
The below macro `message-of-day` gets a data tiddler containing the message and shows the message of the day.
<<show-macro>>
!! Remarks
The `message-of-day` macro contains
* an input parameter `dataTiddler` which passes the title of data tiddler which stores messages. Each message is stored as an index/value pair where the index is 1, 2, 3, ...31 and the value is a message in wikitext format
* a `$set` widget to store the day number of month at current data using `<<now DD>>`. See [[Date Format|https://tiddlywiki.com/#DateFormat]]
* a `$list` widget to find the index and match day number of today
** the filter extracts all indexes from dataTiddler (`<__dataTiddler__>indexes[]`)
** and matches against number of day (`match<dd>`)
* a `$transclude` widget to retrieve the message (the value) from dataTiddler
!! Example
The below example uses the [[exmp094/data]] as a dataTiddler in which all 31 quotes have been stored. Indexes start from 1 to 31 and every index has a value in which the quote is stored. The author name is given in italic.
<$macrocall $name="wikitext-example-without-html"
src="""<<<
<<message-of-day exmp094/data>>
<<< <<now "DDD, MMM DDth, YYYY">>
"""/>
<<alert info "This solution can be used to generate tip of the day. See [[Alternate Message of the Day Generator]] for when message are stored in individual tiddlers.">>
"""
Mohammad Rahmani
Chemical Engineering Department
Amirkabir University of Technology
Tehran, Ir
Github: https://github.com/kookma
Email : m[dot]rahmani[at]aut[dot]ac[dot]ir
"""
When `transclude` or `view` widgets are used for conditional output, an issue raised with empty `caption` field.
Consider below solution [[Eric Shulman|Conditional Output]]
```
<$view field="caption">
<$view field="title"></$view>
</$view>
```
or this one by [[THomas Elmiger|https://groups.google.com/d/msg/tiddlywiki/dzZWAa5Hmlo/b4vWK6yTEQAJ]]:
```
<$link tooltip={{!!title}}><$transclude field="caption"><$view field="title"/></$transclude> </$link>
```
<<<[[S.S.|https://groups.google.com/d/msg/tiddlywiki/dzZWAa5Hmlo/EwUqundEEQAJ]]
The problem with the above code is that if there is a `caption` field, but it is empty, nothing will show. I find that unacceptable. This was the exact issue I tried to have fixed (on github) but that hasn't been resolved because of possible performance issues in a large table of contents.
<<<
The better solution proposed by [[S.S.|https://groups.google.com/d/msg/tiddlywiki/dzZWAa5Hmlo/EwUqundEEQAJ]] as below
<<< Best solution
```
<$list filter="[all[current]has[caption]]"
emptyMessage="""<$view field="title"/>""">
<$transclude field="caption"/>
</$list>
```
<<< See also [[Jeremy note|https://github.com/Jermolene/TiddlyWiki5/issues/3624#issuecomment-445157136]] on GitHub
!! Remarks
[[TonyM|https://groups.google.com/d/msg/tiddlywiki/dzZWAa5Hmlo/vPJjeTBFEQAJ]] proposed a solution if you want to make a link to a tiddler when there is a caption and it has higher priority
```
<$list filter="[all[current]has[caption]get[caption]] ~[{!!title}]" variable=name>
<$link to=<<name>> tooltip="Custom tooltip"><<name>></$link>
</$list>
```
You can also make a macro for this as below
```
\define caption-title()
<$list filter="[all[current]has[caption]get[caption]] ~[{!!title}]" variable=name>
<$link to=<<name>> tooltip="Custom tooltip"><<name>></$link>
</$list>
\end
and use <<caption-title>> no paramters to always show first the caption, then the titlewith an active link.
```
;How to create a table of contents and sort sub branches?
If you make a table of contents from all tiddlers tagged with `TableOfContents` then
```
<<toc-selective-expandable "TableOfContents">>
```
The sorting is fine for most cases, but you would like all your items tagged `Journal` to be sorted by the created field. How can you apply a separate sort order to just those sub-items tagged Journal?
The trick is to add a field to the parent tagging tiddler (i.e. `Journal`) that points to a different sort criteria. Let's call the field `fuzzy`, and populate it with the value `created` (created is the name of the field that contains a tiddler's creation date).
Now change your Table of Contents to look like this:
```
<<toc-selective-expandable "TableOfContents" "sort{!!fuzzy}" >>
```
!! Other readings
* [[TOC in Sidebar|https://tiddlywiki.com/#Adding%20a%20table%20of%20contents%20to%20the%20sidebar]]
* [[Sort order of sub branches|https://tiddlywiki.com/prerelease/#How%20to%20change%20the%20sort%20order%20of%20sub-branches%20in%20a%20TOC%20macro]]
* The following linkintab macro will always open in the same browser tab, even if it is already open.
* If your links to wikis use the target parameter you can ensure you do not open the wiki more than once.
* You are also protected if you try and reopen the tab and you have not saved previous work.
* In FireFox, if you move a tab to its own window, and click the link again it will open that windows again (and reload) - if it was minimised it will restore it.
!! Why do this?
* It allows you to keep tabs closed and open them as needed without fear of saving over the same wiki (Even without using bob)
* You can establish a Directory Wiki to other wikis that honours this reusable tabs method.
* No need to go looking for existing tabs, windows or minimised browser windows, just return to your directory, reopen if not open, reload in same tab if open (and saved)
!! Macro
Put the below script inside a tiddler and tag it with `$:/tags/Macro`
```
\define linkintab(link tabname)
<$set name=url value="$link$">
<$set name=tabname value=$tabname$>
<a href=<<url>> target=<<tabname>> ><<tabname>></a>
</$set></$set>
\end
```
!! Example
```
<<linkintab "https://www.w3schools.com" W3Schools>>
<<linkintab "http://127.0.0.1:8084/"Bob>>
```
!! Remarks
In the follwing case, it is using data from a dataTiddler (the current Tiddler in a list)
```
<a href={{##wiki-url-full}} target={{##wiki-sitetitle}}>{{$:/core/images/link}}</a>
```
And as the above macro shows the following also works
```
<a href=<<url>> target=<<tabname>> ><<tabname>></a>
```
No class names, no frameworks, just semantic HTML and you're done.
The list field holds all integer numbers from 1 to 999.
See [[Create a List of Numbers]]
This impelements the BTC solution method.
These are Kookma Tiddlywikis on tiddlyspot.com each demonstrate a pluging, sample code or other features.
<<table-dynamic filter:"[tag[mywiki]]" fields:"tbl-expand title url" class:"w-100">>
\define target() My Little Tiddler
<$button>Go forth
<$action-navigate $to=<<target>> />
</$button>
```
\define target() My Little Tiddler
<$button>Go forth
<$action-navigate $to=<<target>> />
</$button>
```
<<docit>>
; Create a tiddler with unique title and open it in edit mode?
: use tm-new-tiddler, also the below method
```
\define newTiddler(title, fields)
<$set name="tempTid" value=<<qualify "temp/$(currentTiddler)$">> >
<$action-createtiddler
$basetitle=<<__title__>>
$savetitle=<<tempTid>>
$fields$/>
<$action-sendmessage $message="tm-edit-tiddler" $param={{{[<tempTid>get[text]]}}} />
</$set>
\end
<$button>Test
<<newTiddler test>>
</$button>
```
; How to host Tiddlywiki on free web hosting service neocities.org?
:Use the Neocities Save Plugin
!! Instruction
# Go to https://neocities.org and create an accoung
# Go to setting and create an API key
# Download an empty.html from https://tiddlywiki-neocities-saver.neocities.org/
# Goto $:/ControlPanel, Saving Tab, Neocities Save and enter your API key
# Press the Save button
If you have your own wiki simply drag and drop [[Neocities Saver plugin|https://tiddlywiki-neocities-saver.neocities.org/#TiddlyWiki%20Neocities%20Saver%20Plugin]]
into your wiki!
[img class="float-right" [list.ico]]
!! ''A set of examples of nested lists''
Here the usage and application of nested lists are shown through examples.
<<tabs tabsList:"[tag[nested]!has[draft.of]nsort[]] -[[Filters Tutorial]]" default:"20.01" class:"tc-vertical">>
\import exmp126/macro
;How nested macros can be implemented in Tiddlywiki?
:Tiddlywiki allows nested pragma, so macros can be defined the same way and be nested.
!! Example
The below example shows how the `child` macro has been nested in the body of `main` macro.
<<code-link "exmp126/macro">>
<$macrocall $name=alert type=danger src="""''Important'': Nested macros are like internal variables, so they cannot be called like <code>$(child)$</code>. See [[Call a Nested Macro Inside Parent]]""" />
Now if you call the main macro like this
<$macrocall $name="wikitext-example-without-html"
src="""<<<
<<main Simon Jerry>>
<<<
"""/>
;Remarks
* Nested macro is only a one line macro (can have `\end`)
* The `child` macro only is visible inside `main` macro
* Nested macro have access to the parent macro, so `child` can access to `name` like `$name$`
<<alert info "For more information see how [[pragma|https://tiddlywiki.com/#Pragma]] works.">>
* ''Question''
<<<
Assume you have a tiddler titled "Tiddler-A". It has a caption filed cotains: "I am Tiddler A". Next assume you have Tiddler-B, its summary filed contains "Tiddler-A" I want a transclusion like this in Tiddler-B
```
{{!!summary!!caption}}
```
But it doesnot work!
<<<
* ''Solution''
<<<
The solution is given by Marks as below
```
\define deref(tid fld) <$transclude tiddler=<<__tid__>> field=<<__fld__>> />
<$macrocall $name="deref" tid={{!!summary}} fld="caption"/>
```
To be read:
Mathematical Operation: https://tiddlywiki.com/prerelease/#Mathematics%20Operators
<<property-table "Maths in Tiddlywiki">>
<$edit-text tiddler=xxx tag=input default=""/>
<ol>
<$list filter="[has:field[keywords]search:keywords:literal{xxx}]">
<li><$link/></li>
</$list>
</ol>
<<docit>>
https://groups.google.com/d/msg/tiddlywiki/VvzQpl0Rytw/p0I8EbNUCQAJ
Add all refs
When working with [[https://tiddlywiki.com/prerelease/]] it is good to know when and from which branch it has been built. To know this open `$:/build` tiddler and it will show the required information including:
# Branch
# Commit number
# Date and time of build
CSS and macros for extended markup. Creates notebox and colored boxes for tip, info, warning, ...
! Troubleshooting
# The Tiddlywiki core macro parser expects the parenthesis of the macro parameter list to ''//immediately//'' follow the macro name, without any intervening white space. Having space between macro "name" and the open parentheses of the parameter list, prevents the parser from properly recognizing the macro definition.
Displaying external Web based content:
(testing in progress, using Firefox 64)
A. __Viewing in an iframe in Wiki__:
Note on Google app's- when accessing a site using a javascript login (an URL ending in .jspa), a "javascript not enabled" error message-- so apparently javascript has issues operating in iframes, at least with Firefox 64.
# Google Doc's will display and can be edited in an iframe
#* if you're not signed into Google which would grant edit permission.
#* PROBLEM, if signed into Google, the sheet displays but with a "~JavaScript isn't enabled in your browser, so this file can't be opened. Enable and reload." message which prevents not just editing but scrolling the page.
#* doc permissions influence these results, ie an "edit" in the URL. Not tested on Google app assets made public.
# Google Sheets will display in an iframe
#* if you're not signed into Google which would grant edit permission.
#* PROBLEM, if signed into Google, the sheet displays but with a "JavaScript isn't enabled in your browser, so this file can't be opened. Enable and reload." message which prevents not just editing but scrolling the page.
#* doc permissions influence these results, ie an "edit" in the URL. Not tested on Google app assets made public.
# File hosting:
#* Google Drive - no
#* OneDrive - unknown, not tested
#* Dropbox - unknown, not tested
# Some websites:
#* Will have to test the website if it will view in an iframe.
#** If the site/page has HTTP response header X-Frame-Option "DENY" or "SAMEORIGIN", displaying in an iframe will not work unless the Wiki is in the same domain.
#** sites using a javascript login (an URL ending in ".jspa"), a "javascript not enabled" error message will appear instead of the website displaying-- so apparently javascript has issues operating in iframes
#** When iframe viewing is prevented see Part B below.
# Youtube videos
#* "www.youtube.com/watch?_video ID_" won't view in iframe, but "www.youtube.com/embed/_video ID_" will.
#** Right click on a video at Youtbe and one of the options given is an embed snippet which is an iframe with the video url
#*** often gives a "video unavailable" error message.
# direct viewing of web hosted multimedia content:
#* Images, audio, video files online can be the src of an iframe
#* or images, audio, video files online can be embedded into tiddlers
#** this is useful with archive org audio which brings up a web page hosting the audio file
#** (1) using TW's _canonical_uri: for the file url and setting the tiddler type field ("audio/mp3" for audio)
#** (2) or using HTML audio and video tags in a tiddler
#** image hot-linking prevention on a website may block this
#* Text based files online can be the src of an iframe, any file that your browser can display in it without needing an external app, can be displayed in an iframe in its text format.
!
* In these cases where content will not display within an iframe, the content will have to be opened in a new browser tab using Wikitext external link markup, due to iframe security precautions preventing viewing in an iframe.
B. __View in new browser window__:
(using Wikitext external link markup or html "a href" tag with target="_blank")
# Google Doc's, Sheets, Drive & other Google app's
#* signed in or not- depends upon the share setting of the asset
# other file hosting - ~OneDrive, Dropbox
# many websites
#* sites/pages using HTTP response header X-Frame-Option "DENY" or "SAMEORIGIN", displaying it in a new tab is the only way to view it.
#* sites/pages using javascriot log-in/front end (ie URL's ending in ".jspa", displaying it in a new tab is the only way to view it.
# Dropbox, others?
# Youtube videos can be opened in a new tab with Wikitext external link markup using the standard "www.youtube.com/watch?_video ID_" in its url.
# Of course images, audio, video, text files online can be viewed using Wikitext external link markup.
#* Interesting experiment- Facebook won't display within an iframe but setting the iframe src to an image on the Facebook page, the image will display within an iframe.
*NOTE: if using html ``<a href>`` instead of using Wikitext external link markup, be sure to use target="_blank" to keep the url you're trying to open not open in the same tab your Wiki is in.
;Url
:https://forum.noteself.org/
A dedicated forum for using noteself.
Notifications are small informational messages that appear at the top right of the TiddlyWiki window, and automatically disappear after a preset time. How is it possible the preset time to about 15 s.
!! Solution
There is an internal JavaScript setting for the notification duration. It can be changed with this one liner:
```
title: $:/_ChangeNotificationDuration
module-type: startup
type: application/javascript
$tw.config.preferences.notificationDuration = 15 * 1000;
```
This is a the code
$:/_ChangeNotificationDuration
<<alert danger "not works for me!!">>
\define numc(num, font-size:"1.5em")
<style>
.numberCircle {
display:inline-block;
line-height:0px;
border-radius:50%;
border:2px solid;
font-size:$font-size$;
font-weight:700;
}
.numberCircle span {
display:inline-block;
padding-top:50%;
padding-bottom:50%;
margin-left:8px;
margin-right:8px;
font-wieght:700;
font-color:red;
}
</style>
<span class="numberCircle"><span>$num$</span></span>
\end
<<docit>>
See https://stackoverflow.com/a/32587571
;Test
<$list filter="01 02 10 35 99 101 155 850 999 1500 9999">
<$macrocall $name="numc" num=<<currentTiddler>> font-size="10px" />
</$list>
!! Numbered items
<<numc 1>> Hi Tiddlywiki!
<<numc 2>> Tiddlywiki is amazing
<<numc 3>> Tiddlywiki community is the best in the world!
<<numc 4>> I love Tiddlywiki
<span class="numberCircle">30</span>
<span class="numberCircle">01</span>
<span class="numberCircle">5435</span>
<span class="numberCircle">20</span>
<span class="numberCircle">100</span>
<style type="text/css">
.numberCircle {
display:inline-block;
border-radius:50%;
border:2px solid;
font-size:26px;
font-weight:700;
}
.numberCircle:before,
.numberCircle:after {
content:'\200B';
display:inline-block;
line-height:0px;
padding-top:50%;
padding-bottom:50%;
}
.numberCircle:before {
padding-left:8px;
}
.numberCircle:after {
padding-right:8px;
}
</style>
See: https://stackoverflow.com/a/32587571
<<docit>>
The below solution shows how an Online Dictionary Lookup can be created from inside Tiddlywiki.
!! Create dictionary tiddler
In a tiddler titled: [[S.S./data/dictionaryLinks]] and with its Content Type set to : `application/x-tiddler-dictionary`
put links of queries to those online dictionaries (websites) you wish to use. I have the following
>{{S.S./data/dictionaryLinks}}
!! Create macros
In a tiddler tagged with `$:/tags/Macro` , define the dictionary macro as follows:
><pre><$text text={{S.S./maro/dictionary}} /></pre>
Here the first macro `dataLinkCreator` create the query to an online dictionary and the second macro `dictionary` gets the word to lookup and create a list of links to all dictionaries existed in [[S.S./data/dictionaryLinks]]
!! Usage
It possible to directly call the dictionary macro as below
```
<<dictionary word>>
```
!! A case study
Assume some words are stored as tiddler title. It is required to show the links to online dictionaries for title word.
Here two solution are given.
# <div>
A template can be used to show the links, and the template contains the line:
```
<<dictionary {{!!title}}>>
```
The tiddler's title is simply the word itself, for example: avarice
</div>
# <div>
In another case, tiddler title is like `Word: name`, then the template line could be replaced with:
```
<$macrocall $name="dictionary" word={{{ [<currentTiddler>removeprefix[Word: ]] }}} />
```
See: [[Word: avarice]]
I make sites on Tiddlywiki. I use google spreadsheets with some google script in it.
See https://youtu.be/1osWmCbGkH8 unfortunately it is in Russian language.
<<docit>>
Some intresting code and snippets by Jed Carty!
https://ooktech.xyz:8443/Public
I have a lots of tiddlers I want to open in the story. Once I have done this I will do something on each tiddler. But until then I do not want to have to scroll back to my list.
;how to provide a link to a tiddler in a list that will open but not navigate to it?
: Use `$action-navigate` with `$scroll=no`
```
<$button>
<$action-navigate $to=SomeTiddler $scroll=no/>
DO EET!!
</$button>
```
making a macro to style it like a link and use the tiddler text as the button text could make it less obtrusive.
; How to open all tiddlers meet special criteria?
: Use the `action-navigate` widget
!! Example
The below macro
* Gets a filter as a criteria to find all tiddlers meet that criteria.
* Uses the `tm-close-all-tiddlers` message to close all tiddlers open in story river
* Uses the `action-navigate` to open every output of filtered list in story river
```
\define open-all(filter, label:"Open all")
<$button>$label$
<$action-sendmessage $message="tm-close-all-tiddlers"/>
<$list filter=<<__filter__>> >
<$action-navigate $to=<<currentTiddler>> />
</$list>
</$button>
\end
```
!! Demo
#<div>
Open all tiddlers tagged with `myTag`.
```
<<open-all filter:"[tag[myTag]]" label:"Open tagged with myTag">>
```
</div>
#<div>
Open all tiddlers have the word `semantic` in their title in alphabetical order.
```
<<open-all filter:"[search:title[semantic]] +[sort[]]" label:"Open tagged with myTag">>
```
</div>
!! Related solutions
These solutions are similar:
* [[Close all Tiddlers and Open Home]]
* [[Open all Tiddlers with Tag-X]]
;How is it possible to open all tiddlers tagged say with `mytag` in story river?
:This is simply can be done using a button widget. See the below examples
!! Example
The below example contains a macro to create a button, accept a button caption, and a tag. On button click all currently open tiddlers in story river are closed and all tiddlers tagged say with `mytag` will be opened.
The example is implemented using [[Example 33: Open all Tiddlers Tagged with batch]] tiddler
<pre><$view tiddler="Example 33: Open all Tiddlers Tagged with batch"/></pre>
!! Remarks
# Macro `myproject` has three parameter attributes
#* //mytag//: the tag name tiddlers tagged with
#* //msort//: the type of sort, e.g.
#** `title` to sort with tiddler title
#** `created` to sort with tiddler created date
#** `modified` to sort with tiddler modified date. This is the default value.
#** etc
#* //title//: this is the button caption
# The `button` widget has two actions
#* Close all currently open tiddlers in the story river using `tm-close-all-tiddlers` message
#* Open all tiddlers tagged with //mytag// using a list widget and `action-navigate` widget.
Go to [[Example 33|Example 33: Open all Tiddlers Tagged with batch]] to see the macro in action.
<<alert info "''Note'': There is a plugin [[OpenAll|http://t5a.tiddlyspot.com/#Open%20All%20By%20Tag]] which adds a button to tag pill, lets open all tiddlers tagges with say `mytag`.">>
!! Related solutions
These solutions are similar:
* [[Open All Tiddlers Meet Some Criteria]]
* [[Close all Tiddlers and Open Home]]
Select a tiddler to edit:<br>
<$select tiddler="$:/temp/openforedit">
<$list filter="[all[tiddlers]]"> <option><<currentTiddler>></option> </$list>
</$select>
<$button>edit
<$action-sendmessage $message="tm-edit-tiddler" $param={{$:/temp/openforedit}} />
</$button>
The list and order of stylesheet used in Tiddlywiki can be found here
[[Control Panel > Info > Advanced > Stylesheets|$:/core/ui/ControlPanel/Stylesheets]]
This tiddler shows the order of StyleSheets, and using the `tag pill` therein you can drag and drop to reorder them.
CSS by definition is Cascading if you can't see what the cascade order is, you can easily be tricked
Unless we were to provide details of all the class names already applied to all TiddlyWikis elements we should also provide information that allows people to identify those elements such as via inspect. And suggest how these can be overridden.
<<alert info "The order of stylesheets is very important. Always the last setting overwrites previous ones!">>
!!! More info
* https://tiddlywiki.com/#Using%20Stylesheets
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="256px" height="256px">
<g stroke-width="5" fill="none">
<g stroke="#fa3">
<circle r="6" cx="24" cy="16"/>
<circle r="6" cx="51" cy="88"/>
<path d="M35,39a16,16 0,1,0 4-5l-11-13M50,62l1,20"/>
</g>
<g stroke="#a38">
<circle r="6" cx="72" cy="13"/>
<path d="M37,23a27,27 0,0,1 39,24M68,18l-5,7"/>
</g>
<g stroke="#e33">
<circle r="6" cx="49" cy="46"/>
<circle r="6" cx="11" cy="62"/>
<circle r="6" cx="89" cy="58"/>
<path d="M16,60l8-4M56,73a27,27 0,0,0 19-19l8,2M45,73a27,27 0,0,1-17-43"/>
</g>
</g>
</svg>
<<tabs "[tag[tinka]]" class:"tc-vertical" default:"Tinka Introduction">>
<<docit>>
https://groups.google.com/d/msg/tiddlywiki/b2QBuydTVxk/uRGa6haVAwAJ
Part of <<tag exmp112>>.
Do not delete
<$macrocall $name="wikitext-example-without-html"
src="""\define mac1(a)
this is $a$
this is <$text text=<<__b__>> />
\end
\define mac2(b)
this is $b$
this is <$text text=<<__b__>> />
Call <<mac1 120>>
\end
<<mac1 100>>
---
<<mac2 200>>
"""/>
<<docit>>
\define doc-link(path name parameters)
$path$$name$$parameters$
\end
The below small macro creates a document link. It gets a thord attributes as parameters whihc here can be used to refer to a certain page in a PDF.
```
\define doc-link(path name parameters)
$path$$name$$parameters$
\end
```
!! Example
<$macrocall $name="wikitext-example-without-html"
src="""<a href=<<doc-link "http://gahp.net/wp-content/uploads/2017/09/" "sample.pdf" "#page=5">> target=PDFTab >My PDF File Page 5</a>
<a href=<<doc-link "http://gahp.net/wp-content/uploads/2017/09/" "sample.pdf" "#page=09">> target=PDFTab >My PDF File Page 09</a>""" />
;Run and time
: How it is possibe to measure the time for excution of any action in Tiddlywiki, like the time a macro takes to perform its operation task?
The core has built-in performance instrumentation for the refresh cycle. See “Performance Instrumentation” on the “Settings” tab of control panel. The wiki will need to be reloaded before it takes effect.
With performance instrumentation switched on, there is additional timing information displayed the browser developer console each time a refresh cycle is triggered. For example:
```
performance: mainRender: 327.83ms
performance: +filter: 49.70ms
performance: styleRefresh: 9.14ms
performance: +filter: 2.46ms
performance: mainRefresh: 68.10ms
performance: +filter: 37.69ms
```
The information above should be interpreted as follows:
<<<
"Initial rendering of the main page took 327ms (of which 50ms was filter evaluation). Refreshing the page stylesheet took 9ms (of which 2ms was filter evaluation). Refreshing the main page took 68ms (of which 38ms was filter evaluation)"
<<<
* mainRender is the time taken for the initial display of the page template
* styleRefresh is the time taken to refresh the page stylesheet
* mainRender is the time taken to refresh the main page template
* in each case, +filter denotes the time taken up with filter evaluation.
As an example, try switching between the sidebar tabs to compare how long they take to render.
See also:
* [[Perfromance Instrumentation|https://tiddlywiki.com/#Performance%20Instrumentation]]
* [[Performance|https://tiddlywiki.com/#Performance]]
<<docit>>
https://groups.google.com/d/msg/tiddlywikidev/DntYRuumXBM/wXYZ1-OKAgAJ
<<docit>>
Add comment by [[Mario|https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/tiddlywiki/66MkdqrlLlU/MZxL2oCIAwAJ]] on installing server version of plugins!
----
; Assume a local wiki created in mywiki folder, how is it possible to add some plugins?
:there is three different methods to have plugins working in a local wiki (e.g mywiki)
* use the plugins globally installed in Tiddlywiki/plugins root folder (available to all local wikis)
* use the packged plugin in JSON tiddlers (globally or locally)
* use the local plugin folders (only available to mywiki)
!! Global installation (Client-Server configuration)
If you have Tiddlywiki + Node.JS installed on your system, then every plugin installed in the root folder (tiddlywiki/plugins) then it will be available to all local wikis created on that machine
!! Local installation
By local installation it means plugin is only available to a specific wiki for that the plugin has been installed. Local installation can be done using a single file (ordinary JSON tiddlers)or plugin folder (separate tiddler files)
* Single file (packaged plugin): open you locla wiki and drag and drop the plugin file into it (see [[manual installation|https://tiddlywiki.com/#Manually%20installing%20a%20plugin]])
* Plugin folder (separate tiddler files): In your local wiki folder go to `plugins` folder. If not existed create one. Copy and paste your pluging folder there (see [[plugin folder|https://tiddlywiki.com/#PluginFolders]])
<<alert info "Plugin folders must be immediate children of the wiki “plugins” folder. Only for global installation (in plugins root folder of Tiddlywiki) plugin folders can be stored in `plugins/publisher`">>
It happens that the plugins library does not work in prerelease. To get it working you can use the library of previous stable release.
!! Example
The current prerelease of this date (Mar 2nd, 2021) is 5.1.24 to get it working do as follows
# Goto https://tiddlywiki.com/prerelease/
# Locate and edit this shadow tiddler: `$:/config/OfficialPluginLibrary`
# Change the value in the`URL` field to: `https://tiddlywiki.com/library/v5.1.23/index.html`
Another solution is
# Goto https://tiddlywiki.com
# Locate this shadow tiddler: `$:/config/OfficialPluginLibrary`
# import it to your prelease wiki
http://pngimg.com/
<<image-basic width:200px img:"http://pngimg.com/uploads/melon/melon_PNG14386.png" align:right caption:"A sample high quality image from PNGImage">>
This site is designed for all web and graphic designers who need free PNG images for their work. All images on this site you can download free and use for any non-commercial purposes. Some images we found in internet and just put them in catalog, some PNG images we did by ourselves.
You can download free PNG images with alpha transparency background on our site without registration. All images are free, in best resolution and quality.
;keywords
:resource, png, animals, flowers, fruits, foods, cities
; How to populate story list with a set of tiddlers?
: Set the list `field` of `$:/StoryList` with those tiddlers
!! Example
Close all tiddlers and populate story list with the below tiddlers
* Home
* Learning Resources
* Check List Demo
<$macrocall $name="wikitext-example-without-html"
src="""<$button>
<$action-setfield $tiddler="$:/StoryList" $field="list" $value="Home [[Learning Resources]] [[Check List Demo]]"/>
Populate Story!
</$button>
"""/>
; How to check the position of an item in the list with respect to a selected item?
!! Example
{{exmp085/demo||template/code}}
!! Result
>{{exmp085/demo}}
<<docit>>
These are some treads worth to be documented
# https://groups.google.com/d/msg/tiddlywiki/L09ajwHuUUo/Y1XLE7awAQAJ
# http://tiddlytools.com/filtergenerators.html#TiddlyTools%2FFilterGenerators%2FPowerSearch
# http://tiddlytools.com/filtergenerators.html#TiddlyTools%2FMacros%2Fedit-list
!!Notes:
* PowerSearch is tagged with $:/tags/AdvancedSearch so that it is automatically added as a tab in the $:/AdvancedSearch tiddler.
* edit-list is used by PowerSearch to provide a compact interface so you can either select pre-determined search values or enter custom values by typing.
* These two tiddlers are NOT a plugin, and can be dropped into any TiddlyWiki document and used IMMEDIATELY, without saving/reloading the file.
; How to have local or private macro?
: Private macro is a macro is not accessible through the Tiddlywiki global namespace. These are normally auxiliary macros used by other macros or are specific to a plugin.
!! Solution
You can use the existing //import pragma// to bring in macro definitions from other tiddlers without cluttering the ''global name space''. For example, you might have a global macro defined in a tiddler tagged `$:/tags/Macro`, and then put your local macros into tiddlers just tagged `$:/tags/MyPublisher/MyPlugin/LocalMacros`. Then, at the top of your global macro you’d bring in those local macros with:
```
\import [all[shadows+tiddlers]tag[$:/tags/MyPublisher/MyPlugin/LocalMacros]!has[draft.of]]
\define myPublicMacro()
…
```
!! Sub macros
Assume three are three macros, tow of them work as sub-macro (like sub-function or private methods in other programming language) for the main macro.
<<<
```
\define smac1(a) This is $a$
\define smac2(b) and she lives in $b$.
\define myMac(x,y)
<<smac1 $x$>> <<smac2 $y$>>
\end
```
<<<
The first two macro should not be available globally as they are sub-macro and only used by `myMac` here. How to have `myMac` globally accessible prevent the access to first two macros?
!! Solution
#<div>
The first two macros are put in a tiddler with a custom tag say `myCode`
* Title: [[Example 36: Private Macro]]
* Tag: `mycode`
* Text: as below
<<<
```
\define smac1(a) This is $a$
\define smac2(b) and she lives in $b$.
```
<<<
</div>
#<div>
The third macro `myMac` should be put in a tiddler tagged with `$:/tags/Macro` to be globally available. Beause it needs the first two macros and they are not accessible, then it is required to import them as below
* Title: [[Example 36: Global Macro]]
* Tag: `$:/tags/Macro`
* Text: as below
<<<
```
\define myMac(x,y)
\import [tag[myCode]]
<<smac1 """$x$""">> <<smac2 """$y$""">>
\end
```
<<<
It is also possible to use the `importvariables` widget as below
* Title: [[Example 36: Global Macro]]
* Tag: `$:/tags/Macro`
* Text: as below
<<<
```
\define myMac(x,y)
<$importvariables filter="[tag[myCode]]">
<<smac1 """$x$""">> <<smac2 """$y$""">>
</$importvariables>
\end
```
<<<
</div>
!! See example in action
!!! Call global macro
<$macrocall $name="wikitext-example-without-html"
src="""><<myMac "Bugs Bunny" "Rabbit Hole Hill">>"""/>
!!! Call private macro.
<$macrocall $name="wikitext-example-without-html"
src="""<<smac1 "Bugs Bunny">>
<<smac2 "Rabbit Hole Hill">>
"""/>
<<alert warning "''Note'': No output by private macro `smac1` and `smac2`, because they are NOT globally accessible.">>
\define my-actions(a:"Hello", b:"World")
<$action-sendmessage $message="tm-notify" $param="exmp098/notifyTemplate" variable01="""$a$""" variable02="""$b$""" />
\end
;How to pass variable to tm-notify widget message?
:The variables can be provided to `tm-notify` as hasmap of variables ^^[[1|https://tiddlywiki.com/#WidgetMessage%3A%20tm-notify]]^^.
!!Solution
The below macro `my-action` uses the `tm-notify` to display the content of tiddler passed to `$param` (here [[exmp098/notifyTemplate]]) as notification.
<<show-macro>>
!! Remarks
The `tm-notify` in the above macro has the below attached parameters:
: the `$param` gets the [[exmp098/notifyTemplate]] tiddler to display as alert (notification)
: the `variable01` which is provided to the notification as a variable.
: the `variable02` which is provided to the notification as another variable.
<<alert info """''Note'': It is possible to pass many variables to `tm-notify` like the two variables above e.g. `x="valx" y="valy" z="valz"` etc.""">>
!!Example i
The below example call `my-actions` using a `$button` widget with default parameters value.
<$macrocall $name="wikitext-example-without-html"
src="""<$button actions=<<my-actions>> >Notification One!</$button>"""/>
!!Example ii
The below example call `my-actions` using a `$button` widget with provided parameters value.
<$macrocall $name="wikitext-example-without-html"
src="""<$button actions=<<my-actions a:"Lovely" b:"Tiddlywiki">> >My Second Notification!</$button>"""/>
This is belong to Administration Tools category.
<<docit>>
A WBDAV server from Python
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="44pt" height="44pt">
<defs>
<linearGradient id="pyYellow" gradientTransform="rotate(45)">
<stop stop-color="#fe5" offset="0.6"/>
<stop stop-color="#da1" offset="1"/>
</linearGradient>
<linearGradient id="pyBlue" gradientTransform="rotate(45)">
<stop stop-color="#69f" offset="0.4"/>
<stop stop-color="#468" offset="1"/>
</linearGradient>
</defs>
<path d="M27,16c0-7,9-13,24-13c15,0,23,6,23,13l0,22c0,7-5,12-11,12l-24,0c-8,0-14,6-14,15l0,10l-9,0c-8,0-13-9-13-24c0-14,5-23,13-23l35,0l0-3l-24,0l0-9l0,0z M88,50v1" fill="url(#pyBlue)"/>
<path d="M74,87c0,7-8,13-23,13c-15,0-24-6-24-13l0-22c0-7,6-12,12-12l24,0c8,0,14-7,14-15l0-10l9,0c7,0,13,9,13,23c0,15-6,24-13,24l-35,0l0,3l23,0l0,9l0,0z M140,50v1" fill="url(#pyYellow)"/>
<circle r="4" cx="64" cy="88" fill="#FFF"/>
<circle r="4" cx="37" cy="15" fill="#FFF"/>
</svg>
;How can I make it so that in the Recent tab the dates in which the tiddlers are ordered appear highlighted in bold?
: Use customized style sheet
# Create a new tiddler
# Tag it with `$:/tags/Stylesheet`
# <div>
Put the below css inside it
```
/* Recent tab */
.tc-sidebar-lists .tc-timeline {
font-weight: bold;
}
```
</div>
# Save and see the result
See [[Example 30: Colored Timeline]]
;How to add bullets or other symbols at the begining of each timeline entry?
As explained by [[Mat|https://groups.google.com/d/msg/tiddlywiki/3Q0sijwYp0g/IsMPAvcpEgAJ]], create a tiddler tagged with `$:/tags/Stylesheet` with below contents
```
.tc-timeline .tc-menu-list-subitem::before {content:"⦁ ⚬ ●"}
```
This causes every entry starts with `⦁ ⚬ ●`. The below example adds ` -` prefix to each entry
```
.tc-timeline .tc-menu-list-subitem::before {content:" -"}
```
* [[Jed Carty on Wiki Reference Wiki|http://inmysocks.tiddlyspot.com/#Making%20a%20Plugin%20Library]]
* [[Matt Lauber on TW5 Plugin Library Template|https://github.com/mklauber/tw5-plugins-template]]
* [[Matt Lauber on TW5 Plugins Library|https://github.com/mklauber/tw5-plugins]]
* [[Mario Pietsch WikiLabs|https://wikilabs.github.io/]]
\define myregexp() ^([a-zA-Z0-9]+\.)*[ext]+$
A macro to list all tiddlers with a `.ext` extenstion in their name using the `regexp`. The name can have any alpha-numeric character(e.g. a-z, A-Z, 0-9)
<<<
* Change `ext` with any extension you like
* This example shows how `regexp` can be used in filters
<<<
* Macro
```
\define myregexp() ^([a-zA-Z0-9]+\.)*[ext]+$
```
* Example
```
<<list-links "[regexp<myregexp>!sort[]]">>
```
* Results
<<list-links "[regexp<myregexp>!sort[]]">>
---
Related tiddlers
<<list-links "[tag[exmp016]] -[<currentTiddler>]">>
;When click a button in Chrome or Opera, a blue frame (border) is appeared, how to remove it?
# Create a tiddler, name it what you want
# Tag it with `$:/tags/STylesheet`
# Add the following as text
```
.tc-btn-invisible { outline:none; }
```
\define deleteIdx()
<$button class="tc-btn-invisible tc-tiddlylink">✕
<$action-setfield $tiddler=<<__dataTiddler__>> $index=<<idx>> />
</$button>
\end
\define deleteAllzeros()
<$button>Delete all ✕
<$list filter="[<__dataTiddler__>indexes[]]" variable=idx>
<$list filter="[<__dataTiddler__>getindex<idx>match[0]]" variable="zidx">
<$action-setfield $tiddler=<<__dataTiddler__>> $index=<<idx>> />
</$list>
</$list>
</$button>
\end
\define show-idx-val(dataTiddler)
<<deleteAllzeros>><br>
<$list filter="[<__dataTiddler__>indexes[]]" variable=idx>
<$list filter="[<__dataTiddler__>getindex<idx>match[0]]" variable="zidx">
<<idx>>: 0 <<deleteIdx>><br/>
</$list>
</$list>
\end
;How display properties (index/value) of a data tiddler with an optional delete buttom to remove indexes with zero value?
:Using Tiddlywiki 5.1.20+ it is possible to employ the `match` filter operator to locate indexes with zero value.
!! Solution
This solution contains three macros
<<show-macro>>
;Remarks
: `show-idx-val` is the main macro to be called. It uses `deleteAllzeros` to show a button to delete all indexes with zero value. A nested $list widgets to read indexes and then extract values and compare against zero. In then display each index has a value of `0` with a delete button.
: `deleteIdx`, a macro creates a button to delete an index
: `deleteAllzeros` a macro delete all indexes have zero value using `action-setfield` widget
!! Example
<$macrocall $name="wikitext-example-without-html"
src="""><<show-idx-val exmp093/data>>"""/>
\define reset-mydata()
<$action-setfield $tiddler="exmp042/sample/data"
text="""USA:840
GBR:826
DEU:276
GRD:308
IRN:364
FRA:250
""" />
\end
;How to remove the index/value pairs using forms?
: Use `select` widget to choose the desired index, and `action-setfield` to remove it.
The below code includes
* A `select` widget to lists all the indexes and let you choose one.
* A temporary tiddler to store the selected index for later operation.
* An `action-setfield` widget with //NO// `value` attribute to delete the index/value pair from DataTiddler.
<$macrocall $name="wikitext-example-without-html"
src="""><$set name="dataTid" value="exmp042/sample/data">
Select Index: <$select tiddler="$:/temp/exmp042">
<$list filter='[<dataTid>indexes[]]'>
<option value=<<currentTiddler>>><$view field='title'/></option>
</$list>
</$select>
<$button>Remove index/value
<$action-setfield $tiddler=<<dataTid>> $index={{$:/temp/exmp042}}/>
</$button>
</$set>
"""/>
!! Demo DataTiddler
The [[exmp042/sample/data]] is used in this example for demonstration purpose.
>{{exmp042/sample/data}}
!! Reset DataTiddler to its initial state
You can reset the [[exmp042/sample/data]] to its initial state. This will allow you to do more experiments. The reset, will write again the data into tiddler. Just push reset button:
><$button actions=<<reset-mydata>>>Reset to initial state</$button>
!! See also
* [[Jed Carty: InMySocks Wiki|http://inmysocks.tiddlyspot.com/#Bookmarks%20Settings]]
\define remove-quotes(term)
<$set name="item" value=<<__term__>> >
<$set name="noquote"
value={{{ [<item>removeprefix["]removesuffix["]] [<item>removeprefix[']removesuffix[']] ~[<item>] }}}
emptyValue="Process failed!">
<<noquote>>
</$set>
</$set>
\end
! Using the ELSE run filter prefix
The below code is a demo of //ELSE run// `~` filter prefix. It's purpose here is to get a parameter and remove its surrounding single or souble quotes. If the parameter has not any surrounding quotes, then returns itself.
!! Macro
```
\define remove-quotes(term)
<$set name="item" value=<<__term__>> >
<$set name="noquote"
value={{{ [<item>removeprefix["]removesuffix["]] [<item>removeprefix[']removesuffix[']] ~[<item>] }}}
emptyValue="Process failed!"
</$set>
</$set>
\end
```
!! Examples
!!! Remove single quotes
<$macrocall $name="wikitext-example-without-html"
src="""><<remove-quotes "'single quotes'">>
"""/>
!!! Remove double quotes
<$macrocall $name="wikitext-example-without-html"
src="""><<remove-quotes '"double quotes"'>>
"""/>
!!! Empty value
The macro will return the Process failed! if no parameter passed
<$macrocall $name="wikitext-example-without-html"
src="""><<remove-quotes>>
"""/>
<<docit>>
*Question: https://groups.google.com/d/msg/tiddlywiki/RTh8HkxznZk/q1cYEcgIBAAJ
* Mark: https://groups.google.com/d/msg/tiddlywiki/RTh8HkxznZk/FdbztKoKBAAJ
* Eric: https://groups.google.com/d/msg/tiddlywiki/RTh8HkxznZk/2vHJPhMLBAAJ
;What is the purpose of replace filter operator?
: It's more about list manipulation rather than string manipulation. But you could use it for string manipulation like below examples.
!! Example i
This example simply looks in the mystr string and replace `knights` with `doctors`
<$macrocall $name="wikitext-example-without-html"
src="""><$vars mystr="The knights who say ni">
<$list filter="[<mystr>split[ ]] doctors +[replace[knights]join[ ]]" variable=result>
<<result>>
</$list>
</$vars>
"""/>
!! Example ii
Extended to a larger group, this version will change "Operator" to "Function" for items at [[https://tiddlywiki.com/]]. In this wiki, it finds all tiddler in title hase the word Operator and replace it with Function.
<$macrocall $name="wikitext-example-without-html"
src="""><$list filter="[regexp:title[\bOperator\b]!search:title[Example]]" variable="mystr">
<$list filter="[<mystr>split[ ]] Function +[replace[Operator]join[ ]]">
</$list>
</$list>
"""/>
;How to rename a field in bunch of tiddlers from an old name to a new one?
:Use the two widgets action-setfield and action-deletefield
!! Code
The below code shows how to rename the field `alias` to `aliases`
<<code-link exmp104/rename-field>>
;How it works
: find all tiddlers has a field called `alias`
: copy the content of `alias` field to a new field `aliases`
: delete the old field `alias`
Note that the macro `show-tiddlers` is a helper macro to list the tiddlers has `alias` field name and then `aliases` field name. This is used just for displaying the result.
!!Example
<<content exmp104/rename-field>>
\define lingo-base() $:/language/EditTemplate/
<$fieldmangler>
<$edit-text
tiddler="$:/temp/replace-tag"
field="replace"
tag="input"
default=""
placeholder="replace tag"
focusPopup=<<qualify "$:/state/popup/replace-tags">>
class="tc-popup-handle"/>
<$button
popup=<<qualify "$:/state/popup/replace-tags">>
class="tc-btn-invisible tc-btn-dropdown"
tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}}
aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>
{{$:/core/images/down-arrow}}</$button>
<$edit-text
tiddler="$:/temp/replace-tag"
field="with"
tag="input"
default=""
placeholder="with tag"/>
<$reveal state="$:/temp/replace-tag!!replace" type="nomatch" text="">
<$button class="tc-btn-invisible tc-btn-dropdown">
<$action-deletetiddler $tiddler="$:/temp/replace-tag"/>
{{$:/core/images/close-button}}
</$button>
</$reveal>
<div class="tc-block-dropdown-wrapper">
<$reveal
state=<<qualify "$:/state/popup/replace-tags">>
type="nomatch"
text=""
default="">
<div class="tc-block-dropdown">
<$linkcatcher to="$:/temp/replace-tag!!replace">
<$list filter="[tags[]search:title{$:/temp/replace-tag!!replace}sort[]]">
{{||$:/core/ui/Components/tag-link}}
</$list>
</$linkcatcher>
</div>
</$reveal>
</div>
</$fieldmangler>
<$list filter='[tag{$:/temp/replace-tag!!replace}]'>
<$fieldmangler tiddler=<<currentTiddler>>>
<$button tooltip="Click to replace tag">
{{$:/core/images/done-button}}
<$action-sendmessage $message="tm-remove-tag"
$param={{$:/temp/replace-tag!!replace}}/>
<$action-sendmessage $message='tm-add-tag'
$param={{$:/temp/replace-tag!!with}}/>
</$button>
<$link><$view field=title/></$link><br>
</$fieldmangler>
</$list>
<$reveal type="nomatch" state="$:/temp/replace-tag!!with" text="">
<$list filter="[title{$:/temp/replace-tag!!replace}is[tiddler]]">
<$button>
rename tag "{{$:/temp/replace-tag!!replace}}" to "{{$:/temp/replace-tag!!with}}"
<$action-setfield
$tiddler={{$:/temp/replace-tag!!replace}}
title={{$:/temp/replace-tag!!with}}/>
<$action-deletetiddler
$tiddler={{$:/temp/replace-tag!!replace}}/>
<$action-sendmessage
$message="tm-close-tiddler"
$param={{$:/temp/replace-tag!!replace}}/>
</$button>
</$list>
</$reveal>
^^ Brought by Tobias Beer^^
\define listAllResponders()
<$list filter="[each[responder]get[responder]]">
<$text text=<<currentTiddler>>/>
</$list>
\end
Search in responders <$edit-text tiddler="$:/temp/responder-stats" tag=input default=""/>
<$wikify name=allresponders text=<<listAllResponders>> >
<small>All responders: <$count filter="[enlist<allresponders>]"/></small>
<$list filter="[enlist<allresponders>sort[]search{$:/temp/responder-stats}]">
<b><$text text=<<currentTiddler>> /></b>
<ol>
<$list filter="[contains:responder<currentTiddler>]">
<li><$link/></li>
</$list>
</ol>
</$list>
</$wikify>
This wiki contains macros for gradually reveals things
This wiki was created in collaboration with with Jed Carty
; How a lis of date in the form of YYYY-MM-DD can be modified and reversed as DD.MM.YYYY?
:Use split on `-`, join with `.` and then reverese operator.
!! Example
Write a script to convert 2019-03-12 into 12.03.2019
<$macrocall $name="wikitext-example-without-html"
src="""><$list filter="2019-04-12 2019-05-18 2019-11-28">
<$text text={{{ [<currentTiddler>split[-]reverse[]join[.]] }}}/><br>
</$list>
"""/>
;Remarks
* The $list lists all entries and the body processes each item
* The `split[-]` splits entry on `-` so 2019-04-12 converted to three separate entries
* The `reverese` then reverse the order, so 2019 04 12 will convert to 12 04 2019
* The `join[.]` next join all entries in form of a single entry with `.` so we get 12.04.2019
<<alert warning """ ''Use with care''! Seems the TW toc macro supports this feature out of the box""">>
; How is it possible to hide some toc levels in TW table of contents? In other words how you can customize the levels of TOC? or how you can limits the TOC up to level three?
It seems the TW core macro `toc-selective-expandable` has not the capabilities to do this! A solution has been proposed by Mark S and he has rewritten the core macro as below
<details>
<summary>Details of code</summary>
```
\define toc-linked-selective-expandable-body(tag,sort:"",itemClassFilter:" ",exclude,path,prune:"")
<$set name="toc-state" value=<<qualify """$:/state/toc$path$-$(currentTiddler)$""">>>
<$set name="toc-item-class" filter="""$itemClassFilter$""" emptyValue="toc-item" value="toc-item-selected" >
<$set name="prune" value="""$prune$""">
<li class=<<toc-item-class>>>
<$link>
<$list filter="[all[current]] -[enlist<prune>] +[tagging[]limit[1]]" variable="ignore" scratch="-[enlist<prune>]" emptyMessage="<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>">
<$reveal type="nomatch" state=<<toc-state>> text="open">
<$button set=<<toc-state>> setTo="open" class="tc-btn-invisible tc-popup-keep">
{{$:/core/images/right-arrow}}
</$button>
</$reveal>
<$reveal type="match" state=<<toc-state>> text="open">
<$button set=<<toc-state>> setTo="close" class="tc-btn-invisible tc-popup-keep">
{{$:/core/images/down-arrow}}
</$button>
</$reveal>
</$list>
<<toc-caption>>
</$link>
<$reveal type="match" state=<<toc-state>> text="open">
<$macrocall $name="toc-selective-expandable" tag=<<currentTiddler>> sort="""$sort$""" itemClassFilter="""$itemClassFilter$""" exclude="""$exclude$""" path="""$path$""" prune="""$prune$"""/>
</$reveal>
</li>
</$set>
</$set>
</$set>
\end
\define toc-selective-expandable-empty-message()
<<toc-linked-selective-expandable-body tag:"""$(tag)$""" sort:"""$(sort)$""" itemClassFilter:"""$(itemClassFilter)$""" exclude:"""$(excluded)$""" path:"""$(path)$""" prune:"""$(prune)$""">>
\end
\define toc-selective-expandable(tag,sort:"",itemClassFilter,exclude,path,prune)
<$vars tag="""$tag$""" sort="""$sort$""" itemClassFilter="""$itemClassFilter$""" excluded="""$exclude$ -[[$tag$]]""" path="""$path$/$tag$""" prune="""$prune$""" >
<ol class="tc-toc toc-selective-expandable">
<$list filter="""[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$] -[[$tag$]] $exclude$""">
<$list filter="[all[current]toc-link[no]]" variable="ignore" emptyMessage=<<toc-selective-expandable-empty-message>> >
<$macrocall $name=toc-unlinked-selective-expandable-body tag="""$tag$""" sort="""$sort$""" itemClassFilter="""$itemClassFilter$""" exclude=<<excluded>> path=<<path>> prune="""$prune$""" >
</$list>
</$list>
</ol>
</$vars>
\end
```
</details>
<<alert danger """ ''Warning'': This code will overwrite the core macro, so it is recommended to rename these macro! """>>
!! Example
If used at [[https://TiddlyWiki.com]] will show the standard table of contents, but "Learning" and "Drag and Drop" (under Features) will both be links -- not expandable branches.
```
<div class="tc-table-of-contents">
<<toc-selective-expandable "TableOfContents" prune:"Learning [[Drag and Drop]]">>
</div>
```
Dictionary.com: https://www.dictionary.com/browse/
The Free Dict.: http://www.thefreedictionary.com/
Merrium-Webster: https://www.merriam-webster.com/dictionary/
Collins: https://www.collinsdictionary.com/dictionary/english/
Oxford: https://en.oxforddictionaries.com/definition/
Chambers: http://chambers.co.uk/search/?title=21st&query=
OneLook: http://www.onelook.com/?w=
American Heritage:https://ahdictionary.com/word/search.html?q=
Wikipedia: https://en.wikipedia.org/wiki/
Wiktionary: https://en.wiktionary.org/wiki/
Etymology: http://www.etymonline.com/index.php?term=
Google: https://www.google.com/#q=
DuckDuckGo: https://duckduckgo.com/html/?q=
Yandex: https://www.yandex.com/search/?lr=10619&text=
Baidu: http://www.baidu.com/s?wd=
Qwant: https://www.qwant.com/?q=
\define dataLinkCreator(data-file index word)
\rules except wikilink
<$wikify name="input" text="{{$data-file$##$index$}}$word$">
<a href=<<input>> target="_blank">$index$</a>
</$wikify>
\end
\define dictionary(word datafile:"S.S./data/dictionaryLinks")
<small>
<$list filter="[[$datafile$]indexes[]]" variable="index">
<$macrocall $name="dataLinkCreator" data-file="$datafile$" index=<<index>> word=$word$/>
</$list>
</small>
\end
<$list filter="[is[current]tag[lookup]]">
<$macrocall $name="dictionary" word={{{ [<currentTiddler>removeprefix[Word: ]] }}} />
</$list>
function f(x)
real:: x, y
integer:: m
! A test
print(x,y)
end function f
This tiddler is part of exmp013!
Donot delete it!
See:
<<list-links "[tag[exmp03]]">>
;How the filter output can be saved for further use?
Using the `set` widget it is possible to save the output of a filter run.
```
<$set name="output" filter="[tag[Filter Operators]first[5]]">
Text of variable: <$text text=<<output>>/>
List of titles: <$macrocall $name="list-links" filter=<<output>>/>
</$set>
```
* Example
The below example run a filter and save its results into a variable called `output`, it then is used in another operation.
<$macrocall $name="wikitext-example-without-html"
src="""<$set name="output" filter="[tag[list]first[5]]">
>Text of variable: <$text text=<<output>>/>
List of titles:
><$macrocall $name="list-links" filter=<<output>>/>
</$set>
"""/>
For security reasons, modern web browsers do not let you ''directly'' write to the local filesystem.
TiddlyWiki is built on top of browser tech. As such, it has the same restrictions on local filesystem access.
Fortunately, nearly all web browsers DO have one reliable method of writing to the local filesystem: ''downloading a file''.
Downloading offers some measure of implicit information privacy/security because it requires user-interaction (no silent saving of files), and uses system-level dialogs to access the filesystem (no direct program access to read your directory info).
By default, when you try to save a locally-stored TiddlyWiki without any add-ons or helper apps, it triggers what appears to be a ''download'' activity, even though the file is clearly already on your own system.
Many browsers automatically save downloaded files to a specific location (e.g., "/Downloads" or similar).
Some browsers allow you to change this default location to a different directory and/or "ask for location" each time you download so you can specify the desired filename and directory.
If you tell your browser to point to the directory in which your TiddlyWiki file is stored, then when you press "save", you get a system-level dialog that allows you to enter a new filename or select an existing file.
Most systems will automatically suggest a filename by appending a number to the current filename, e.g., "index.html (1)". You can, of course, select the *existing* TiddlyWiki filename, e.g., index.html (without any "(n)" suffix), which should then prompt you for permission to overwrite the previously saved file. After saving, if you reload your TiddlyWiki file, it will contain your saved changes as you would expect.
Although the "default download saver" ultimately ''does'' let you save changes locally, some people find the experience to be less-than-optimal. To address this, there are ''many different add-ons'' and system-specific helper apps that can potentially provide a smoother experience, depending upon your usage patterns and platform(s) of choice.
https://tiddlywiki.com/#GettingStarted
https://groups.google.com/d/msg/tiddlywiki/Qi8aOL8jDBg/c9pEVgm7BAAJ
! Search filter
Search filter operator is a powerful feature in Tiddlywiki lets you to look for information stored in tiddlers. It can search all fields and from TW 5.1.18 supports extended syntax.
<<<From: [[Tiddlywiki.com|https://tiddlywiki.com/#search%20Operator]]
```
[search:<field list>:<flag list>[<operand>]]
```
* ''field list'': a comma delimited list of field names to restrict the search
** defaults to <<.field tags>>, <<.field text>> and <<.field title>> if blank
** an asterisk `*` instead of the field list causes the search to be performed across all fields available on each tiddler
** preceding the list with a minus sign `-` reverses the order so that the search is performed on all fields except the listed fields
* ''flag list'': a comma delimited list of flags (defaults to `words` if blank)
* ''operand'': filter operand
<<<
See examples:
><<list-links "[tag[search]]" type:"ol">>
!! How do a case sensitive search?
By the default the search operator is NOT case sensitive. To make a case sensitive search use the `casesensitive` flag
!! Example
Search all tiddlers have `Hirad` word in thier title or caption. The search should be case sensitive. The filter is then is:
`[search:title,caption:casesensitive[Hirad]]`
<$macrocall $name="wikitext-example-without-html"
src="""><$list filter="[search:title,caption:casesensitive[Hirad]]">
</$list>
"""/>
\define thisSearchMacro(search:"", dataTid:"exmp039/acronyms/web")
<ol>
<$list filter="[[$dataTid$]indexes[]regexp:title[(?i)$search$]]">
<li><<currentTiddler>>: <$transclude tiddler="$dataTid$" index=<<currentTiddler>>/></li>
</$list>
</ol>
\end
; How to search a DataTiddler indexes using the regexp?
The below solution is proposed by ''{{!!responder}}'' to use `regexp` for searching a DataTiddler.
It uses a macro with a default DataTiddler. It enables you to make the search using regexp filter instead of requiring the exact name.
```
\define thisSearchMacro(search:"", dataTid:"exmp039/acronyms/web")
<ol>
<$list filter="[[$dataTid$]indexes[]regexp:title[(?i)$search$]]">
<li><<currentTiddler>>: <$transclude tiddler="$dataTid$" index=<<currentTiddler>>/></li>
</$list>
</ol>
\end
```
!! Remarks
filter explanation:
# Get your DataTiddler (the default is [[exmp039/acronyms/web]])
# Get its indexes
# Filter them by your search string
# For each remaining transclude the content
!! Example i
Search the defualt DataTiddler ([[exmp039/acronyms/web]]) for `ftp`
<$macrocall $name="wikitext-example-without-html"
src="""><<thisSearchMacro "ftp">>
"""/>
!! Example ii
Search the [[exmp039/roman-numbers]] DataTiddler for `f`. This will list every index has the letter `f` in its name.
<$macrocall $name="wikitext-example-without-html"
src="""><<thisSearchMacro search:"f" dataTid:"exmp039/roman-numbers">>
"""/>
Enter a keyword and click on the created link to search the Tiddlywiki toolmap.
{{Search Tiddlywiki.com}}
!! How to search all tiddler fields?
In TW 5.1.18 above, it is possible to search all fileds of tiddler for a keyword or phrase. The syntax is as bellow
<<<[[From Tiddlywiki|https://tiddlywiki.com/#search%20Operator]]
```
[search:*[keyword]]
```
<<<
!! Example i
Search all NON system tiddlers have the word `John` in any field.
* Use the filter: `[search:*[John]]`
* To exclude the system tiddlers: `[!is[system]search:*[John]]`
<$macrocall $name="wikitext-example-without-html"
src="""<$list filter="[!is[system]search:*[John]]">
</$list>
"""/>
!!Example ii
This example is a courtesy of standard search on the sidebar [[See Alex post|https://groups.google.com/d/msg/tiddlywiki/w03HpUdfSIk/EAa24YlqBQAJ]].
The second $list searches the keyword in all fields using `:*`.
```
\define searchResultList()
//<small>{{$:/language/Search/Matches/Title}}</small>//
<$list filter="[!is[system]search:title{$(searchTiddler)$}sort[title]limit[250]]" template="$:/core/ui/ListItemTemplate"/>
//<small>{{$:/language/Search/Matches/All}}</small>//
<$list filter="[!is[system]search:*{$(searchTiddler)$}sort[title]limit[250]]" template="$:/core/ui/ListItemTemplate"/>
\end
<$set name="searchTiddler" value="$:/temp/search">
<div class="tc-search">
<$edit-text tiddler="$:/temp/search" type="search" tag="input" class="tc-popup-handle"/>
<<searchResultList>>
</div>
</$set>
```
\define contactevents(name)
Found in the field 'people' of:
<$list filter="[tag[event]search:people<__name__>]">
</$list>
\end
```
\define contactevents(name)
Figured in the field 'people' of:
<$list filter="[tag[event]search:people<__name__>]">
</$list>
\end
```
!! Example
<<<
This example shows a filter to search among the tiddlers tagged with `event` having a filed called `people`.
!!! All tiddlers with tag: `event`
<<list-links "[tag[event]]">>
!!! Tiddlers having Hirad in people filed
<$macrocall $name="wikitext-example-without-html"
src="""<<contactevents Mohammad>>
"""/>
<<<
Search in fields is a [[a solution|https://groups.google.com/d/msg/tiddlywiki/w03HpUdfSIk/ZJAaEwyscV4J]] by [[Stephan Hradek]] that adds an additional tab to [[Advanced Search|$:/AdvancedSearch]] {{$:/core/ui/Buttons/advanced-search}} allowing you to search in field contents.
''Note:'' By default the `text` field, i.e. the tiddler body is excluded from search in fields. If you want to search only the `text` field you have to specifically select it.
Assume you have several local wiki files stored in different places in your disks (thumb drive, hard disks, local networks) and you want to search all of them from inside a main wiki (the one you normally work with), how to do this?
To search local file you need these parts
# A dictionary tiddler to store the full path to the local wikis
# A user interface (UI) tiddler includes
#* a textbox to get the keyword to search
#* a set of checkbox to customize search
#* a set of macro to make the links to local wiki files
!! Example
Here an example is given.
* The dictionary tiddler contains full path to four local wikis: [[dictionary/mylocal-TWs]]
<$transclude tiddler="dictionary/mylocal-TWs" />
* The user interface (UI) tiddler to get the keyword, customize search and create the links [[Search Local TWs]].
<pre><$view tiddler="Search Local TWs"/></pre>
<<alert warning "''Note'': This solution only creates links and sends a request to lookup those local wikis. It does not retrieve the search results.">>
!! See it in action
* Import (by drag and drop) the below tiddlers to your wiki
*# [[Search Local TWs]]
*# [[dictionary/mylocal-TWs]]
* Edit the conetnts of [[dictionary/mylocal-TWs]] to meet your requirements. Note to the path and name of your local wikis. You can open your local wiki in browser and then copy its full path from browser address bar.
* Open [[Search Local TWs]] and input a keywords and click on the links created below the textbox.
* That's all.
Search can be done in several tiddler fields like caption, title, author, ...
!! Example 1
Search all tiddlers have `Simple` word in thier title or caption.
> use a list field as `caption, title`
<$macrocall $name="wikitext-example-without-html"
src="""<$list filter="[search:caption,title[Simple]]">
</$list>
"""/>
<<alert warning "''Warning'': By default `search` is not case sensitive.">>
!! Example 2
Search all tiddlers have `Eric` word in thier responder field or title, and //limit the results by 5//.
>use a list field as `responder, title`
<$macrocall $name="wikitext-example-without-html"
src="""<$list filter="[search:responder,title[Eric]limit[5]]">
</$list>
"""/>
To search amoung the tags in a wiki:
<$edit-text tiddler="mytitlesearch" size="50" tag="input"/>
<$reveal state="mytitlesearch" type="nomatch" text="">
<$list filter="[search{mytitlesearch}tags[]]" template="$:/core/ui/TagTemplate">
</$list>
</$reveal>
[[Tiddlywiki toolmap|https://dynalist.io/d/zUP-nIWu2FFoXH-oM7L7d9DM]] is a topical index of known plugins, tutorials, themes, and other helpful tools for ~TiddlyWiki.
Enter a keyword and click on the created link to search the Tiddlywiki toolmap.
{{Search Tiddlywiki Toolmap}}
\define search-local-tw-files(data-file, index, word:"", criteria:"title", type:"")
\rules except wikilink
<$wikify name="input" text="{{$data-file$##$index$}}/#:[$type$search:$criteria$[$word$]]">
<a href=<<input>> target="_blank" ><$text text="$index$" /></a><br>
</$wikify>
\end
\define list-search-local-tws(word:"", criteria:"", type:"", datafile:"dictionary/mylocal-TWs")
<small>
<$list filter="[[$datafile$]indexes[]]" variable="index">
<$macrocall $name="search-local-tw-files"
data-file="$datafile$"
index=<<index>>
word=<<__word__>>
criteria=$criteria$
type=$type$
/>
</$list>
</small>
\end
Search in local Tiddlywiki files <span class="tc-advanced-search-check"><$checkbox field="search-field" tiddler="$:/temp/search-tw-local" checked="title" unchecked="*" default="title"> only title</$checkbox></span>
<span class="tc-advanced-search-check"><$checkbox field="search-field" tiddler="$:/temp/search-tw-local" checked="*" unchecked="title" default="title"> all fields (everything)</$checkbox></span>
<$edit-text tiddler="$:/temp/search-tw-local" size="30" field="keywords" placeholder="search local TWs"/>
<span class="tc-advanced-search-check"><$checkbox field="search-type" tiddler="$:/temp/search-tw-local" checked="!is[system]" unchecked="all[tiddlers]"> exclude system tiddlers</$checkbox></span>
<$list filter="[{$:/temp/search-tw-local!!keywords}] +[minlength[3]]" emptyMessage="Type at least 3 characters to see results">
<$macrocall $name="list-search-local-tws"
word="""{{$:/temp/search-tw-local!!keywords}}"""
criteria={{$:/temp/search-tw-local!!search-field}}
type={{$:/temp/search-tw-local!!search-type}}
/>
</$list>
<<docit>>
Specially document using filter in $var and difference with $set
!! Search non-system tiddlers
To exclude the system tiddlers (those threir title starts with `$:/`) use the below filter
* Exclude system tiddlers: `[!is[system]]`
!!! Example:
Search all non system tiddlers have `Eric` word in thier title or tags, or body (text).
<$macrocall $name="wikitext-example-without-html"
src="""<$list filter="[!is[system]search[Eric]]">
</$list>
"""/>
!! Search system tiddlers
Search all system tiddlers have `Eric` word in thier title or tags, or body (text).
* Only system tiddlers: `[is[system]]`
<$macrocall $name="wikitext-example-without-html"
src="""<$list filter="[is[system]search[Eric]]">
</$list>
"""/>
\define toolmap(word)
\rules except wikilink
<$wikify name="input" text="https://dynalist.io/d/zUP-nIWu2FFoXH-oM7L7d9DM#q=$word$">
<a href=<<input>> target="_blank">$word$</a>
</$wikify>
\end
Search in Tiddlywiki Toolmap:
<$edit-text tiddler="$:/temp/search-toolmap" field="keywords" placeholder="search toolmap"/>
<$macrocall $name="toolmap" word={{$:/temp/search-toolmap!!keywords}} />
\define tw5(word:"", criteria:"title", type:"")
\rules except wikilink
<$wikify name="input" text="https://tiddlywiki.com/#:[$type$search:$criteria$[$word$]]">
<a href=<<input>> target="_blank"><$text text="$word$" /></a>
</$wikify>
\end
Search in https://www.tiddlywiki.com... <span class="tc-advanced-search-check"><$checkbox field="search-field" tiddler="$:/temp/search-tw5" checked="title"> only title</$checkbox></span>
<span class="tc-advanced-search-check"><$checkbox field="search-field" tiddler="$:/temp/search-tw5" checked="*"> all fields (everything)</$checkbox></span>
<$edit-text tiddler="$:/temp/search-tw5" size="30" field="keywords" placeholder="search tiddlywiki.com"/>
<span class="tc-advanced-search-check"><$checkbox field="search-type" tiddler="$:/temp/search-tw5" checked="!is[system]"> exclude system tiddlers</$checkbox></span>
<$list filter="[{$:/temp/search-tw5!!keywords}] +[minlength[3]]" emptyMessage="Type at least 3 characters to see results">
<$macrocall $name="tw5"
word={{$:/temp/search-tw5!!keywords}}
criteria={{$:/temp/search-tw5!!search-field}}
type={{$:/temp/search-tw5!!search-type}}
/>
</$list>
;Is there any way to refine a search in title followed by a search in text body of that tiddler?
Yes, the search operator can be refined by field name. So I assume that the most optimized filters for your queries would work like:
```
[search:title[foo]search:text[bar]]
```
In the above snippet, all tiddlers have foo in their titles and bar in their text will be shown!
!!! Example
```
{{{[search:title[kookma]search:text[rb]]}}}
```
{{{[search:title[kookma]search:text[rb]]}}}
\define search-tws(word:"", criteria:"title", type:"")
\rules except wikilink
<$wikify name="input" text="https://kookma.github.io/TW-Scripts/#:[$type$search:$criteria$[$word$]]">
<a href=<<input>> target="_blank"><$text text="$word$" /></a>
</$wikify>
\end
Search in https://kookma.github.io/TW-Scripts/... <span class="tc-advanced-search-check"><$checkbox field="search-field" tiddler="$:/temp/search-twscript" checked="title"> only title</$checkbox></span>
<span class="tc-advanced-search-check"><$checkbox field="search-field" tiddler="$:/temp/search-twscript" checked="*"> all fields (everything)</$checkbox></span>
<$edit-text tiddler="$:/temp/search-twscript" size="30" field="keywords" placeholder="search tiddlywiki.com"/>
<span class="tc-advanced-search-check"><$checkbox field="search-type" tiddler="$:/temp/search-twscript" checked="!is[system]"> exclude system tiddlers</$checkbox></span>
<$list filter="[{$:/temp/search-twscript!!keywords}] +[minlength[3]]" emptyMessage="Type at least 3 characters to see results">
<$macrocall $name="search-tws"
word={{$:/temp/search-twscript!!keywords}}
criteria={{$:/temp/search-twscript!!search-field}}
type={{$:/temp/search-twscript!!search-type}}
/>
</$list>
<<docit>>
Also see this
https://groups.google.com/d/msg/tiddlywiki/o2M0nOFbYVI/WF1mbDD5BAAJ
{{$:/plugins/kookma/solution/ui/search-in-fields}}
How to select among three tiddlers in below priority?
# if `tid1`, `tid2`, and `tid3` are existed then return `tid1`
# if `tid2`, and `tid3` are existed return `tid2`
# if `tid1` and `tid2` are NOT existed then return `tid3`
One use case:
# Display a tiddler using template `tid2` (the one tagged with b)
# If user supplied its own template use user template here is `tid1` (the one tagged with a)
# If not supplied `tid1` nor `tid2` use a default template called `tid3`
!!Solution
The below solution uses the else (`~`) operator if the first filter run is empty then the result of second will be returned. The list filter `+[limit[1]]` limits the output to one tiddler and is required when each filter run results in more than one tiddler.
```
<$list variable=template filter="[tag[a]] ~[tag[b]] ~[[tid3]] +[limit[1]]">
<$transclude mode=block tiddler=<<template>> />
</$list>
```
!! Other solution
This is an elementary solution by [[Mohammad|https://groups.google.com/d/msg/tiddlywiki/X9-LwZiCFXA/Lganv_AOBAAJ]] uses OR run and `emptyMessage` attribute.
```
<$list filter="[tag[a]] [tag[b]] +[limit[1]]" emptyMessage="tid3">
<<currentTiddler>>
</$list>
```
!! Alternative solution
This is an alternative solution by [[TonyM|https://groups.google.com/d/msg/tiddlywiki/X9-LwZiCFXA/TLzBF4MPBAAJ]] uses OR run.
```
<$list filter="[tag[a]] [tag[b]] [[tid3]] +[limit[1]]">
<<currentTiddler>>
</$list>
```
\define edit-fields-image-picker(actions,filter:"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[!has[draft.of]sort[title]]",subfilter:"")
<div class="tc-image-chooser">
<$vars state-system=<<qualify "$:/state/editFields-image-picker">>>
<$checkbox tiddler=<<state-system>> field="text" checked="show" unchecked="hide" default="hide"> Select Image</$checkbox>
<$reveal state=<<state-system>> type="nomatch" text="hide" default="hide" tag="div"><$macrocall $name="image-picker-list" filter="""$filter$""" actions="""$actions$"""/></$reveal>
</$vars>
</div>
\end
<$macrocall $name='edit-fields-image-picker' actions="<$action-setfield $field='icon' $value=<<imageTitle>>/>"/>
The below example shows how a data tiddler (dictionary also json tiddler) can be used with `select` widget.
* A DataTiddler is used here [[S.S./data/dictionaryLinks]]
* The option values are populated using a `list` widgets to read all indexes from DataTiddler.
* Selecting a value, changes the `search-engine` field of current tiddler.
* The value of `search-engine` field is also displayed
<$macrocall $name="wikitext-example-without-html"
src="""><$select tiddler=<<currentTiddler>> field="search-engine">
<$list filter="[[S.S./data/dictionaryLinks]indexes[]]" variable="index">
<option value=<<index>>><$view tiddler=<<index>> field='title'/></option>
</$list>
</$select>
You have selected: {{!!search-engine}}
"""/>
;Using $select widget how one can trigger an action when a new item is selected?
:The $select widget has an actions attribute which will fire on new selection
!! Example
Write a code to use $select widget and get the text of a selected item and copy it to a demo tiddler.
!!Code
<<code-link exmp111/macro/select-action>>
><$transclude tiddler="exmp111/macro/select-action" field=text/>
This will set the text field of [[exmp111/demo/tidPath]]
><$transclude tiddler="exmp111/demo/tidPath" field=text mode=block/>
!! Remarks
* The $select widget listtiddlers with filter: `[prefix[exmp111/data]]`
* In dropdown list one can select among tiddlers
* On selection the `slAction` macro triggered
* The `slAction` sets the text of [[exmp111/demo/tidPath]] to the text of selected item
!! See also
* The [[exmp067]] also shows an advanced usecase of actions string
;How to find which filter operator is a selection constructor?
: You can find them by tag or searching title
* search by tag
** `[tag[Selection Constructors]]`
* search by title field
** `[search[constructor]suffix[Operator]]`
<<< [[Tiddlywiki|https://tiddlywiki.com/prerelease/#Selection%20Constructors]]
The output of a //Filter Step// depends on its //operator//:
* Most operators derive their output from their input. For example, many of them output a subset of their input, and thus truly live up to the name of filters, narrowing down the overall output of the containing run. These operators are called //selection modifiers//.
* A few operators ignore their input and generate an independent output instead. These are called //selection constructors//: they construct an entirely //new selection//.
A good example of a constructor is <<.olink title>>. The output of `[title[A]title[B]]` is just <<.tid B>>. But the <<.olink field>> operator is a modifier, so `[title[A]field:title[B]` outputs nothing at all.
<<<
;Is it possible to colorify a TOC entry based on the current toc macros?
By default, the items in a TOC display use the ''title'' of each tiddler. However, if you define a ''caption'' field for a tiddler, the TOC will use that text instead. This is most often used to bypass the CamelCase name of the tiddler (e..g, "Hello there", instead of "HelloThere") or to provide a longer, more prosaic alternative (e.g, "Greetings and Felicitations!").
However, the caption text can also contain other wiki syntax, such as the `@@` styling syntax, which lets you specify CSS classnames or inline styles. For example, suppose you want a TOC item to be displayed using red text. To do this, you could write the following in the caption field for that tiddler:
`@@color:red; Text goes here@@`
Alternatively, for more "global" control over the appearance, you could use a CSS classname (e.g., "myTOC"), like this:
# First, define a stylesheet tiddler (tagged with `$:/tags/Stylesheet`), containing <div>
```
.myTOC { color:red; }
```
</div>
# Then, in the caption field of the desired TOC item, write:<div>
```
@@.myTOC Text goes here@@
```
</div>
The advantage of the classname method is that you then have centralized control over the styling for ''all'' similar TOC items, without having to separately re-edit the caption entries of each item. Thus, if you decide to change the color, or add other CSS attributes, you only have to change the stylesheet tiddler. For example:
```
.myTOC { color:green; font-size:150%; border:1px solid; }
```
<<docit>>
Search in fields of listed tiddlers
<$macrocall $name="wikitext-example-without-html"
src="""Search <$select tiddler="$:/temp/searchfilter" default="Choose">
<option value="Choose">-Choose one-</option>
<option value="[has[fa]search:fa{$:/temp/search}]">fa</option>
<option value="[has[fb]search:fb{$:/temp/search}]">fb</option>
<option value="[has[fc]search:fc{$:/temp/search}]">fc</option>
</$select>
<$edit-text tiddler="$:/temp/search" tag="input" />
<$macrocall $name="list-links" filter={{$:/temp/searchfilter}} />
"""/>
;How to use `currentTiddler` as default value, when a macro parameter getting a tiddler title is empty?
:Use `$set` widget and set the emptyValue attribute!
!! Example
The below macro needs a tiddler title as its parameter `tiddlername`, the `$set` widget defines a new variable and
* if the parameter `tiddlername` //has been passed//, the `selected-tiddler` variable assigned to it
* if the parameter `tiddlername` //has not been passed//, then the `selected-tiddler` variable assigned to `currentTiddler`.
```
\define mymacro(tiddlername)
<$set name=selected-tiddler value="$tiddlername$" emptyValue=<<currentTiddler>> >
Action: <<selected-tiddler>>
</$set>
\end
<<mymacro>>
<<mymacro "another tiddler">>
```
; How to set the value of specified index in DataTiddler using `select` widget?
The below example sets the value of `DEU` using a `select` widget. User can choose any value from the list of options.
<$macrocall $name="wikitext-example-without-html"
src="""><$select tiddler='exmp041/country-codes' index="DEU">
<option>Not set</option>
<option>726</option>
<option>276</option>
<option>400</option>
</$select>
"""/>
!!Remarks
* The tiddler attribute gets the DataTiddler name
* The index attribute gets the index name
* On choosing any options it will be set for the specified index (here `DEU`).
* <div> See the result in
{{exmp041/country-codes}}
</div>
See also: [[Tiddlywiki|https://tiddlywiki.com/#SelectWidget]]
\define mymacro(var1, var2:"")
<$set name=result value="$var2$" emptyValue="$var1$">
<li>v1: $var1$</li>
<li>v2: $var2$</li>
<li>v2(result): <<result>></li>
</$set>
\end
; Develop a macro having two parameters like (`var1`, `var2`) if `var2` is empty set its value to `var1`
:You need to use a third variable inside macro to take the value of `var1` whenever `var2` is empty
```
\define mymacro(var1, var2:"")
<$set name=result value="$var2$" emptyValue="$var1$">
<li>v1: $var1$</li>
<li>v2: $var2$</li>
<li>v2(result): <<result>></li>
</$set>
\end
```
* ''Example''
```
<<mymacro test next>>
<<mymacro test>>
```
* ''Result''
<<mymacro test next>>
<<mymacro test>>
* The table doesn’t distinguish between using a syntax as an attribute value vs. freestanding — for example, freestanding double curly brace transclusion will wikify the target tiddler, while attribute double curly brace transclusion will just return the raw text
* The `<<__parameter__>>` example is a bit misleading because there are two things going on: the automatic conversion of a parameter into a variable name, and the usage of that variable name with the double angle bracket syntax. If a macro transcludes a tiddler than that tiddler would “see” the double underscored parameters just like any other inherited variable
---
WikiText provides a range of "shorthands" for widgets. These are less versatile than the widgets but they are typically simpler to use when authoring wikitext.
!! Links
Shorthand links are based on the LinkWidget
| shorthand syntax | "lingo" | description | more info |h
| `[[`title`]]` |"a link (with brackets)"|Create link to tiddler|[[Linking in WikiText]]|
| CamelCase |"a camel case link"|Create link to tiddler|[[Linking in WikiText]]|
!! Transclusions
Shorthand transclusions are based on the TranscludeWidget.
| shorthand syntax | "lingo" | description | more info |h
| `{{`title`}}` |"transclude"|Transclude tiddler text field|[[Transclusion in WikiText]]|
| `{{`title`!!`field`}}` |"transclude field"|Transclude tiddler field|[[Transclusion in WikiText]]|
| `{{!!`field`}}` |"transclude field"|Transclude field in current tiddler|[[Transclusion in WikiText]]|
| `{{`...`||`template`}}` <br>"..." represents either of the transclusions above|"template transclusion" |Transclude text / other field value and display via template|[[Transclusion in WikiText]] under ""|
''Index transclusions'': The above shorthand forms apply equally well to transclude values from index tiddlers. To transclude values from index tiddlers, you use the same shorthand form as above but with `##` instead of `!!`, for example `{{`title`##`index`}}`
!! Filtered transclusion
A filter transclusion works as a kind of "in-line ListWidget". It takes a filter as input, runs it, and from the resulting tiddlers it transcludes the titles.
| shorthand syntax | "lingo" | description | more info |h
| `{{{`filter`}}}` |"filtered transclusion"|Transclude the titles from the filter output||
| `{{{`filter`||`template`}}}` |"filtered transclusion with a template"|Transclude the titles from the filter output and display via template||
!! Macro calls and variable calls
Macro calls and variable calls are based on the MacroCallWidget
| shorthand syntax | "lingo" | description | more info |h
| `<<`name`>>` |"macro call" or<br>"variable call"|Substitute in contents of macro/variable||
| `<<`macro "parameter"`>>` |"macro call with parameter"|Substitute in contents of macro using parameter as argument||
| `<<`macro "p1" "" "p3"`>>` |"macro call with parameters"|Substitute in contents of macro using parameters as argument. Note that second parameter is empty in this example.||
|`<<__`parameter`__>>`|"(call for) parameter as variable"|?(only inside macros)<br>Evaluate parameter||
!! Delimiters
String delimiters to encapsulate strings as arguments. You can use either pair as long as the string itself doesn't contain that/those same delimiter.
| shorthand syntax | "lingo" | description | more info |h
| `'`string`'` |"single quotes"|Delimiter (accepts other delimiters except itself)||
| `"`string`"` |"double quotes"|Delimiter (accepts other delimiters except itself)||
|`"""`string`"""`|"triple double quotes"|Delimiter (accepts other delimiters except itself)||
!! Notes
!!! Do not nest shorthand forms
It is not possible to nest shorthand forms. For example, this does NOT work
`<<mymacro {{myargument}}>>`
Instead you must use the explicit widget for the outer part
`<$macrocall $name=mymacro myparameter={{myargument}} />`
!!! Filters
Inside filters, the outer brackets are typically omitted. Example
`[tag<tagvariable>]` or `[tag{!!title}]`
!!! Acknowledgement
* [[Josiah|https://groups.google.com/d/msg/tiddlywiki/3DyHxqqFQbg/1JP6_DzeAAAJ]], started the question.
* [[Eric Shulman|https://groups.google.com/d/msg/tiddlywiki/3DyHxqqFQbg/JxjN6kYjAQAJ]] replied the question.
* [[Passingby|https://groups.google.com/d/msg/tiddlywiki/3DyHxqqFQbg/XK3Id0JzAQAJ]] compiled the Eric answer.
* [[Mat|https://groups.google.com/d/msg/tiddlywiki/3DyHxqqFQbg/HYcVvkJBAAAJ]] created this shorthand summary.
! Conditional Summary
Excerpt from [[Tobias Beer|https://tobibeer.github.io/tb5/#Conditional%20Summary]]: How to conditionally generate a summary section (or other related information) at the top of all tiddlers tagged `xx`, so that one doesn't have to click twice, skim the fields until one finds there to be a summary field.
!!Step 1
Create a [[tiddler|$:/.tb/ui/ViewTemplate/summary]] tagged [[$:/tags/ViewTemplate]] containing:
```
<$list filter="[all[current]tag[xx]]">
<$transclude field="summary" mode="block"/>
</$list>
```
!!Step 2
Create a `list-after` field with the value "[[$:/core/ui/ViewTemplate/tags]]" to make the summary segment appear immediately after the tags.
!Example
The [[$:/.tb/ui/ViewTemplate/summary]] serves as a template for a conditional ViewTemplate section that displays the value of the ''summary'' field for all tiddlers having a `summary` field defined, see [[Example 62: Conditional Summary]]..
; How to display a table of contents after the body of those tiddlers that are tagged with say TableOfContents or other root tag?
: Use a viewTemplate with proper toc macro
!! Solution i by bimlas
* Create a new tiddler
* Tag it with `$:/tags/ViewTemplate`
* Put the below script as its text
```
<$list filter="[all[current]tag[TableOfContents]]" variable="null">
<h3>Contents</h3>
<div class="tc-table-of-contents">
<$macrocall $name="toc-selective-expandable" tag=<<currentTiddler>>/>
</div>
</$list>
```
;Remarks
:the first $list widget only filters current tiddler have the root tag, here `TableOfContents`
:the $macrocall widget calls the `toc-selective-expandable` macro to display an expandable table of contents with the current tiddler as root tag (means shows the toc tree with current tiddler as the node)
!! Solution ii by TonyM
This is a more elegant solution and one can manually control when and how TOC is displayed on the tiddler using viewTemplates. See this solution [[here|https://groups.google.com/d/msg/tiddlywiki/wijV7wNnwpQ/nwPZC1WHAgAJ]]
* Create a new tiddler
* Tag it with `$:/tags/ViewTemplate`
* Put the below script as its text
```
\define default-toc-here()
<h4>Optional TOC here</h4>
<$list filter="[tag<currentTiddler>limit[1]]" emptyMessage="//nothing tagged with <<currentTiddler>>//" variable=nul >
<$macrocall $name="toc-selective-expandable" tag=<<currentTiddler>> >
</$list>
\end
<$list filter="[all[current]has:field[toc-here]]" variable=nul>
<$list filter="[all[current]get[toc-here]]" variable=toc-tiddler emptyMessage=<<default-toc-here>> >
<h4>Optional TOC <<toc-tiddler>></h4>
<$macrocall $name="toc-selective-expandable" tag=<<toc-tiddler>> >
</$list>
</$list>
```
* Nothing will happen right away.
* Now add the field toc-here to any tiddler and it will provide a toc based on the current tiddler. Use new here to add items to its toc
* If however you give that field a value of tiddlername eg HelloThere then the tiddlername will be used as the root of the TOC
* Advantages of this approach
** No additional tag use
** Ability to reference other parts of a TOC
<<wikitext-example-without-html """
*''Case 1''
<$list filter="[tags[]!is[system]]">
<$view field=title format="text"/>
</$list>
*''Case 1''
<$list filter="[tags[]!is[system]]">
{{||$:/core/ui/TagTemplate}}
</$list>
""">>
```
<$list filter="[tags[]]"><$link><$transclude tiddler={{!!icon}}/></$link></$list>
```
<$list filter="[tags[]]"><$link><$transclude tiddler={{!!icon}}/></$link></$list>
;How do I show tags along with tiddler title in the search result?
:Every tiddler consists of fields. One field is the `title` field. Another is the `tags` field. They can be transcluded using this form `{{!!fieldname}}`.
The solution is given as
```
<div class="tc-menu-list-item">
<$link to={{!!title}}>
<$view field="title"/>
<$list filter={{!!tags}}>
<$macrocall $name=tag-pill tag={{!!title}} />
</$list>
</$link>
</div>
```
!! Remarks
* The `tc-menu-list-item` was taken from $:/core/ui/ListItemTemplate
* The `<$link>...</$link>` is new in TW 5.1.20 and equal to `<$link to={{!!title}}>...</$link>`
* The ` <$list filter={{!!tags}}>` list all tags in the currentTiddler
* The `tag-pill` macro is called to show the tags in form of tag-pill one by one
!! Example
Show a list of all tiddlers have in their title the `xampl` AND `6`
<$macrocall $name="wikitext-example-without-html"
src="""><$list filter="[search:title[xampl 6]]">
<div class="tc-menu-list-item">
<$link>
<$view field="title"/>
<$list filter={{!!tags}}>
<$macrocall $name=tag-pill tag={{!!title}} />
</$list>
</$link>
</div>
</$list>
"""/>
; How to list all tiddlers created in the same day and month of today?
:This requires to list tiddlers have different creation year but same month and day as today. The `split`, `join` and `match` operator of TW5.1.20 is used to do this
!! Example
{{exmp086/list-tiddlers-with-today-date||template/code}}
which results in:
>{{exmp086/list-tiddlers-with-today-date}}
!! Remarks
* The first `$set` widget stores the month and day of today date in `todayMonthDay`
* The first `$list` widget lists all tiddlers in the wiki
* The second `$set` gets the created dates of each tiddler. The default format is like `20160812195638183` which has 17 digits. The filter splits the 17 digits and selects the last 13 digits and then the first 4 digits, which represents the month-day as `0MM0DD`. Then it will be stored in `monthDay`
* The last `$list` compares the two values of `monthDay` and `todayMonthDay` and if they match, then a link to tiddler will be displayed.
Salutation: Mrs.
HerFirstName: Sima
HerLastName: Parsi
PostAddress1: Tehran, Iran
Cast: Banner
HerTax17: 32000
See also: [[Simple Comparison of Two Variables]]
The below method has the advantage of being able to test any two + items that generate a "title" in filter notation.
Note: `<this-wiki>` is the result of a wikify widget, not a macro.
The advantage here is you can put the Same and Different outcomes where ever you want, can have as much or as little wikitext inside each list widget resulting for each option.
You can see it would be easy to add three or more values that should be the same", all you must do is to follow the `-[[2]]` with `-[[3]]` `-[[4]]` etc...
<$macrocall $name="wikitext-example-without-html"
src="""<$set name="this-wiki" value="Mohammad">
<$list filter="[<this-wiki>] [{!!wiki-owner}] +[count[]] -[[2]]">
same
</$list>
<$list filter="[<this-wiki>] [{!!wiki-owner}] +[count[]] -[[1]]">
different
</$list>
</$set>
"""/>
How to make a simply comparison between two variables or one variable and a fields content.
* eg: `<<currentWiki>>` and `{{!!wiki-owner}}`
* or `<<currentWiki>>` and `<<wiki-owner>>`
A simple test or filter that will be true if they are the same and that will be false if they are the same
<$macrocall $name="wikitext-example-without-html"
src="""
<$vars test1="abc" test2="abc">
<$set name="myVariable" filter="[<test1>] -[<test2>]" emptyValue="They match" value="They dont match">
<$text text=<<myVariable>>/>
</$set>
</$vars>
"""/>
The simple or standrad search is the one search in `title`, `tags`, and `text` (body) of tiddlers.
!! Example
Search all tiddlers have `hirad` word in thier title or tags, or body (text).
<$macrocall $name="wikitext-example-without-html"
src="""<$list filter="[search[hirad]]">
</$list>
"""/>
This example shows how template can be used in a list. Assume you several tiddlers tagged with `exmp015` and each tiddler has a `color` field. You can display their text in the color specified in their color field as below:
<<wikitext-example-without-html
src:"""<$list filter="[tag[exmp015]]" template="Exmp015-Template"></$list>
""">>
!! Template
The template used here is:
<code><$text text={{Exmp015-Template}}/></code>
[[Another solution|https://groups.google.com/d/msg/tiddlywiki/c1maS92I83w/URU4o1NxCQAJ]] is to use the wikify widget as below in your template
```
<$wikify name="colorcode" text="<$view field='color'/><br/>">
<font color=<<colorcode>>>The quick fox...</font><br/>
</$wikify>
```
This example demonstrate a simple transclusion using template tiddler by [[Stephan Hradek]]
!! Template tiddler
The template tiddler is as below
<<<
Title: [[template/full]] <br>
Text: as below
```
!! <$view field="title"/>
<$transclude mode="block"/>
```
The above template uses two fields `title` and `text`. The defualt field is used by `$transclude` widget is `text`.
<<<
!! Usage
Now assume the [[exmp070/demo01]] should be transcluded using the above [[template/full]] template. So
><<wikitext-example-without-html
src:"""{{exmp070/demo01||template/full}}
""">>
!! Remarks
Transcluding by [[template/full]] displays
* title of target tiddler by heading two `!!`
* body (text) of target tiddler below the title
Here is my google table +gs script in it https://docs.google.com/spreadsheets/d/1LJKSexFKRh6EpWeDTvgbYNBZhhf-TmV3E7c0PvVdS-s/copy this table generates this shop http://heeg.ru/shop.html?id=1LJKSexFKRh6EpWeDTvgbYNBZhhf-TmV3E7c0PvVdS-s
this shop gets orders by google form to this table https://docs.google.com/spreadsheets/d/1cEUxBevucIvfwj1g8ctD2C4uAIsN90M44ynLLf9aScw/
and to e-mail it too + all images are stored on google drive
people make their free shops on the copy of my table
* http://heeg.ru/shop.html?id=1DD9IP_RoLnl1OQcm4Sv1wZoRXvh6T5qX-XWRDgZ_oyw
* http://heeg.ru/shop.html?id=1HNoM8QaUHaTW-VrEp1O09HOLxtd8AGYhnjj0NXUMzfk#Alize
* heeg.ru/shop.html?id=10w0zQ37mWcwXSmatlbD02WFZbUd6OshGyrTVQxzFKkQ
* heeg.ru/shop.html?id=1QB_jyZynuO0QmhN1h5G_IiJS3HKzh_hdxaGcQTq27l0
* heeg.ru/shop.html?id=1d3-vtkbY0MN7RYpgBWZTCxRpCDf6FGKrRLf5QvP0dG0
* heeg.ru/shop.html?id=1C2KZ8EL_N7uw8iENznfYdFEBl_BDSRWCHZKwiRp8ltE
* heeg.ru/shop.html?id=10wrJi7oexkwMqU44ihvbsI9xUfIygh8TTK2W8RBe4vE
* heeg.ru/shop.html?id=1EGIqVS5mBZ0Gwit84NLSFM3L5G9i4fc1FWgU1zWYSno#about_cms
* heeg.ru/shop.html?id=1NKHiZoESe9Q5no3C53G1yHbCccTZB-cDzewAvOogZHQ
here is Russian tutorial https://youtu.be/C93SfZrfDIQ
here is google table shop demo with 12000+ ITEMS http://heeg.ru/shop_test29.html
table https://docs.google.com/spreadsheets/d/1b3CFfclMbQEQyJXVAz4yrqOiUS3vL_5jt-85ku0E9Ck/
To change the size of icon simply put the below code inside a tiddler tagged with `$:/tags/Stylesheet`
```
.tc-tiddler-frame .tc-tiddler-controls {
font-size: 2em;
}
```
\define slider(label,tiddler)
<$button popup="$:/temp/$tiddler$" class="tc-btn-invisible tgc-slider"><$text text="$label$ »"/></$button>
<!-- Since a tiddler is unique, the state tiddler will be unique -->
<$reveal type="nomatch" text="" default="" state="$:/temp/$tiddler$" animate="yes">
{{$tiddler$}}
</$reveal>
\end
!! Slider
<<<
The slider macro uses the `reveal` widget plus a `button` to show/hide the content of a tiddler.
See this Ref http://tw5custom.tiddlyspot.com/ for more information.
The calling syntax is as below:
```
<<slider label tiddler>>
```
Where the label and tiddler are the text to be displayed for slider and the title ot tiddler its content to be displayed.
<<<
!! Example
<<<
<$macrocall $name="wikitext-example-without-html"
src="""<<slider "Admin tools" "Administration Tools">>
"""/>
<<<
<<alert primary "''Note:'' This macro has not a persistent state, so when lose its focus it will hide.">>
!! See also
* [[Slider Macro II]]
* [[Slider Macro III]]
\define slider-ii(title)
<$set name="revealState" value=<<qualify "$:/state-reveal-$title$">>>
<h2>
<$reveal type="nomatch" state=<<revealState>> text="yes">
<$button class="tc-btn-invisible tc-tiddlylink" set=<<revealState>> setTo="yes">
{{$:/core/images/right-arrow}}
</$button>
</$reveal>
<$reveal type="match" state=<<revealState>> text="yes">
<$button class="tc-btn-invisible tc-tiddlylink" set=<<revealState>> setTo="no">
{{$:/core/images/down-arrow}}
</$button>
</$reveal>
<$view tiddler="$title$" field="caption">
<$view tiddler="$title$" field="title"></$view>
</$view>
</h2>
<$reveal type="match" state=<<revealState>> text="yes">
<$transclude tiddler="$title$" mode="block" />
</$reveal>
</$set>
\end
! Slider macro II
<<<
This is another slider macro by //{{!!responder}}//. Another slider macro introduced by //{{Slider Macro!!responder}}//. See [[Slider Macro]]
Both uses the `reveal` widget to hide/show contents as a slider. The slider macro II uses tiddler title or caption as slider label and beautiful arrows to show the state of slider (opened or closed)
<<<
!! Code
><<show-macro>>
!! Example
<<<
<$macrocall $name="wikitext-example-without-html"
src="""<<slider-ii "Button Tutorial">>
"""/>
<<<
! Example II
<<<
This is a more advanced example shows the use of
```
<$list filter="[tag[event]]">
<$macrocall $name="slider-ii" title=<<currentTiddler>> />
</$list>
```
Results in:
<$list filter="[tag[event]]">
<$macrocall $name="slider-ii" title=<<currentTiddler>> />
</$list>
<<<
\define slider(label,text)
<$button popup="state/$(currentTiddler)$$label$" class="tc-btn-invisible"><span style="color:#e55;text-decoration: underline">$label$</span></$button>
<$reveal type="nomatch" text="" default="" state="state/$(currentTiddler)$$label$" animate="yes">
<blockquote>
$text$
</blockquote>
</$reveal>
\end
A simple slider macro is one accepts a label and a text to be displayed on clicking the label. The below code contains:
* A macro to accpets label, and text as input parameters
* A `button` to change a state tiddler
* A `reveal` widget to display the text based on the content of slide tiddler
```
\define slider(label,text)
<$button popup="state/$(currentTiddler)$$label$" class="tc-btn-invisible"><span style="color:#e55;text-decoration: underline">$label$</span></$button>
<$reveal type="nomatch" text="" default="" state="state/$(currentTiddler)$$label$" animate="yes">
<blockquote>
$text$
</blockquote>
</$reveal>
\end
```
!! Example
Click on the undelined red words to see the slider in action.
<$macrocall $name="wikitext-example-without-html"
src="""<<slider "Carlla" "Hello there. This is a test.">>
"""/>
<$macrocall $name="wikitext-example-without-html"
src="""<<slider "Pira" "My name is Pira.">>
"""/>
<<alert warning "''Note'': Slider content will be hidden if it loses its focus, e.g when click outside the label area.">>
!! See also
* [[Slider Macro]]
* [[Slider Macro II]]
Create solution tiddlers to archive Q&A in [[Google forum|https://groups.google.com/forum/#!topic/tiddlywiki]]
Search in solutions <$edit-text tiddler="$:/temp/solution-stats" tag=input default=""/>
<small>Number of solutions: <b><$count filter="[tag[solution]]"/></b></small>
<$list filter="[tag[solution]sort[]search{$:/temp/solution-stats}]" template="$:/core/ui/ListItemTemplate"/>
;Example Empty Story message Tip
:https://groups.google.com/d/msg/tiddlywiki/4q7unKvZ9uE/vAIAxnheEgAJ
;All tiddlers open at start
:https://groups.google.com/d/msg/tiddlywiki/DcKCw3_b95M/LQ4LVsdCEgAJ
;How do simple character operation in Tiddlywiki?
:Most of these can be done using filter operators
!! Example i
The below example works on characters. Note how `split[]` is used here.
<$macrocall $name="wikitext-example-without-html"
src="""><$vars string="This">
* First character = <$text text={{{ [<string>split[]first[]] }}}/>
* Last character = <$text text={{{ [<string>split[]last[]] }}}/>
* Length = <$text text={{{ [<string>length[]] }}}/>
</$vars>
"""/>
!! Example ii
This example works on words. Note that how `split[ ]` is used here. It has one space inside squre brackets.
<$macrocall $name="wikitext-example-without-html"
src="""><$vars string="This is a test.">
* First word = <$text text={{{ [<string>split[ ]first[]] }}}/>
* Last word = <$text text={{{ [<string>split[ ]last[]] }}}/>
* Length = <$text text={{{ [<string>split[ ]count[]] }}}/>
</$vars>
"""/>
<<docit>>
!! Code
<<show-macro "exmp114/macro/macth-function">>
* shiraz
* pars
* yazd
* tehran
* tabriz
* pasargad
;How to sort tiddlers tagged with specific tag through a dropdown list?
: Use one of sort tagged tiddler macro with a `edit-text` widget.
!!Example
In [[Example 48: Sort Tag Wizard]] a code has been given to do the job. It includes
* An `edit-text` widget to let type the desired tag
* A dropdown to select a tag from list of all tags
* A macro to sort tiddlers tagged with selected one
!! Similar topics
The below topics are related to sort items. This method is also used in some of the below solution.
<<list-links "[search:title[sort]] [search:keywords[sort]] -[<currentTiddler>]" type:"ol">>
<<vspace 1cm>>
<<alert info "''Note:'' Based on this solution an elegant code has been developed lets you sort tiddlers using the tagpill dropdown menu. See [[Buttons to Sort Tiddlers in Tagpill]]">>
; How sort tiddlers in tag-pills?
: One solution is the manual drag and drop and reorder tiddlers inside tag-pill. The below solution shows how to do this automatically.
When you click on a tag and see a list, and then drag an item in the list, where is that sort-order stored? It's stored in the `list` field of the tiddler with the same name as the master tag that you clicked on. So, for instance, if you go to TiddlyWiki.com and open the HelloThere tiddler, and look at the "list" field, you will see the tiddlers that reference "HelloThere" listed in the field. They are not in alphabetical order.
If you copy the following into a tiddler at TiddlyWiki.com, and press the "Sort" button, the corresponding tiddlers will be sorted:
```
\define alphasort() <$action-listops $tiddler="HelloThere" $subfilter="+[sort[]]"/>
<$button actions=<<alphasort>>
Sort "HelloThere"
</$button>
```
You can make changes to this code to sort the list field of any tiddler.
The catch is, that there is no requirement that all tiddlers that are tagged by a tiddler are listed in its list field. This version will ''populate'' the field AND ''sort'' it:
```
\define alphasort() <$action-listops $tiddler="HelloThere" $filter="[tag[HelloThere]sort[]]"/>
<$button actions=<<alphasort>>>
Sort "HelloThere"
</$button>
```
A generic macro has been developed to use for sorting tagged tiddlers in the list field. See [[Example 046: Sort Tiddlers in Tag Pill]]
;Is there any way to sort toc entries based on a field value?
: Table of contents (TOC) is normally sorted based on caption and title field, but it is possible to use other field.
The second parameter of the `toc-selective-expandable` macro uses filter syntax to apply a sort order to the set of tiddlers being displayed at each level of the tree.
`sort[toc-order]` means "sort the list of tiddlers by the value in the `toc-order` field of each tiddler.
Thus, if each tiddler has a `toc-order` field containing a number then when those tiddlers are shown in the tree, they will be sorted based on those numbers.
!! Example
The below code shows a table of contents with //hirbod// as the root tag and sorts entries first based on title and then based on `page` field.
```
<div class="tc-table-of-contents">
<<toc-selective-expandable 'hirbod' "sort[title]nsort[page]">>
</div>
```
So, if these tiddlers tagged with //hirbod//, and have `page` field value as below:
* Book, page: 0
* Article, page: 2
* Chapter, page: -1
* Section, with no `page` field
Will results in:
<<<
* Chapter
* Book
* Section
* Article
<<<
<<alert info "''Note:'' It seems that if a tiddler does not have the field, a default value of ''zero'' will be considered, when use nsort instead of sort!" >>
The basic requirements can be summarized as follows:
# ''anchor'': ability of setting in the text the place the original reference, as well as its label and description;
# ''reference'': ability of repeatative referencing of the original reference from other places to the tiddler and from other tiddlers;
# ''list'': ability to create a list of all primary references;
# ''formatting'': ability to display whether the label or the automatic number with a variety of representations (e.g., in round or square brackets, with or without description, etc.), in addition to the description inserted in the text should be wikified, that is, processed by the wiki parser, to be able displaying, in particular, math formulas, other macros, etc.;
# ''popup window'': mouse clicking a primary or a repeatative reference launches a popup window containing wikified reference descriptor;
# ''toolbar button'': a button in the toolbar of the editor (as well as a shortcut key) to insert a primary and a repeatative reference, selecting the type of object from the list, and for repeatative reference selecting the primary reference via label and description listing.
<<alert danger "The size of dictionary tiddler is around 1MB. Use with care">>
!!! How to install
To install codemirror spell checker do as below:
Drag and drop
* `$:/plugins/tiddlywiki/codemirror-spellcheck` into your wiki
* `$:/plugins/tiddlywiki/codemirror/engine.js`
Note that the `engine.js` is part of Codemirror and hacked here for includiing the spell checker
How one can activate the spellcheck for codemirror editor?
A possible solution would be to add a new editor preview pane that contains a plain text editor so that you could switch to it quicklt to perform spell checking and correction.
Create a new tiddler called `$:/_EditorPreview` tagged `$:/tags/EditPreview`, add a `caption` field containing `Spell check`, and the following content:
```
<$edit-text tiddler=<<currentTiddler>> class="tc-spell-check-preview"/>
<style>
.tc-spell-check-preview {width:100%;}
</style>
```
Then select "Spell check" as the editor preview.
In my tests, I needed to click on the preview editor textarea in order to activate spell checking and make the dotted underlines visible.
''Note'': This is not work in Tiddlydesktop.
;How to split a tiddler by line?
:Use the `splitregexp` filter operator
!! Solution
<<code-link exmp133/macro/splitbyline>>
!! Example
<$importvariables filter="[title[exmp133/macro/splitbyline]]">
<$macrocall $name="wikitext-example-without-html"
src="""><<splitbyline exmp133/data/tid01>>
"""/>
</$importvariables>
;Remarks
: To return only a dedicated line for example line 3 do as below
: `filter="[<__tiddler__>get[text]splitregexp[\n]!is[blank]nth[3]]"`
;Having a date string like "2019-01-28" split it to day, month, and year and return result as Jan 28, 2019
: Use `splitbefore` and `removeprefix` and use a data dictionary to map numbers 01 ... 12 to months Jan... Dec.
!! Solution
The solution needs
# a macro to get the date string, split the date string into year, month and day
# a data dictionary to map numbers 01...12 to months Jan,...Dec.
```
\define date-str(date)
<$list filter="[[$date$]splitbefore[-]]" variable=x >
<$list filter="[[$date$]removeprefix<x>splitbefore[-]removesuffix[-]]" variable=m>
<$list filter="[[data-months]getindex<m>]" variable="mname">
<$list filter="[[$date$]splitbefore[-]removesuffix[-]]" variable=y >
<$list filter="[[$date$]removeprefix<x>removeprefix<m>removeprefix[-]]" variable=d >
<<mname>> <<d>>, <<y>>
</$list>
</$list>
</$list>
</$list>
</$list>
\end
```
;How it possible to extract strings from a text input using some prefix like at sign?
:The solution is to split the text based on special prefix and extract the text.
!! Solution i
This example uses the `enlist` and `removeprefix` (by Anthony). Depending on how the input text will be used, the change in syntax may have significant consequences for rendering of links, finding backlinks and freelinks etc.
<<code-link exmp136/demo01>>
Which results in:
<<content exmp136/demo01>>
!!Solution ii
This solution by Saq uses the regexp filter operator
<<code-link exmp136/demo02>>
Which results in:
<<content exmp136/demo02>>
macros and stylesheets for creating badges and status badges like github
''Note'': The Shiraz plugin has a newer version of this status badges.
Wikis developed by Stephan
;TW stuff
:http://tiddlystuff.tiddlyspot.com/
;TW Magic
:{{!!url}}
;Can I stitch Tiddlers together for printing?
Put the following CSS syntax in a tiddler, tagged with `$:/tags/Stylesheet`:
```css
@media print {
.tc-tiddler-frame { page-break-before:always; }
}
```
The below css can split the stroy river in two columns
```
.tc-story-river { display: flex; flex-wrap: wrap; }
.tc-tiddler-frame { max-width: 49%; margin-right: 1%; }
```
* Use max-height, no wasted space for smaller tiddlers
* Put that in .tc-tiddler-body, that way the heading part won’t scroll (title,etc,tags)
```
.tc-tiddler-body { max-height: 24em; overflow: auto; }
```
There is a nice demo with a button to switch single / two columns view. Have a look at:
> [[Solar flair|http://solar-flair.tiddlyspot.com/]]
<mark>Check and download later.</mark>
<$macrocall $name="wikitext-example-without-html"
src="""><$set name=mystr value="I am a Tiddlywiki lover.">
<$text text={{{[<mystr>uppercase[]]}}}/><br>
<$text text={{{[<mystr>lowercase[]]}}}/><br>
<$text text={{{[<mystr>length[]]}}}/><br>
<$text text={{{[<mystr>concat[ TW is the best.]]}}}/><br>
<hr>
<$list filter="[<mystr>split[ ]]" variable="word">
<<word>><br>
</$list>
</$set>
"""/>
Ref:
* https://github.com/Jermolene/TiddlyWiki5/blob/master/core/modules/filters/strings.js
* https://github.com/Jermolene/TiddlyWiki5/commit/9b2d52716a24197ba9fd67b708cbe2c56fa1b5d0
https://github.com/Jermolene/TiddlyWiki5/issues/4394#issuecomment-729159750
;keywords
:sortsub, remove stop words, sort
: Saq Imtiaz
<<docit>>
!! TW and Print media
How to adjust TW elements for print?
Start here: https://tiddlywiki.com/#Using%20Stylesheets
Basically, you just create a tiddler (any title) containing your desired CSS, and tag it with `$:/tags/Stylesheet`. That's it. The CSS is automatically applied as soon as you finish editing the tiddler.
To create print-specific CSS rules, use the `@media` CSS syntax:
```
@media print { ... print-specific CSS rules go here ... }
```
Of course, by default, printing will show all rendered elements of the page. To limit the printed output, you need to decide which elements are to be excluded from the output, and then add rules to the print-specific definition to hide those elements. For example, suppose you want to print tiddlers but omit the tags from the output. You could write:
```
@media print { .tc-tags-wrapper { display:none; } }
```
''Note'': in most browsers, you can find the class name for a TiddlyWiki element by right-clicking on the element and select "//inspect element//" from the popup menu. In this particular case (hiding the tags), inspecting a rendered tag on a tiddler takes you to a span with a class name of `tc-tag-label`. Working up from that element, you will find a containing element called `tc-tags-wrapper` that surrounds the entire tags display area (not just the specific tag you clicked on). Hiding THAT element hides ALL the tags in ALL tiddlers.
For hiding specific pieces of tiddler content, define a CSS rule (e.g., ".hideForPrint"), like this:
```
@media print { .hideForPrint { display:none; } }
```
Then, within your tiddler content, you can use it like this:
```
@@.hideForPrint ... screen-only content goes here... @@
```
When displayed on-screen, you will see the enclosed content, but when printed, the enclosed content is suppressed.
Ref: [[Mark|https://groups.google.com/d/msg/tiddlywiki/r-O4O4v_NA8/6uVcmYyEAAAJ]]
See also [[CSS inside Macro]]
; To set a new css, what is the best solution?
# create a stylesheet tiddler? or
# put the css inside a style tag in tiddler (inline css)?
* ''Solution''
!! Use inline CSS
<<<
This is a quick and dirty solution to use custom stylesheet but the problme is the leakage! Whne a tiddler with inline css is open, the css inside it will be available to all opened tiddler and also to the wiki iteself. The below show an example
```
title: myTest
<style>
.mcls{color: red;}
</style>
<div class="mcls">This is a text in red.</div>
```
<<<
!! Use stylesheet tiddler
<<<
This is the recommended solution. In this way you create a tiddler and tag it with `$:\tags\Stylesheet` and put your css code inside. This css is available to all tiddler and the whole wiki. Opening the tiddler has no effect. As an example see below code
```
title: myCSS
tag: $:/tags/Stylesheet
.mcls{color: red;}
```
In any other tiddler you can use the css in above tiddler. For example
```
title: myTest
<div class="mcls">This is a text in red.</div>
```
<<<
<<alert danger "''Don't use inline css'' (using style tag inside normal tiddlers) as much as possible. They have the risk of unwanted leak">>
We can use wikitext primitives within stylesheets to make conditional rules.
Tiny bit of background about stylesheets: TiddlyWiki in the browser renders all tiddlers `tagged $:/tags/Stylesheet` into a `<style>` element. Tiddlers of content type `text/css` will be processed as raw CSS, but tiddlers with the content type `text/vnd.tiddlywiki` (the default) are processed by first wikifying them, and then extracting the plain text portion. (So, for example, if a `text/vnd.tiddlywiki` stylesheet were to contain the text `<p>23</p>`, the plain text content would be the string “23”).
There's a danger of inadvertent wikification of stylesheet text, and so we usually use a `\rules pragma` to restrict the wikitext rules that will be observed within the stylesheet to just transclusion and macro invocations:
```
\rules only filteredtranscludeinline transcludeinline macrocallinline macrocallblock
```
Putting the pieces together, here’s a stylesheet that sets the page background colour to green whenever the sidebar is hidden:
Open [[example 18|Example 18: Conditionally Change Background Color]] and add `$:/tags/Stylesheet` tag to see it is in action.
```
\define if-sidebar-visible(text)
<$reveal state="$:/state/sidebar" type="nomatch" text="yes" default="yes">
$text$
</$reveal>
\end
\define if-sidebar-not-visible(text)
<$reveal state="$:/state/sidebar" type="nomatch" text="no" default="yes">
$text$
</$reveal>
\end
\rules only filteredtranscludeinline transcludeinline macrocallinline macrocallblock
html body.tc-body {
background: <<if-sidebar-visible "green">><<if-sidebar-not-visible "blue">>;
}
```
/*Change when Shiraz is added*/
.stripedTbl tr:nth-child(even)
{background-color: #f5f5dc;}
<pre>/* The values of css properties here are read from a data tiddler*/
.tc-tagged-hirad .tc-tiddler-body {
font-size:{{examp22/font-setting##base-font-size}};
line-height:{{examp22/font-setting##base-line-height}};
font-weight:{{examp22/font-setting##base-font-weight}};
color:{{examp22/font-setting##base-font-color}};
}
</pre>
[data-tags*="period"] .tc-title:after {
content:"Experimental";
color:red;
}
\define assign-css()
\rules only
[data-tiddler-title="$(currentTiddler)$"].tc-tiddler-frame {
border-color: red;
}
\end
<$list filter="[all[tiddlers]has:field[xmp]]">
<<assign-css>><br>
</$list>
.xwrapper{
position: relative;
display: inline-block;
border-bottom: 1px dotted black;
}
.xwrapper .xtip{
visibility: hidden;
background-color: #555;
color: #fff;
border-radius: 4px;
padding: 5px;
position: absolute;
z-index: 1;
bottom: 125%;
left: 50%;
margin-left: -60px;
opacity: 0;
transition: opacity 0.3s;
}
.xwrapper:hover .xtip{
visibility: visible;
opacity: 1;
}
; How and where subfilter is used?
Imagine you want to dynamically create filters. You can obviously use macro definitions and use them like
```
filter=<<mymacro>>
```
Issue arises when you want to add steps to the filter. You cannot go
```
filter="<<mymacro>> +[tag[mytag]]"
```
Subfilter solves this issue. You can go like
```
filter="[subfilter<mymacro>] +[tag[mytag]]"
```
And in another tiddler you can go like
```
filter="[subfilter<mymacro>append[!]]"
```
Basically it enables you to define dynamic filters and reuse them.
See [[Example 20|Example 20: Using subfilter]]
<<docit>>
Add how subfilter can create a filter from the contents of a tiddler
```
<$list filter="[subfilter{mytiddler}]">
</$list>
```
and the text field of myTiddler is like
```
[tag[xx]] +[search:title[yy]]
```
Also see this
```
<$list filter="[subfilter{$:/temp/commander/field-remove}]">
<<currentTiddler>><br>
</$list>
<$checkbox
tiddler="$:/temp/commander/field-remove"
field="text"
checked="[subfilter{$:/temp/commander}fields[]sort[]] -title"
unchecked="[subfilter{$:/temp/commander}fields[]sort[]] -[[$:/commander/empty-tiddler]fields[]]"
> Include system fields?</$checkbox>
```
Very intresting!
<<docit>>
\define sumlist()
<$list filter="[all[current]indexes[]]" variable="index">{{{ [all[current]getindex<index>] }}},</$list>
\end
\define summarize-dataTiddler(tag:"")
<table>
<th>Data Tiddler</th><th>Count</th><th>Sum</th><th>Avgerage</th>
<$list filter="[tag[$tag$]type[application/x-tiddler-dictionary]!has[draft.of]]">
<tr>
<td>{{!!title}}</td>
<$list filter="[all[current]indexes[]count[]]" variable="count">
<$wikify name="sumlist" text="""<<sumlist>>""">
<$list filter="[<sumlist>split[,]sum[]]" variable="sum">
<$list filter="[<sum>divide<count>fixed[2]]" variable="avg">
<td><<count>></td>
<td><<sum>></td>
<td><<avg>></td>
</$list>
</$list>
</$wikify>
</$list></tr>
</$list>
</table>
\end
; How to summarize the numerical values of several dataTiddlers like number of indexes, sum of their values, average of their values, ... in form of a table?
: Use `$list` widget to count, take sum and average employing the new mathematics operators in Tiddlywiki 5.1.21+
!! Example
Assume set of data tiddler all tagged with `exmp109` have different indexes like ia, ib, ic, etc. Write a script to create a table each row built from a dataTiddler and each column one of the computed value, like count, sum, and average.
<!-- display code -->
<$macrocall $name="slider" label="Code" src=<<show-macro>> />
!! Results
<$macrocall $name="wikitext-example-without-html"
src="""<<summarize-dataTiddler tag:"exmp109">>
"""/>
!!Remarks
<<docit>>
;Is it possible to sum the values held in Field A wherever the field exists?
: Yes, use proper fields
!! Example
Sum the values of field `fa` in all tiddlers tagged with `exmp118`
Using filters, you can write:
<$macrocall $name="wikitext-example-without-html"
src="""<$list filter="[get[fa]sum[]]">
Sume of fa: ''<$text text=<<currentTiddler>>/>''
</$list>
"""/>
;Remarks
* The `get[fa]` operator retrieves a list of all values from all tiddlers that have a non empty field `fa`.
* Then, the `sum[]` operator adds up all the retrieved values.
<<alert info "The [[Shiraz plugin|https://kookma.github.io/TW-Shiraz]] has great feature in its dynamic table for creating numerical summaries.">>
<svg width="22pt" height="22pt" class="tc-image-sun-button tc-image-button"viewBox="0 0 32 32" style="transform: rotate(360deg);"><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg>
;How to suppress links in a tiddler or list output?
:There are two solutions, using template and setting the `tv-wikilinks`
!! In a tiddler
<<<
To deactivate the wikilinks in a tiddler just use the below pragma as the first line
```
\define tv-wikilinks() no
```
<<<
!! Using template
<<<
Create a tiddler as below
* title: noLinks
* text <div>
```
<$view format=text field=title/>
```
</div>
Then use in filter output or list as below
```
{{{filter-run||noLinks}}}
```
Example
```
{{{[tag[HelloThere|noLinks]]}}}
```
<<<
!! Remarks
<<<
: the template can be used with $list widget like <div>
```
<$list filter=... template="noLinks"/>
```
</div>
: if a template used for transclusion as below <div>
```
\define tv-wikilinks() no
...
body of template ...
```
then all links in the transcluded contents will be disabled.
</div>
<<<
fill in the contents ....
!! Important
The svg tiddler shall have the type as "image/svg+xml" otherwise it wont work!
\define svgCal(width:"", height:"")
<svg xmlns="http://www.w3.org/2000/svg"
aria-label="Calendar" role="img"
viewBox="0 0 512 512" width="$width$" height="$height$">
<path d="M512 455c0 32-25 57-57 57H57c-32 0-57-25-57-57V128c0-31 25-57 57-57h398c32 0 57 26 57 57z" fill="#e0e7ec"/>
<path d="M484 0h-47c2 4 4 9 4 14a28 28 0 1 1-53-14H124c3 4 4 9 4 14A28 28 0 1 1 75 0H28C13 0 0 13 0 28v157h512V28c0-15-13-28-28-28z" fill="#dd2f45"/>
<g fill="#f3aab9">
<circle cx="470" cy="142" r="14"/>
<circle cx="470" cy="100" r="14"/>
<circle cx="427" cy="142" r="14"/>
<circle cx="427" cy="100" r="14"/>
<circle cx="384" cy="142" r="14"/>
<circle cx="384" cy="100" r="14"/>
</g>
<text id="month"
x="32"
y="164"
fill="#fff"
font-family="monospace"
font-size="140px"
style="text-anchor: left"><<now "mmm">></text>
<text id="day"
x="256"
y="400"
fill="#66757f"
font-family="monospace"
font-size="256px"
style="text-anchor: middle"><<now "0DD">></text>
<text id="weekday"
x="256"
y="480"
fill="#66757f"
font-family="monospace"
font-size="64px"
style="text-anchor: middle"><<now "DDD">></text>
</svg>
\end
<<svgCal 128 128>>
;Remarks
:you can pass width and height as macro inputs
:Kudos goes to Terence Eden, https://github.com/edent/Dynamic-SVG-Calendar-Icon
<<alert-leftbar danger "See also the revised version by Tones. Update this whe you upgrade to 5.1.23">>
Stored in My Notes.
!! A sample svg image
<<<
In the below example the two
* [[$:/core/images/folder]]
* [[$:/core/images/copy-clipboard]]
svg files have been used
<<<
!! Simple transclusion
<<<
To simply transclude the svg do as below
<<wikitext-example-without-html
src:"""{{$:/core/images/folder}}
""">>
<<<
!! Applyding css style
<<<
The below exmple shows how css class can be applied to a transcluded svg image.
<<wikitext-example-without-html
src:"""
<style>
.my-gallery svg {
width: 4em;
height: 4em;
margin: 0.1em;
fill:green;
}
</style>
<span class="my-gallery">
<$transclude tiddler="$:/core/images/folder"/>
<$transclude tiddler="$:/core/images/copy-clipboard"/>
</span>
""">>
<<<
Here a svg tiddlers are used for demonstration
* The [[osa.svg]] with the content type has been set as (image/svg+xml)
* The [[python.svg]] with empty content type
!! Include in wikitext as image
<<<
As the conent type is set to `image/svg+xml` it can be embeded as a self contained image using `img` syntax.
<<wikitext-example-without-html
src:"""[img width="60pt"[osa.svg]]""">>
<<alert danger """
The [[python.svg]] has no content type, so it cannot be included in wikitext as self contained image. So, the `[img width="60pt"[python.svg]]` renders as nothing!
""">>
!! Simple transclusion
Note that, the below code works as it transclude the [[python.svg]]
<<wikitext-example-without-html
src:"""{{python.svg}}""">>
<<<
!! Remarks
* The tiddler with content type is not set to one of the image forms inclusing `image/svg+xml` cannot embed as self-contained `<img>` element.
This example shows how svg images in a tiddler with empty content type can be used for ''css'' styling
<$macrocall $name="wikitext-example-without-html"
src="""<style>
.my-svg svg {
width: 2em;
height: 2em;
margin: 0.2em;
fill:purple;
}
</style>
<div class="my-svg">
<$list filter="[all[tiddlers+shadows]tag[$:/tags/Image]last[10]] -[[$:/core/images/blank]]">
<span title=<<currentTiddler>>>
<$transclude/>
</span>
</$list>
</div>
"""/>
The below instruction shows how to use css effectively for styling embeded svg tiddlers as buttons.
!! Change the fill color of svg buttons
; The image-buttons (svg) on the top right of TW5 have a hover effect, having your custom svg button how it is possible to have the same behavior?
: The CSS selectors that control these buttons look like this (with different colour definitions)
: <div><pre>
.tc-page-controls button.tc-selected svg {
fill: rgb(99, 99, 99);
}
.tc-page-controls svg {
fill: rgb(150, 150, 150);
}
.tc-page-controls button:hover svg,
.tc-page-controls a:hover svg {
fill: rgb(99, 99, 99);
}
</pre>
So make sure you use svg images and that you can control their fill colour via CSS (no fill colors inside the graphics).
</div>
!! The content type of svg tiddlers
;Why the svg tiddlers having the content type (`image/svg+xml`) does not take affect from css selectors?
: The reason is explained in [[Tiddlywiki.com|https://tiddlywiki.com/#Using%20SVG]]. Tiddlers with the type `image/svg+xml` are interpreted as SVG images, and displayed and transcluded as self-contained `<img>` elements with the SVG embedded as a data `URI` in the src attribute.
!! Example
See [[SVG Example 2]] for further details. Also [[SVG Example 3]] for applying css classes to svg transcluded as inline image (button).
!! References
# [[Using svg|https://tiddlywiki.com/#Using%20SVG]] explains what happens, if the content type of an svg tiddler is set.
# [[Vanilla theme|https://tiddlywiki.com/#%24%3A%2Fthemes%2Ftiddlywiki%2Fvanilla%2Fbase]] explains, the class `tc-image-button` to be used only for sizes, not for fill-definitions.
;How simply change the viewbox of a transcluded svg?
: When the svg is a valid image, you can change the viewbox
!! Example
The below tiddler stores a valid svg image.
<<code-link exmp131/image/svg>>
Now you can transcluded it and wrap into another svg tag with new viewbox ab below
<$macrocall $name="wikitext-example-without-html"
src="""<svg viewBox="0 0 100 100" width="100">
{{exmp131/image/svg}}
</svg>
"""/>
;Remark
* The original svg image has been transcluded into another svg!
* The viewbox and width has been changed
*
<<alert info "''Important'': The tiddler `type` of [[exmp131/image/svg]] is NOT `image/svg+xml` ">>
!! Zoom in and out
As described by [[A Glom|https://groups.google.com/d/msg/tiddlywiki/AG7dmoTCWAU/gYImkh3sAwAJ]] svg can be zoomed in or out on transclusion.
For when editing svg's in tiddler edit mode, to manually select section view and zoom in and out of svg in the preview window temporarily edit the svg viewBox and width attributes.
As an example consider
```
<svg viewBox="0 0 100 100" width="100">
```
To change view to certian area
* Left half only of svg: `viewBox="50 50 50 50"`
* To zoom in `width="200"`
** or edit 3rd & 4th number of viewBox smaller: `viewBox="0 0 50 50"`
* To zoom out: `width="50"`
** or edit 3rd & 4th number of viewBox smaller: `viewBox="0 0 200 200"`
* Combine the two to view sections with zoom in.
The viewBox and width attributes can be changed back to original settings when done editing.
This procedure can be used on transclusion as described above.
[[Jeremy|https://github.com/Jermolene/TiddlyWiki5/issues/5373#issuecomment-756795805]]:
There are two different ways that SVG is used:
# SVG images are free standing image files that behave somewhat like iframes: they are there own world, and can't inherit CSS properties etc from their surrounds.
#SVG elements are fragments of SVG images that can be inserted directly into an HTML document. SVG elements are part of HTML and so they can inherit CSS properties etc from their surroundings.
SVG images have an XML name space declaration because they have to be valid XML files. SVG fragments don't have that declaration because they are actually XML embedded in HTML, a slightly different thing.
<<alert info "All Tiddlywiki core image tiddlers are Svg elements and NOT Svg image.">>
;References
:[[Tiddlywiki Core Svg Images]]
:[[Tiddlywiki Using Svg|https://tiddlywiki.com/#Using%20SVG]]
fill in the contents ....
There is some documentation about the difference between SVG images and tiddlers containing SVG elements here:
https://tiddlywiki.com/#Using%20SVG
The advantage of using //raw// SVG elements is that they can be styled via ''CSS'', unlike SVG images within an img element.
;The switch-case or select-case is a programming construct allows a variable to be tested for equality against a list of values. How this construct can be implemented using TW scripts?
: There are several solution, here `list` widget is used to implement switch case construct.
!! Switch case construct
In programming languages like C the switch case construct is as below. The expression is compared against different case values and if matched, the code block of that case-value will be executed. The default case will be executed if expression result does not match any any case-values.
```
switch( expression )
{
case value-1:
Block-1;
Break;
case value-2:
Block-2;
Break;
case value-n:
Block-n;
Break;
default:
Block-1;
Break;
}
```
!! Simple method
The simple method only tests if an item is included in a list. Here the `switch` macro recives two parameter, `item` and `list`. If `item` found in the list it will displayed if not a message equivalent to default case will be shown.
Here the `list` is equivalent to case-values in other programming language.
```
\define switch(item, list:"a b c")
<$list filter="[enlist<__list__>search<__item__>]" emptyMessage="""No $item$ in: $list$""">
You passed <<currentTiddler>>
</$list>
\end
<<switch a>>
<<switch b>>
```
!! Advanced method
This method uses actions macros to perform operation on any matched cases. For simplicity here, the macro names are equal to items in the `list`, but it possible to use other names for actions macros.
If `item` matches any value in the `list` the suitable action macro called, if not the `default` macro will by run. Actions macro can perform any complex operation.
```
\define a() This is the action for a.
\define b() This is action for b.
\define c() This is action for c.
\define default() This is default action.
\define switch(item, list:"a b c")
<$list filter="[enlist<__list__>search<__item__>]" emptyMessage=<<default>> variable="actMacro">
<$macrocall $name=<<actMacro>> />
</$list>
\end
<<switch a>>
<<switch b>>
<<switch d>>
```
!! Demo
[[Example 68: Switch Case Construct]] demonstrates how above codes work.
; How to switch a field value among predefined values and keep the old one for further processing?
: Use `set` and `select` widgets with together and store the old value in a variable using the set widget
As described by [[Jeremy|https://groups.google.com/d/msg/tiddlywiki/AoL8zjxKH5U/qZvQNZDdCwAJ]] when select widget is used, any variables setup outside of the action string will not be updated to reflect the new value of the target tiddler.
!! Example
Assume a tiddler like [[exmp067/data]] has a field `fa`, its value is set among predefined items provided by a `select` widget. The code has to let to change the value of `fa` and keep its previous value for further processing. In breif the code shall do the below operations
* Temp = fa
* fa = new value
This is a demo is given in [[exmp067/data]]
<<<
* Field fa: <mark style="background:cyan;">{{exmp067/data!!fa}}</mark>
* Field fb: <mark>{{exmp067/data!!fb}}</mark>
{{exmp067/data}}
<<<
!! Code
The code is given in [[exmp067/data]] has tow parts as below
* action macro
* set/select widget
<pre><$view tiddler="exmp067/data"/></pre>
!! Remarks
* The outer `set` widget first stores the value of field `fa` from tiddler [[exmp067/data]] into a variable, `Temp`
* The `select` widget lets user choose a new value from a list of predefined values
* The `select` widget then calls the action macro `switch` to perform the below operation
** set the value of `fa` field by what is selected within `select` widget
** set the previous value of `fa` into `fb` field (this is only for demo purpose, any other operation can be done on the previous value)
A short script here is developed to switch tags (add new tag and remove old one) without change in the tiddler ''timestamp''.
To do so, the content of `$:/config/TimestampDisable` is read and then it is set to `yes`. The tags are switched and the content of `$:/config/TimestampDisable` of restored to its initial value.
```
\define BtnTagListops(btntext,add-remove,tooltip)
<$button tooltip="""$tooltip$""">
<$wikify name="timestampState" text="{{$:/config/TimestampDisable}}">
<$action-setfield $tiddler="$:/config/TimestampDisable" $value="yes"/>
<$action-listops $tags="$add-remove$" />
$btntext$
<$action-setfield $tiddler="$:/config/TimestampDisable" $value=<<timestampState>>/>
</$wikify>
</$button>
\end
```
* The `BtnTagListops` has three parameters
*# `btntext` the text or caption of button
*# `add-remove` the tag to be added or removed (with `-` sign)
*# `tooltip` a tooltip text for button to be displayed on mouse hover
This does change tags //WITHOUT// updating ''timestamps'' (it stores and restores the previous setting for updating timestamps).
The `BtnTagListops` can be called from other macro. For example the `todoBtnDoNow` macro below adds the tag `ToDoNow` and removes the tag with the minus (-) `ToDo`. //You could add and remove as many tags as you like//.
```
\define todoBtnDoNow()
<$wikify name="tt" text="switch tags">
<$macrocall $name="BtnTagListops" btntext="Do this now" add-remove="ToDoNow -ToDo" tooltip=<<tt>>/>
</$wikify>
\end
```
See [[Example 25|demo/exmp025:add-remove-tags-using-listops]]
\define switch()
<$action-setfield $tiddler="exmp066/temp" $value={{exmp066/data!!fa}} />
<$action-setfield $tiddler="exmp066/data" $field="fa" $value={{exmp066/data!!fb}} />
<$action-setfield $tiddler="exmp066/data" $field="fb" $value={{exmp066/temp}} />
\end
; How to exchange the values of two fields?
: Use the `set` widget plug and action widget like `button` and perform it as below
* temp = fa
* fa = fb
* fb = temp
!! Example
Assume a tiddler has two fields `fa`, and `fb`, the below code perform the job
```
\define switch()
<$action-setfield $tiddler="exmp066/temp" $value={{exmp066/data!!fa}} />
<$action-setfield $tiddler="exmp066/data" $field="fa" $value={{exmp066/data!!fb}} />
<$action-setfield $tiddler="exmp066/data" $field="fb" $value={{exmp066/temp}} />
\end
<$button actions=<<switch>> >Exchange fields value
</$button>
```
<$button actions=<<switch>> >Exchange fields value
</$button>
* Field fa in [[exmp066/data]]: <mark>{{exmp066/data!!fa}}</mark>
* Field fb in [[exmp066/data]]: <mark style="background:cyan;">{{exmp066/data!!fb}}</mark>
!! Remarks
* The button lets do the actions, other action widgets also can be used
* The switch macro implements the operation as below
** first the value of field `fa` is stored in temporary tiddler `exmp066/temp`
** second, the value of field `fa` is set by the value of field `fb`
** third the value of field `fb` is set the stored value of `fa` in temp tiddler
* the [[exmp066/data]] is the tiddler used fro demonstration and holds the two fields
The thing to remember is that the brackets go with the TYPE of operand....
* use square brackets for literal values: `tag[foo]`
* use curly brackets for tiddler field references: `tag{foo}`
* use angle brackets for variable references: `tag<foo>`
The thing to remember is that the brackets go with the TYPE of operand....
* `[foo]` is a literal value
* `<foo>` is a variable reference
* `{!!foo}` is a reference to field "foo" in the current tiddler
* `{SomeTiddler}` is a reference to the text field contents of a tiddler named "~SomeTiddler"
* `{SomeTiddler!!foo}` is a reference to the value of the "foo" field in tiddler "~SomeTiddler"
\define mytable()
<table class="$(myclasses)$">
<caption>This is the table caption</caption>
<thead><tr><td>Header-L</td><td>Header-R</td></tr></thead>
<tbody>
<tr><td>Cell 1</td><td>Cell 2</td></tr>
<tr><td>Cell 3</td><td>Cell 4</td></tr>
<tr><td>Cell 5</td><td>Cell 6</td></tr>
<tr><td>Cell 7</td><td>Cell 8</td></tr>
</tbody>
<tfoot><tr><td>Footer-L</td><td>Footer-R</td></tr></tfoot>
\end
; How set the table class by variable?
It is possible to set the table class by variable. To do this define the whole table inside a macro.
!! Example
The below example sets two different classes to a table defined inside a macro. This example contains three parts
# A macro defines a table
# A set of css to define the table classes
# A small script to set the variable class and call the macro
!!! The table macro
`mytable` simply defines a table containing four rows, two columns, with table header, footer and caption. The table class is set by `<table class="$(myclasses)$">`.
```
\define mytable()
<table class="$(myclasses)$">
<caption>This is the table caption</caption>
<thead><tr><td>Header-L</td><td>Header-R</td></tr></thead>
<tbody>
<tr><td>Cell 1</td><td>Cell 2</td></tr>
<tr><td>Cell 3</td><td>Cell 4</td></tr>
<tr><td>Cell 5</td><td>Cell 6</td></tr>
<tr><td>Cell 7</td><td>Cell 8</td></tr>
</tbody>
<tfoot><tr><td>Footer-L</td><td>Footer-R</td></tr></tfoot>
\end
```
!!! Table classes
For the sake of simplicity two classes `myclass` and `anotherClass` are defined an inline tiddler as below.
Then the `vars` widget is used to define the variable classes and inside the `vars` widget the `mytable` macro is called.
<$macrocall $name="wikitext-example-without-html"
src="""<style>
.myclass td {
border: 1px solid black;
border-collapse: collapse;
}
.anotherClass tr:nth-child(even)
{background-color: #f5f5dc;}
</style>
<$vars myclasses="myclass anotherClass">
<<mytable>>
</$vars>
"""/>
<<alert info "To have more complex table, use the html5 tags inside macro.">>
TableTool helps to create a table based on a collection of JSON tiddlers (the row tiddlers), where each tiddler represents a row and the values of the columns are stored as json keys.
Wiki page: https://mauloop.github.io/tw5-table-tool/
!! Problem with displaying tiddlers in tabs when they contains transcluded fileds
I have a tiddler that transclude its caption filed using `{{!!caption}}` in the text (body). It correctly pulls the caption field value and everything works as it should. However, when I call the tabs macro in a new tiddler and have it display the original tiddler as a tab, the `{{!!caption}}` reference breaks and appears to reference the tiddler calling the tabs macro.
* Solution
As described in [[https://tiddlywiki.com/#tabs%20Macro]] when tiddlers are used in ''tabs'' macro, if they contains transclusion of fields or reference to `currentTiddler` variable, these refences wil not work anymore. The solution is to use a template in tabs macro as below
```
<$tiddler tiddler=<<currentTab>>>
<$transclude mode="block" />
</$tiddler>
```
So the tabs macro should be used like the below
```
<<tabs "[tag[exmp060]]" template="template/exmp060">>
```
!! Example
The tiddler [[Example 60|Example 60: Demo of Tabs Macro with Template]] shows how ''tabs'' macro work with //template// tiddler to correctly displayed the //fields// and `currentTiddler` value.
;How to add a button to every tab created by tabs macro, on click open the tiddler for edit?
:Use a suitable `buttonTemplate` with tabs macro
!! Solution
The `tabs` macro accepts a parameter called `buttonTemplate`, it is, the title of a tiddler to use as a template for transcluding the content of the button for the selected tab. For more information see [[tabs macro|https://tiddlywiki.com/#tabs%20Macro]].
The below template addes a button to tabs
><<code-link "exmp115/template">>
* the template uses $view widget to show the caption, id not present the title of current tab
* the $button widget uses tm-edit-tiddler to open the current tab in edit mode
!! Example
<$macrocall $name="wikitext-example-without-html"
src="""<<tabs tabsList:"[prefix[exmp115/data/]]" buttonTemplate:"exmp115/template" defualt:"exmp115/data/tid01">>"""/>
;Remarks
: a small butoon with caption E is appeared on every tab
: on click the tiddler corresponding to selected tab is opened in edit mode
;How to generate a list of tags with the number of tiddlers tag them in increasing order?
: This is used for creating tag cloud (tag crowd)
!! Solution
# Using the new filter operator `count` in TW 5.1.20, one can count the number of tiddlers tagged with specific tag (the `tagcount` macro)
# The result can be stored in a variable using the `$wikify` widget (the `counts` variable)
# The first `$list` widget sort the counts (numbers of tiddlers for each tag)
# The second `$list` widget sort the list of tags
# The third `$list` widget searchs in number of tiddlers in each tag and if it finds this number equal to the one from first list, then it will display `<<counts2>> -- <<tag>>`
!! Code
{{exmp083\macro||template/code}}
!! Example
<$macrocall $name="wikitext-example-without-html"
src="""><<listTags "solution field conditional learning">>
"""/>
; How display the tag tree for three levels of tag hierachy?
: The below code uses three nested `list` widget to show the tag tree up to level 3. This procedure can be used to create table of contents. A customized numbered list is used (ref: [[Tobias Beer|https://tobibeer.github.io/tb5/#Advanced%20Numbered%20Lists]])
<$macrocall $name="wikitext-example-without-html"
src="""<ol class="ol">
<$list filter="[tag[$:/.mr/toc]]" variable="maintag">
<li>
<$link to=<<maintag>> ><$text text=<<maintag>>/></$link>
<ol>
<$list filter="[tag<maintag>]" variable="level1">
<li>
<$link to=<<level1>> ><$text text=<<level1>>/></$link>
<ol>
<$list filter="[tag<level1>]" variable="level2">
<li>
<$link to=<<level2>> ><$text text=<<level2>>/></$link>
</li>
</$list>
</ol>
</li>
</$list>
</ol>
</li>
</$list>
</ol>
"""/>
\define createTask()
<$action-sendmessage
$message="tm-new-tiddler"
title="New Task"
tags="task"
text=<<now "Today is DDth, MMM YYYY">>
due-date=""
priority="normal"
status="not started"
/>
\end
\define newTask()
<$button actions=<<createTask>> class="btn btn-sm btn-info" >New Task
</$button>
\end
<div class="float-right">
<<newTask>>
</div>
Filter and search in table <$edit-text tiddler="$:/temp/tasks/dtable/search" filed=text tag=input default=""/>
<$list filter="[[$:/temp/tasks/dtable/search]has[text]]" variable=null emptyMessage="""<small> All tasks: <$count filter="[tag[task]search{$:/temp/tasks/dtable/search}]"/></small>""">
<small><$count filter="[tag[task]search{$:/temp/tasks/dtable/search}]"/> matches</small>
</$list>
<$macrocall $name=table-dynamic filter="[tag[task]search{$:/temp/tasks/dtable/search}]" fields="tbl-checkbox tbl-expand title priority status due-date tags" class="w-100" stateTiddler="your-state-tid"/>
This is a good example shows several features
# Using `$tiddler` widget
# Using addprefix and addsufix to produce some conetnt for a newly created tiddler
# Using template tiddler in `set` widget
```
<$tiddler tiddler="$:/state/NewTiddlerForm">
!Title
<$edit-text class='tc-edit-texteditor' field='name_temp' placeholder='Life the Universe and Everything' /><br>
!!Value of Constant
<$edit-text class='tc-edit-texteditor' field='value'/>
<$button>
Create Tiddler
<$set name="valuetext" value={{{ [{!!value}addprefix[<$latex text="""]addsuffix["""></$latex>]] }}}>
<$action-setfield $tiddler={{!!name_temp}} text=<<valuetext>> value={{!!value}}/>
</$set>
<$action-navigate $to={{!!name_temp}}/>
</$button>
</$tiddler>
```
* If you are referring to the same tiddler many times, it is often helpful to use the `<$tiddler>` widget to set the `currentTiddler`, and then be able to take advantage of defaults and omit the tiddler title from widgets like the edit widget
* We use a filtered transclusion with the set widget to create the text value for the new tiddler by taking the value entered by the user and adding a prefix and suffix
\import exmp103/macro/combo-search
!! REMOVE THIS
<<combo-search>>
\define set-advanced-search-filter()
<$action-setfield $tiddler="$:/temp/advancedsearch" $value={{$(currentTiddler)$!!filter}}/>
\end
\define test-filter()
<$button to="$:/core/ui/AdvancedSearch/Filter" actions=<<set-advanced-search-filter>> class="tc-btn-invisible" tooltip="Test the filter">
{{$:/core/images/advanced-search-button}}
</$button>
\end
;How to display all advanced search filter in a table and a test button to open the advanced search tiddler?
: The advanced search filters are stored in tiddlers tagged with `$:/tags/Filter`. Use a $list widget to create a table and test button.
!! Solution
<<<
The below `$list` creates rows of table with three columns from all tiddlers tagged with `$:/tags/Filter`. These tiddlers have two fields
* `description`: short description of filter
* `filter`: the filter expression
A local macro (`test-filter`)is used to create a button set the value of advanced search filter and navigate to [[$:/core/ui/AdvancedSearch/Filter]].
<<<
!! Macro
<<<
<<show-macro>>
<<<
!! Table
<<<
<$macrocall $name="wikitext-example-without-html"
src="""<table>
<th>Description</th><th>Filter</th><th>Test</th>
<$list filter="[all[shadows]tag[$:/tags/Filter]]">
<tr>
<td>{{!!description}}</td>
<td><code style="color:maroon;"><$view field=filter/></code></td>
<td><<test-filter>></td>
</tr>
</$list>
</table>
"""/>
<<<
<$macrocall $name="wikitext-example-without-html"
src="""
{{{ [[9]add[1]] }}}
{{{ [[9]subtract[1]] }}}
{{{ [[2 3 9]sum[]] }}}
"""/>
\define say-hi-using-variables()
"""
''{{$(name)$##Salutation}} {{$(name)$##HerFirstName}} {{$(name)$##HerLastName}}''
{{$(name)$##PostAddress1}}
{{Suburb##Cast}}
Dear ''{{$(name)$##HerFirstName}}'',
"""
! //INCOME TAX ASSESSMENT 2018//
<br>
"""
We attach your income tax assessment for the {{CYR}}, which has been checked and agreed with your return as lodged.
The tax office shows a refund of ${{$(name)$##HerTax17}} for you which should have been forwarded to your nominated bank account.
Please contact us if you have any queries.
{{YoursFaithfullySteveHarding}}
"""
\end
<$set name="name" value="SimaParsi">
<<say-hi-using-variables>>
</$set>
---
Other tiddlers in exmp017
<<list-links "[tag[exmp07]]">>
<<docit>>
Also see [[Selection Constructor]]
!! Example i
The below example search in all tiddlers with a field called `num-field` to see if they contains the value: `One`
<$macrocall $name="wikitext-example-without-html"
src="""<$list filter="[contains:num-field[One]]" />
"""/>
This example is like above but look for `Thirty Two` in the `num-field`
<$macrocall $name="wikitext-example-without-html"
src="""<$list filter="[contains:num-field[Thrity Two]]" />
"""/>
;Remarks
: The `contains` operator actually looks for tiddler in the `list` field
: Use with fields if they have data in form of tiddler titles. Title with space shall be stored using `[[ ]]` like `num-field` in [[exmp135/data/tid01]] <div>
<$text text={{{[[exmp135/data/tid01]get[num-field]]}}}/>
</div>
<<docit>>
;What is the default input of a filter run? What will return the below script?
: create a new tiddler in tiddlywiki.com
: enter the `<$list filter="[add[0]]"/>` into the body and save
* What is happening is that, by default, a filter starts with an implied `all[tiddlers]`.
* Non-numeric list items (such as tiddler titles) have a value of 0.
* At tiddlyWiki.com, there are 1304 non-shadow tiddlers.
Thus, each of the above filters is producing 1304 numeric results.
;Remarks
: all filters starts with implied `all[tiddlers]`
: the first step to limit the size of the set of titles to be used by the filter is using `all[current]`, `!is[system]`, etc...
; What are the differences between these two filters:
# `[has[fieldname]]` and
# `[has:field[fieldname]]`
Assume you have used above filters inside a `$list` widget as below:
```
Case I:
<$list filter="[has[fieldname]]" variable="v">
<<v>>
</$list>
```
and
```
Case II:
<$list filter="[has:field[fieldname]]" variable="v">
<<v>>
</$list>
```
The differences are as below:
<<<
* Both cases returns nothing (empty `v`) if the field does not exist.
* Both cases return the same result if the field exists and is //NOT EMPTY//.
* Case I returns nothing (empty `v`) if the field //EXISTS// but is //EMPTY//.
* Case II returns the tiddler title if the field //EXISTS// but is //EMPTY//.
<<< [[TonyM|https://groups.google.com/d/msg/tiddlywiki/MpWL2zebuo0/xCSWw6e6CAAJ]]
!! Remark
In [[has operator|https://groups.google.com/d/msg/tiddlywiki/PiUwdVpdyzQ/OwsKmr6TEgAJ]] on Tiddlywiki, it has been explained that:
* `has` operator can be used with a suffix
* the `value` suffix is equivalent to no suffix
** `[has[myfield]]` or `[has:value[myfield]` are the same
** result: those input tiddlers in which field has a //non-empty value//
* the `field` suffix
** result: those input tiddlers in which //field exists//
The $list widget in 5.1.24 has got a new attribute index! in which the numeric index of each listed tiddler is stored It can produce very nice results like below
><$macrocall $name="wikitext-example-without-html"
src="""<$list filter="[tag[batch]sort[title]]" index="index">
<div>
<<index>>: ''<$text text=<<currentTiddler>>/>'' (is first: <<index-first>>, is last: <<index-last>>)
</div>
</$list>
"""/>
;Saq Imtiaz recommendation
: Important to be aware though that the refresh performance is of necessity rather slow when using this new attribute, so I would not suggest using it with larger numbers of tiddlers or complex templates where performance is a concern.
Ref: [[Saq Imtiaz|https://groups.google.com/d/msgid/tiddlywiki/a9c51bca-41f0-460e-9e51-5907321362e5n%40googlegroups.com.]]
<<docit>>
<<code-link "exmp119/data/tid01">>
<$list filter="[[exmp119/data/tid01]getindex[xx]is[blank]]" emptyMessage="the index is NOT blank">
The index is BLANK
</$list>
Mark
isblank operates on the output of the new split operator, which might be "mytitle" "" "someothertitle" "" etc.
So there has to be a "" to determine if it is blank.
Most filter operators do not produce "". If something is "", it puts out NO output -- not even ""
The operator getindex[xx] produces NO output, and so there is nothing to evaluate. You get the same result whether you don't use is[blank] .
So the upshot is, that is[blank] is mostly useful in the context of the split and splitreg operators.
Jeremy
I assumed the below dataTiddler returns zero length string, but now I understood it idoes not! The value of xx is missing!
Indeed, the getindex operator and the get operator both work that way, the great thing is that it lets you use the else[] operator to provide a fallback value:
[getindex[xx]else[defaultvalue]match[targetvalue]]
!! Tiddler list field
The `list` field has special handling that allows for automatic substitution when a title is changed. This is possible because the `list` field is always treated as a //space-separated list of tiddler titles//. Thus, it can be parsed for individual title matches to recognize when a title has been changed and replace only that title text within the field value.
The problem with doing this for other fields is that they can contain spaces that are just //normal text// not intended to be treated as separators between titles.
Consider two fields where
> list = "foo bar baz" (a list of three tiddler titles)
and
> otherfield = "this ice cream bar is tasty" (some normal text)
If you change the title of the tiddler named "bar" to "mumble", then the value of `list` is updated to "foo mumble baz"
However, the value of "otherfield" should remain unchanged even though it contains "bar", because that is just normal text.
Currently, ALL field content except for the `list` field are treated as normal text (see note below).
''Note'': Standard tiddler date fields (`created` and `modified`) are //stored// as normal text using format `YYYY0MM0DD0hh0mm0ss0XXX` (e.g. "20150117190213631" for January 17, 2015 at 19:02:13.631).
These fields can be formatted for date/time //display// using the `<$view ... format="date"...>` widget.
<div class="ml-list">
The logic used by the `$set` widget to determine the result assigned to the variable is as follows:
# If the "tiddler" attribute is present and not blank, then:
## If the "subtiddler" attribute is also present and not blank, then get the subtiddler from the specified tiddler, otherwise just get the tiddler itself
## If the "field" attribute is present then return return the value of that field, or the value of the "emptyValue" attribute if the field is blank or missing
## Otherwise, if the "index" attribute is present, return the value of the specified index, or the value of the "emptyValue" attribute if the index is blank or missing
## Otherwise, return the text field of the tiddler, or the value of the "emptyValue" attribute if the text field is blank or missing
# If the "filter" attribute is present and not blank, then evaluate the results of the filter, and:
## If the "value" attribute is present and the filter results are not empty, return the value of the "value" attribute (even if the "value" attribute is blank)
## If the "value" attribute is present and the filter results are empty, return the value of the "emptyValue" attribute, if present, otherwise return a blank result
## If the "value" attribute is not present, then if the "select" attribute is a valid number it is used to retrieve a specified result from the filter
## If the "value" attribute is not present, and the "select" attribute is not a valid number, and the filter results are not empty, then the entire filter results are returned (using double square brackets quoting around any results that include spaces)
## If the "value" attribute is not present, the "select" attribute is not a valid number, and the filter results are empty, then the value of the "emptyValue" attribute is returned (or blank if it is not present)
# If neither the "tiddler" or "filter" attributes are provided, return the value of the "value" attribute, or the value of the "emptyValue" attribute if the "value" attribute is blank or missing
</div>
See [[Example 58: Logic of Set Widget]] for deyails and demos.
* Some good links to other resourses
* CouchDB and NoteSelf install and usage
* Links to create and use custom templates
<<docit>>
Ref: http://rquicktid.tiddlyspot.com/
;Why Tiddlywiki on Node.js uses higher RAM?
TiddlyWiki under Node.js loads the entire wiki into RAM. It does so in order to support server-side processing (such as serverside page rendering). But, of course, it is relatively resource intensive, and unnecessary if all the server is doing is acting as a front end to a database of tiddlers, and the browser is doing all the rendering.
Arlen Beiler recently did some exploration along these lines recently. See [[Forum|https://groups.google.com/d/msgid/tiddlywiki/CAJ1vdSSe4-y4wR%3D6o_ihBmYe8E_bUqAgqT0tpb7LwaSpv7K9Uw%40mail.gmail.com]]
See
* https://docs.npmjs.com/specifying-dependencies-and-devdependencies-in-a-package-json-file
* https://60devs.com/npm-install-specific-version.html
* https://github.com/kookma/TiddlyWikiPluginSkeleton
* https://docs.npmjs.com/cli/install
Create thumbnails of slides (tiddlers)
<<alert success """''Note'': From release 1.0.3 the plugin page changed from Solution archive to Solution resource and stored in github. The plugin name is Solution. Previous solution can be found here: http://solution-archive.tiddlyspot.com/""">>
Interactivity in TiddlyWiki is based on a couple of priniciples:
* The entire state of the user interface is modelled as the values of tiddlers in the store
* User interface events such as button clicks make changes to the tiddler store which then trigger a refresh of the display to match the new state of the store
You can explore this happening by opening up the advanced search tiddler, switching to the "Filter" tab, and then selecting "Recently modified tiddlers, including system tiddlers" from the dropdown. Keep an eye on the results as you switch between sidebar tabs and you'll see that the tiddler `$:/state/tab/sidebar--595412856` contains the title of the currently selected tab. It's a two way binding: if you manually edit that tiddler then you'll see the current tab change in reaction.
All UI in TW is constructed in this same way. For example, dropdowns are modelled as a state tiddler that keeps track of whether the dropdown is open or not. The reveal widget is used with the state tiddler to show or hide the dropdown as required.
A critical challenge when designing UIs in TiddlyWiki is choosing between the options for titling these state tiddlers. Most of the core uses a scheme we call "qualified titles" to generate a title that depends upon the position in the render tree.
```
<$wikify name="count" text="<$count filter='[tag[Contents]]'/>">
<table>
<tr>
<td colspan=<<count>>>
<$count tiddler="Contents" filter=[tag[Contents]]/> columns </td>
</tr>
<tr><td> 1 </td><td> 1 </td><td> 1 </td><td> 1 </td></tr>
</table>
</$wikify>
```
How the size and other properties of tiddler toolbar icons can be changed?
Use css as below to style them! These css hsall be put inside a tidddler tagged with `$:/tags/Stylesheet`.
```
.tc-tiddler-frame .tc-tiddler-controls {}
```
* Example
<<<
Change the size of tiddler toolbar icons to 1.75rem
```
.tc-tiddler-frame .tc-tiddler-controls { font-size: 1.75rem; }
```
<<<
;Is there any way to return the size or width of tiddler and viewport using Tiddlywiki script?
:The viewport sizes can be accessed using CSS (e.g `vh`, and `vw`) for the tiddler width it depends to the layout. See the below code
```
<$list filter="[{$:/themes/tiddlywiki/vanilla/options/sidebarlayout}prefix[fluid-fixed]]">
calc(100vw - {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}} - 160px)
</$list>
<$list filter="[{$:/themes/tiddlywiki/vanilla/options/sidebarlayout}prefix[fixed-fluid]]">
calc({{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}} - 110px)
</$list>
```
It is called in a stylesheet (type: tiddlywiki) like so:
```
width:<<width>>;
```
<<alert info "''Note'': The above code should be used with CSS, so It should be placed inside a tiddler tagged with `$:/tags/Stylesheet` or called as a macro from such tiddlers.">>
The magic numbers are just approximations; the river gutter and tiddler gutters all 42px but then there are 0-1-2 viewport scrollbars where it seems only one of them affects width... and I'm not sure scrollbars have a fixed width, at least no between browsers so I just made approximations that look decent. Besides, the gutters are hard coded magic numbers so what the hey. At least for my application. However one would need other numbers for small screens where the gutters are gone.
! {{!!title}}
This is a tiidler
!!! Footnote
''My order is''
Page: {{!!page}}
! {{!!title}}
Here is another tiddler
```
function f(x)
end function f
```
!!! Note:
Page: {{!!page}}
! {{!!title}}
Here is the third tiddler
* One
* Two
* Three
!!! Note:
Page: {{!!page}}
! {{!!title}}
Here is a fourth tiddler.
This Tiddler has two tags
# learning
# slide
!!! Note:
Page: {{!!page}}
This tiddler is used in exmp016
A sample wiki for Fortran programmer
The old wiki for demonstration Tiddlyshow
;keywords
:slideshow, presentation, slide
Some plugins in this wiki:
* OpenAll
* Favorites
* Random background
* Plugin tools
See also: [[Tiddlywiki-Travis-CI]]
[[Jeremy|https://groups.google.com/d/msg/tiddlywiki/YznqeuiZyqQ/GtXDxe0SBgAJ]]:
Most of the core icons have no type defined (image/svg+xml) AND lacks a xmlns declaration (`<svg xmlns="http://www.w3.org/2000/svg" …`)
Just to be clear, this is because the core icons are designed to be used as SVG elements embedded in the HTML, rather than images. The primary reason is that it lets us style/colour the icons at the point of using them. There’s some discussion of the difference here:
https://tiddlywiki.com/#Using%20SVG
For CSS background images you’d need to use an SVG image. I don’t think there’s a straightforward way to convert the core images, you’d probably just need to do it manually.
About CSS prefixes: TW uses `tc-`, `tv-`, `tm-` and `th-` prefixes for different things.
* tc- tw class
* tv- tw variable
* tm- tw message
* th- tw hook
When TiddlyWiki starts up in the browser it looks for a tiddler called `$:/favicon.ico` and dynamically uses it as the favicon for the page. If you modify the image then the favicon changes instantly to reflect it.
If you put an image (`png`, `jpg`, `gif`) file into a tiddler and then rename the tiddler to `$:/favicon.ico` it will work. I haven't gotten svg to work yet but I think that is a browser issue, not a tiddlywiki issue.
<<alert info "TW supports most types of image format to favicon.">>
See also:
* https://tiddlywiki.com/#Setting%20a%20favicon
* https://icons8.com/icons
;Google forum
:https://groups.google.com/forum/#!forum/tiddlywiki
;Statistics
:https://groups.google.com/forum/#!aboutgroup/tiddlywiki
''Get started and organized with TiddlyWiki''
An article by: ''Scott Nesbitt''
This is a white paper on Tiddlywiki and its application.
Ref: [[opensource.com|https://opensource.com/article/19/2/tiddlywiki]]
<<docit>>
;The tiddlywiki-node-solid-server
Tiddlywiki SyncAdaptorModules for node-solid-server
Tiddlers are saved as turtle files by default in https://<yourPod>/public/tiddlers/main
Works anywhere, just grab the plugin on $:/plugins/bourgeoa/nodesolidserver, save, reload, optionally change your preferences on $:/plugins/bourgeoa/nodesolidserver/config and you'll be good to go.
Your tiddlers will be saved on your Solid Pod to /public/tiddlers/<chosen-namespace>/.
<chosen-namespace> defaults to "main".
The following list shows some Tiddlywiki plugins: Also see [[Links]]
;Tiddlytime (clock and time plugin)
:http://tiddlytime.tiddlyspot.com/
;Timer plugin
:https://evanbalster.com/tiddlywiki/formulas.html#Timer%20Plugin
;CrazyThing (list and slide)
:http://cpashow.tiddlyspot.com
Make Links
See also: [[Tiddlywiki and GitHub Pages]]
The below instruction shows how simply use Node.js for creating new plugin. It uses Thirdflow plugin from TheODive.
! Set Up
<<<
# Clone or download TiddlyWikiPluginSkeleton from (https://github.com/TheDiveO/TiddlyWikiPluginSkeleton).
# install the required tools
#* run `npm install` to install the required TiddlyWiki5 core, as well as the `ThirdFlow plugin` from the NPM registry.
#* or alternatively use the customised TiddlyWikiPluginSkeleton version by Mohammad (@kookma)
#** The customized version does not need redundant installation of TW core
#** The customized version has the `ThirdFlow plugin` installed
<<alert info "To create a custom version, follow the standard procedure above and then delete the `.bin` and `tiddlywiki` folders from `TiddlyWikiPluginSkeleton\node_modules`. The customized version need to have a working version Tiddlywiki under node.js">>
<<<
!! Develop a new plugin
<<<
# Make a copy of `TiddlyWikiPluginSkeleton` from step 2 in your folder of choice
# Open command window in `TiddlyWikiPluginSkeleton` folder
# issue the `npm run develop` command
# next, navigate to http://localhost:8080 in your web browser.
# follow the instructions given in the "Plugin Kickstarter" to create your plugin.
# work on your plugin ... you can freely mix developing things inside the web browser as well as outside the browser using a standalone editor.
Don't forget to stop and then restart by `npm run develop` after you've made changes to TiddlyWiki files outside your web browser.
<<<
!! Release the new plugin
<<<
# to control which files to release, visit your TiddlyWiki's `$:/ControlPanel` and go to the ''ThirdFlow'' tab. Then click on the subtab named ''Release''. Follow the instructions given there. Please note that you can develop multiple plugins simultaneously from the same development TiddlyWiki.
# when you're ready to release, simply run `npm run release` to create the release file(s) in `editions/release/output`. Rinse, then repeat as necessary.
<<<
Timimi is a web-extension that allows you to save standalone tiddlywikis the same way tiddlyfox did. You can open your tiddlywikis from anywhere in your home folder, make changes and save changes. It also support ''Snapshot'' plugin, a plugin to backup the wiki. Snapshot only works with Timimi or similar and needs a manual save button to be clicked!
* Download:
** [[Timimi addon|https://github.com/ibnishak/Timimi]]
** [[Snapshot plogin|https://ibnishak.github.io/Tesseract/pluginsandmacros/snapshot.html]]
Different filters can be used to do simple to sophisticated search queries using the filter tab in Advances Search tiddler. The advanced search can be opened by clicking on magnifier button right to standard search in sidebar: <<advanced-search>>
The below table shows sample filters to use the `search` operator for different queries. The `keyword` is the word or phrases your are looking for in the wiki file.
<<property-table
dataTiddler:"data/search-filter"
indexTitle:"Purpose"
valueTitle:"Filter"
caption:"''Search Filters: Use them in Advanced Seach Textbox''"
tblClass:"stripedTbl">>
!! Use with other widgets
All widgets accept filter can use the above filters, like `list`, `set`, ...
<<alert info """''Note'': This tiddler uses the dictionary (data tiddler) [[data/search-filter]] to create the search filter table above.""">>
!! From Tiddlywiki.com
Read the Table of contents, more specially the below cases
* [[toc-tabbed-internal-nav|https://tiddlywiki.com/#Table-of-Contents%20Macros]]
*[[toc-tabbed-external-nav|https://tiddlywiki.com/#Table-of-Contents%20Macros]]
!! Other
* http://tw5custom.tiddlyspot.com/
** tips, tricks, customization
* http://tiddlystuff.tiddlyspot.com/
**Has a great tool for footnote. It is a stylesheet and view template for creating footnot for module used
* Create a custome search tool
* Use the idea by Riz [[Customize Search Result]]
** Idea: You can create a tool to search in caption, keywords, responder of solution tiddler and show the results for other fileds also.
*
Tobias is among the best active coder and developer in TW. The followings are some great collection of his contribution to TW.
;Tobias Beer (CSS), see also named color
:http://tobibeer.github.io/tw/style/#GettingStarted
;Tobias Beer (Icons and fonts)
:http://tobibeer.github.io/tw/icons/#Start
The `toc` macro in Tiddlywiki version greater than 5.1.17 does not accept //exclude// attribute. So, it is not possible to exclude some tiddlers say tagged with `ignored` from table of contents. <a href={{!!url}}>{{!!responder}}</a> has introduced a simple hack as below
<<< Mark S
You can use the sort argument to sneak in extra, simple requirements:
```
sort: "!tag[ignored]sort[title]"
```
<<<
!! Example 1
The below script shows a table of contents with `Contents` as the root tag and excludes all tiddlers also tag with `ignored`
```
<div class="tc-table-of-contents">
<<toc-selective-expandable "Contents" sort:"!tag[ignored]sort[title]">>
</div>
```
!! Example 2: Complex case
The below script shows a table of contents with `Contents` as the root tag and excludes all tiddlers have in their name `Test`. You can also omit `sort[title]` part.
```
<div class="tc-table-of-contents">
<<toc-selective-expandable "Contents" sort:"!search:title[Test]">>
</div>
```
This is belong to Administration Tools category.
; How to have a toggle button to switch two different states like on and off?
: Use `$reveal` and `$button` widget and a state tiddler
!! Code
{{exmp080/macro/toggle-button||template/code}}
!! Remarks
TO BE COMPLETERD
!! Examples
<$importvariables filter="exmp080/macro/toggle-button">
; Example i
:A simple on/off button is given below the value sets in state tiddler `exmp080/data/state01` can be used for further processing
:<$macrocall $name="wikitext-example-without-html"
src="""<<toggle-button stateTiddler:"exmp080/data/state01">>
"""/>
; Example ii
: In this example the on/off labels have been sent
:<$macrocall $name="wikitext-example-without-html"
src="""<<toggle-button stateTiddler:"exmp080/data/state02" onlabel:"Edit" offlabel:"Done">>
"""/>
</$importvariables>
<<<
;How to toggle the value of a field between two values while the field may have none of these values?
:sdsd
```
<$button>Day/Night
<$action-listops $tiddler="$:/palette" $field="text" $subfilter="+[toggle[$:/palettes/Vanilla],[$:/palettes/SolarFlare]]" />
</$button>
```
The problem here is if `$:/palette` is not empty and has not one of the two values above, then I get the wrong values in the text field (actually the value is appended). How can I replace the field value using toggle operator.
!! Saq solution
It is a bit tricky since `toggle[]` is a list ops operator. So you need to handle the situation where this is an existing value that is not a part of the value pair to toggle. I'm short on time at the moment so there might be a better solution, but something like this untested solution should work:
```
<$button>Day/Night
<$action-listops $tiddler="$:/palette" $field="text" $filter="""[{$:/palette}!match[$:/palettes/Vanilla]!match[$:/palettes/SolarFlare]then[$:/palettes/Vanilla]] :else[enlist{$:/palette}toggle[$:/palettes/Vanilla],[$:/palettes/SolarFlare]]""" />
</$button>
```
!! Alternative solution
This solution first check `$:/palette` to see if it has one of the two specified values, here one of `$:/palettes/SolarFlare` and `$:/palettes/Vanilla` if so, then it uses `toggle` to switch the palette, if not, the text field of `$:/palette` is cleaned first and then `toggle` sets the first value e.g. `$:/palettes/Vanilla`
```
<$button>Day/Night II
<$list filter="[{$:/palette}!match[$:/palettes/Vanilla]!match[$:/palettes/SolarFlare]]">
<$action-setfield $tiddler="$:/palette" $field="text" $value=""/>
</$list>
<$action-listops $tiddler="$:/palette" $field="text" $subfilter="+[toggle[$:/palettes/Vanilla],[$:/palettes/SolarFlare]]" />
</$button>
```
!! Even simpler solutions
The below solution are the same and do not use `toggle` operator at all
!!! Simple solution
```
<$button>Day/Night
<$list filter="[{$:/palette}match[$:/palettes/Vanilla]then[$:/palettes/SolarFlare]else[$:/palettes/Vanilla]]">
<$action-setfield $tiddler="$:/palette" text=<<currentTiddler>>/>
</$list>
</$button>
```
!!! Good practice
You may read darkPalette and lightPalete from a config tiddler fields.
```
<$vars
lightPalette="$:/palettes/Vanilla"
darkPalette="$:/palettes/SolarFlare"
>
<$button>Day/Night III
<$action-setfield $tiddler="$:/palette" text={{{ [{$:/palette}match<lightPalette>then<darkPalette>else<lightPalette>] }}} />
</$button>
</$vars>
```
<<docit>>
```
<$button> <$transclude tiddler={{{ [[target]contains:myfield[done]then[$:/core/images/unfold-button]else[$:/core/images/fold-button]]} }}}/>
<$action-listops $tiddler="target" $field="myfield" $subfilter="+[toggle[done]]" />
</$button>
```
;How to swap (toggle) between two stylesheet?
:
<<docit>>
<<code exmp096/macro/swapper>>
!! How to use
```
<<swapper StyleSheet-Edit-Normal StyleSheet-Edit-Large>>
```
<<docit>>
https://giffmex.org/experiments/expand.edittemplate.html
See also https://anthonymuscio.github.io/#Standard%20Nomenclature for nomenclature, syntax, macros, ... in Tiddlywiki
Ref: [[PMario|https://groups.google.com/d/msg/tiddlywiki/D6_qL9Dob3w/CCFCYOsmBQAJ]]
To be able to debug the code in TW you need the [[$:/plugins/tiddlywiki/internals]] plugin.
The belwo steps shows debuging on https://tiddlywiki.com/prerelease but is the same for any wiki with the above plugin:
# Open: https://tiddlywiki.com/prerelease
# Create a new tiddler
# Write your code into the tiddler and keep it in the edit mode
# Open the "preview" panel (the eyelash icon in the edit toolbar)
# Open the "choose preview type" dropdown (last button in the edit toolbar)
#* Choose: parsetree
#* Choose: raw html ... for smaller examples
How to create tooltips using pure CSS
* http://www.menucool.com/tooltip/css-tooltip
* https://kazzkiq.github.io/balloon.css/
When TW starts a certain page layout is seen- I assume that this layout is determined by a template, with transclusions in it.
Where do I start reading the code - what's the name of the top-level tiddler ie the template that (or tiddler) that determines how the first thing I see looks on screen?
!! Answer
;The top level page template is $:/core/ui/PageTemplate:
:https://github.com/Jermolene/TiddlyWiki5/blob/master/core/ui/PageTemplate.tid
;The top level CSS style template is $:/core/ui/PageStylesheet:
:https://github.com/Jermolene/TiddlyWiki5/blob/master/core/ui/PageStylesheet.tid
If you transclude a missing text reference or missing tiddler using `{{myTid!!myField}}` and/or `{{myTid}}` nothing is shown and you cannot realize it is missing one solution is to use a macro with a template as proposed by BTS below to address the missing tiddler transclusion:
* The macro
```
Title: TranscludeMissingTiddler
Tag: $:/tags/Macro
\define trl(text)
{{$text$||transcludilinktemplate}}
\end
```
* The template
```
Title: transcludilinktemplate
<$list filter="[<currentTiddler>is[missing]]">
<$link to=<<currentTiddler>>><<currentTiddler>></$link>
</$list>
<$list filter="[<currentTiddler>!is[missing]]">
<$transclude/>
</$list>
```
<$macrocall $name="wikitext-example-without-html"
src="""<$select tiddler="$:/temp/selected/character">
<$list filter="[tag[exmp055]] -[tag[solution]]">
<option><$text text=<<currentTiddler>> /></option>
</$list>
</$select>
<br>
<style>.wideEdit { width:75%; } </style>
<$edit-text tiddler={{$:/temp/selected/character}} tag="textarea" class="wideEdit" autoHeight="no" rows="5" />
"""/>
What it does:
* The `$select` widget creates a drop-down list of all the titles matching the tag value (in this example, "exmp055")
* The current selection is stored in a temporary tiddler, "$:/temp/selected/character" (note: you can use any tiddler title you like)
* The embedded `<style>` defines a classname for setting the edit field width (you can't use a style attribute directly in the $edit-text widget)
* The name of the target tiddler title used by `$edit-text` is retrieved from the temporary tiddler
* The remaining `$edit-text` parameters control how the edit field looks/behaves
<<alert danger "''Note'': unlike the usual tiddler editor "draft mode", the `$edit-text` field used here is ''LIVE''... that is, changes to the content are applied ''immediately'' to the underlying tiddler... there is no "ok/cancel" or "undo" functionality.">>
; A list of figures and their captions are stored in separate tiddlers. How they can be show in a table using transclusion?
<$macrocall $name=wikitext-example-without-html
src="""<table><tr><th>Exercise</th><th>Picture</th><th>Description</th></tr>
<$list filter="[tag[exmp019]]"><tr>
<td><$link to={{!!title}}><$view field="title"/></$link></td>
<td style="text-align:center;"><div style="width:120px;"><$transclude/></div></td>
<$set name="desc" filter="[<currentTiddler>addsuffix[.description]]">
<td><$transclude tiddler=<<desc>>/></td></$set>
</tr></$list></table>
"""
/>
How to transclude a tiddler tagged with `$:/tags/highlight/some-language` and highlight it using the syntax highlighter in TW?
TW uses the `Highlight.js` plugin to do it. To address this case:
<<<
A macro is needed to get the tiddler containing the code and corectly tagged to transclude it as a codeblock with correct language
{{Macro in Exmp 12}}
[[Macro in Exmp 12]]
<<<
Now you can use `<<snip tiddler-title>>` to transclude the tiddler as a codeblock highlighted in correct language
<<alert primary "Any tiddler containing the code should be tagged in correct manner i.e `$:/tags/highlight/language`">>
* Exampel
The tiddler [[Sample Code in Exmp 12]] contains fortran code and is tagged with `$:/tags/highlight/fortran`. To transclude it in highlighted form inside this tiddler do as below
<$macrocall $name="wikitext-example-without-html"
src="""<<snip "Sample Code in Exmp 12">>
"""/>
This example demonstrate how to transclude only specific user defined fields with templates
!! Template tiddler
The template tiddler here is used to transclude the specific field here called `fruits` and show them in a certain format
<<<
Title: [[template/fields]] <br>
Text: as below
{{template/fields||template/code}}
The above template first finds all fields of target tiddler and then display them with their values using a description list.
<<<
<<alert info "The [[template/fields]] only shows the user fields and exclude the system fields like title created modified tags creator modifier." width:"100">>
!! Usage
Now assume the [[exmp072/data01]] should be transcluded using the above [[template/fields]] template.The [[exmp072/data01]] has several fields and they will be shown using the [[template/fields]] template.
><<wikitext-example-without-html
src:"""{{exmp072/data01||template/fields}}
""">>
!! Remarks
Transcluding by [[template/full]] displays
* title of target tiddler by heading two `!!`
* body (text) of target tiddler below the title
This example uses [[template/code]] to display target tiddler body as a code block! In other words the tiddler text is displayed unwikified.
!! Template tiddler
The template tiddler is given by [[Stephan Hradek]] as below
<<<
Title: [[template/code]] <br>
Text: as below
```
<pre><$view field="text"/></pre>
```
The above template uses one field `text` from target tiddler.
<<<
!! Usage
Now assume the [[exmp070/demo01]] should be transcluded using the above [[template/code]] template. So
><<wikitext-example-without-html
src:"""{{exmp070/demo01||template/code}}
""">>
!! Remarks
Transcluding by [[template/code]] displays
the body (text) of target tiddler as a code block or unwikified text.
!! Filtered Transclusion
It is possible to transclude the filter output. This is a very powerful method to format the output of a filter using template. For more details consult [[Transclusion in WikiText|https://tiddlywiki.com/#Transclusion%20in%20WikiText]] and [[Introduction to Lists|https://tiddlywiki.com/#Introduction%20to%20Lists]]
As described in [[Introduction to Lists|https://tiddlywiki.com/#Introduction%20to%20Lists]], the syntax for filtered transclusion `{{{...}}}` takes a filter as input and outputs a linked list of matching titles. You can apply a template, for example:
<<wikitext-example-without-html
src:"""{{{ [tag[exmp060]] || $:/core/ui/TagTemplate }}}
""">>
!! Remarks
* The filter lists all tiddlers tagged with `exmp060`
* The template tiddler used is `$:/core/ui/TagTemplate` so the list of filtred titles are displayed using this template.
Using template you can transclude different parts of tiddlers and format them. See for more information [[transclusion with template|https://tiddlywiki.com/#Transclusion%20with%20Templates]] on Tiddlywiki.com.
The syntax is as below
```
{{title of tiddler||title of template}}
```
* Example
<<<
<<wikitext-example-without-html
src:"""{{exmp018/data01||Box-Template}}
""">>
<<<
!! Concept
Transclusion using templates in a method of displaying the contents of a tiddler is a predefined format.
!! Template tiddler
A [[Template tiddler|https://tiddlywiki.com/prerelease/#TemplateTiddlers]] is not actually a type of tiddler, it is a role in which a tiddler can be used.
Transcluding through a template extends the basic functionality of Transclusion by combining two tiddlers:
* A template tiddler that contains the WikiText to be displayed. It can contain transclusions that reference fields in the current tiddler
* A target tiddler that identifies which tiddler is to be treated as current when resolving references to fields
; How to automatically add a Google translate button on all tiddlers tagged with translate?
: The solution uses a button to open Google Translate in a new browser window with tiddler text as part of URL
!! Code
The below code implement a view template tiddler. It contains the button and few macros to define source and target languages.
<<code-link "exmp123/template/translate">>
!! How to use
# drag and drop the [[exmp123/template/translate]] tiddler into your wiki and tag it with `$:/tags/ViewTemplate`
# tag any tiddler you like to get the TRANSLATE button with `translate`, then a button will appear at the bottom of those tiddlers
# click the button, the Google Translate window will be opened with tiddler text in source language and its translation in the target language
# the current languages are set to en-US > fa-IR
# to change source and target languages, open the template/translate tiddler and in the first two line set the source and target languages as you like
;Can a radio widget have actions?
:No $radio widget does not supports actions, but warpping $radio widget in a $button lets you add actions
!! Example
The below example wraps $radio widget into a $button to add actions. The $radio widgets show/set the current choice, but the timestamp is set by the surrounding $button widget.
```
\define set_timestamp() <$action-setfield timestamp=<<now YYYY0MM0DD0hh0mm0ss0XXX>> />
<$button class="tc-btn-invisible" actions=<<set_timestamp>>>
<$radio field="choice" value="one"> one </$radio>
<$radio field="choice" value="two"> two</$radio>
<$radio field="choice" value="three"> three </$radio>
</$button>
choice = {{!!choice}}, timestamp = {{!!timestamp}}
```
;How trim whitespaces from left or right?
:Tiddlywiki has a [[trim|https://tiddlywiki.com/#trim%20Operator]] operator to remove spaces from start and end of titles, but there is no trim right or left
!! Code
This is a simple solution
<<code-link "exmp128/macro/trim-left-right">>
;Remarks
: the macro `triml` removes spaces from left side of string
: the macro `trimr` removes spaces from right side of string
: it seems TW condenses spaces.
!! Example
<$importvariables filter="[prefix[exmp128/macro/trim-left-right]]">
<$macrocall $name="wikitext-example-without-html"
src="""Left<<triml " This is a test. ">>Right
Left<<trimr " This is a test. ">>Right
"""/>
</$importvariables>
Wonderful application of TW in preparing the scientific contents:
* https://groups.google.com/d/msg/tiddlywiki/ozfuGHdeG-U/tBDv4EKADAAJ
;How create a url from other webpage like https://twitter.com to open the tiddlywiki.com and shows directly the result of search in TW?
: you can use arbitrary filters for the //permaview// part of the location hash. However, it's best to escape the square brackets (browsers typically do this if you copy the address from the address bar).
* Example
<<<
Open tiddlywiki with all tiddlers contain the firefox keyword in their title.
```
https://tiddlywiki.com/#:[!is[system]search[Firefox]]
```
!Widget Tutorial
This wiki provides step-by-step, interactive examples of how to write code for tiddlywiki widgets.
Intended audience:
Those who know tiddlywiki well and know programming and javascript and want to write their own widget. I don't make any effort to explain javascript here. For that you will need other resources.
Those who know tiddlywiki well and don't know javascript, but want to understand more about how tiddlywiki works. You should be able to skim through and interact with the demos and learn something.
https://btheado.github.io/tw-widget-tutorial/
See [[forum discussion|https://groups.google.com/d/msg/tiddlywikidev/g9v7L9nsYqM/1YadmUdPGQAJ]].
This is belong to Administration Tools category.
This Tiddlywiki use [[ministyl|https://github.com/Airmime/minstyle.io]] CSS framework.
TW5 is really two separate languages that tackle different dimensions of the problem:
* A declarative markup language based on HTML for representing widgets. Unlike HTML elements, widgets dynamically create and delete their own child widgets as they “refresh” themselves to track changes to the tiddler store
* A procedural query language that is philosophically influenced by Forth
I think the filter language is unique, but it flows very naturally from the idea of a list of titles being the simplest, degenerate filter. Most query languages are declarative, but TW5 filters have a definite sense of sequential execution.
TW is part of a chorus of new ideas in information management as we move beyond paper-based metaphors for information. Much of TW isn’t unique at all: it is relatively orthodox in hypertext terms, having many of the characteristics that Ted Nelson identified when he coined the term.
It’s very hard for me to see which of the unique elements of TW’s design might stand the test of time. I suspect that most of them are just provoked by the specific constraints imposed by using the browser as a platform
One thing I am reasonably confident of is that the discoveries we’ve made through using TW5 are timeless because they’re more about our perception of how our brains work than any particular generation of software: that the only purpose of recording information is to reuse it, and the way to optimise information for reuse is to cut it up into the smallest semantic units and use transclusion to weave it back together into a multiplicity of alternative, different structures. I expect others to formulate these discoveries better, and for them to gradually become mainstream.
Print stylesheets, tips and tricks for printing from Tiddlywiki
How change the background of sidebar?
* Create a tiddler
* Tag it with `$:/tags/Stylesheet`
* An put the below content inside it
* Save
```
div.tc-sidebar-scrollable {
<$set name="cssVar"
filter="[title[$:/state/sidebar]field:text[yes]]"
value="linear-gradient(to right, transparent, black 5%);"
emptyValue=""
>
background: <<cssVar>>
</$set>
}
```
TWEXE Saves single file Tiddlywiki 5 with no hassle.
! Features
* Automatic backups
* Automatic saving
* No browser add-ons needed!!
* Works on Linux and Windows
* Single file executable, can be moved, copied, etc.
* Wiki is compressed, occupying less space on your disk (sometimes even a third of the space!)
* Converts //any// Tiddlywiki5 file to a single file executable <<twexe>>, no need for special tiddlywiki plugins
* Automatically uses the saving tab in the control panel (there you can specify a backup directory if you don't like the default)
* Easily get back the html wiki file from the executable twexe (if you need it for some reason)
* Opens up the possibility to run external executables from your wiki (to draw charts, etc.) - stay tuned!!
* Supports external images (i.e. with _canonical_uri field)
;Ref
:[[Download page|https://ihm4u.github.io/twexe/]]
:[[Source|https://github.com/ihm4u/twexe]]
:<a href={{!!url}} target=_blank>Forum discussion</a>
Tiddlyspot.com has closed its free services to hosting Tiddlywiki and there are alot of Tiddlywiki files on Tiddlyspot.com which cannot be edited / maintained anymore.
Fortunately Tiddlywiki is enough flexible to be able to switch to alternatives very quickly. Here there are two alternatives
!!~GitHub Pages
<<<
This is the recommended method, it needs like one hour to set up your new account on https://github.com/ and host your Tiddlywiki using GitHub Pages. You can build a whole website using this method. It is possible to maintain the page as a collaborative work (but needs a little more efforts)
!!! I. Tiddlywiki older than TW 5.1.20
If you have an old Tiddlywiki and insisted to publish it, the use the instruction in this tutorial https://kookma.github.io/Tiddlywiki-and-GitHub-Pages/
read carefully the instruction tiddler.
!!! II. Tiddlywiki based on release 5.1.20 and newer [recommended]
If you have a Tiddlywiki based on release 5.1.20 or newer, or you can upgrade your old Tiddlywiki, then use the instruction has been given here: https://kookma.github.io/TW5-GitHub-Saver/
This method is simpler straight forward and better for non-tech people.
The published Tiddlywiki on GitHub can be accessed by any viewer has the site url and a rather new browser!
<<<
!! Google Drive [The simplest - Limited to Android Users ]
<<<
[[Tiddloid|https://github.com/donmor/Tiddloid]] and [[TiddloidLite|https://github.com/donmor/TiddloidLite]] are two freely distributed Android Apps can be installed on an Android device (phone/tablet). They can simply create a Tiddlywiki (or any number of wiki you like) on Google Drive the same way you create a new one on your local disk. You can open your wiki using Tiddloid and edit it and save back to Drive.
The Tiddloid works simply and any non-tech user can host his/her Tiddlywiki on Google Drive.
;Remarks
:If your audiences have Tiddloid you can give access to them from Google Drive
:If you want to share to anyone who has not Tiddloid you can share it but viewer has to download and open the Tiddlywiki, the browser does not open Tiddlywiki from Google Drive.
''NOTE'': The hosted Tiddlywiki on Google Drive can be accessed by any other viewer has the site url . You need to distribute the link to viewers (See Share Files from Google Drive)
<<<
;How to create a structure similar to Roam Research?
: The [[Roam Research|https://roamresearch.com/]] is heavily inspired by Tiddlywiki is a two columns layout for note taking of networked thought.
Several solutions here have been proposed to show how Tiddlywiki can do the job! See the Github links and Tiddlywspot provided.
; How to delete all `$:/state` and `$:/temp` tiddlers on demand to refresh TW?
: Use the `$action-deletetiddler` widget with suitable filter abd `$button`
! Solution
The below code implements a simple mechanism to select the desired tiddlers and delete theme one by one or all at once.
!! Code
{{exmp067/macro/delete-temp-state||template/code}}
!! Remarks
* The `$select` widget lets to choose between `$:/temp` and `$:/state`
* The selected option is stored as a filter in `status` field of [[exmp067/macro/delete-temp-state]] tiddler
* The first `$button` uses `$action-deletetiddler` with a filter reads from `status` field. It removes all tiddlers meet the filter criteria
* The `$list` uses a filter reads from `status` field. It then calls the `deleteButton` macro where it displays a button and a link to the target tiddler.
* The `deleteButton` macro uses `$action-deletetiddler` widget with `$tiddler` parameter within the `$button` widget to selectively deletes the target tiddler
!! Inspiration
* This work inspired from the great codes by Mario Pietsch at [[Wikilabs|https://wikilabs.github.io/editions/remove-states/]]
* The [[Tiddler Commander|https://kookma.github.io/TW-Commander/]] has great facilities to do these kind of stuffs quite easily and efficiently.
;How to conditionally reveal (display) the raw content of tiddlers?
:Use a view template with proper condition
Tiddlywiki by default display the wikified contents. To display the raw contents like scripts, html tags, inline styles a view template can be used.
!! Example
Display the raw content of all tiddlers meet one of the below criteria:
* all system tiddlers with the word `template` in title
* all edit templates i.e. those tagged with `$:/tags/EditTemplate`
* all edit templates i.e. those tagged with `$:/tags/ViewTemplate`
* all global macros i.e. those tagged with `$:/tags/Macro`
The below code shows how this example can be implemented. Create a tiddler and tag it with `$:/tags/ViewTemplate` and put the below code in its text field.
```
<$list filter="[all[current]tag[show-content]]
[all[current]is[system]search:title[template]]
[all[current]tag[$:/tags/EditTemplate]]
[all[current]tag[$:/tags/ViewTemplate]]
[all[current]tag[$:/tags/Macro]] +[limit[1]]">
<$codeblock code={{!!text}} language="xml" />
</$list>
```
;Remarks
: the content of tiddler meets any of above condition will be displayed as codeblock
: if plugin [[highlight.js|https://tiddlywiki.com/prerelease/#Highlight%20Plugin]] is installed the contented will be highlghted using xml language. This is because wikitext script is close to xml.
\import exmp117/macro/uniqueid
;How to create a unique permananet id to be used for title of state tiddler?
: use now macro with suitable format
Tiddlywiki uses [[qualify|https://tiddlywiki.com/#qualify%20Macro]] macro for creating unique title for state tiddlers. The issue is qualify macro generates different ids based on the situation and is very depenedent to currentTiddler. See for example [[the good and bad of Qualify|https://groups.google.com/d/msg/tiddlywiki/51XMzmLGxfQ/PLkfWWthBAAJ]].
!! A proposed solution
One solution is to generate unique permamant title using some helpwr function as below
<<code-link "exmp117/macro/uniqueid">>
for example
<$macrocall $name="wikitext-example-without-html"
src="""<<uniqueId $:/keepstate>>
"""/>
;Remarks
: the macro `create_id_from_timedata` creates an id based on current date and time
: the $wikify widget calls `create_id_from_timedata` and converts the id to plain text
:the $button lets copy the generated if into clipboard and use elsewhere
;How to reset the field value on multiple tiddlers?
:list them and then use the `action-setfield` to set the new values
!! Example
The below code finds all fileds named `time_total` and `grand_total` and then reset their value to zero.
```
<!-- show tiddlers and values (just so we know it works) -->
<$list filter="[has[time_total]] [has[grand_total]]">
<<currentTiddler>> time_total={{!!time_total}} grand_total={{!!grand_total}}<br>
</$list>
<!-- HERE'S THE BUTTON -->
<$button> reset totals
<$list filter="[has[time_total]] [has[grand_total]]">
<$action-setfield time_total="0" grand_total="0" />
</$list>
</$button>
```
!! Remarks
* The first $list use two filter runs in OR mode and lists all tiddlers with fields `time_total` OR `grand_total`
* The body of $list displays the found tiddler and the values of those fields if any
* The next part create a button for action on the tiddler with `time_total` and `grand_total` fields
* The seconf $list widget again lists all all tiddlers with fields `time_total` OR `grand_total` and in the body sets `time_total`="0" `grand_total`="0"
;Note
: the filter tests for any tiddler that has ''non-blank'' values for `time_total` OR `grand_total`. If you want to test for tiddlers that have either of those fields, even if blank, use:<div>
```
<$list filter="[has:field[time_total]] [has:field[grand_total]]">
```
</div>
* A link to a tiddler can be dragged into a different wiki, or
* dragged to the bookmarks bar then dragged into another wiki for import.
https://github.com/Jermolene/TiddlyWiki5/blob/master/themes/tiddlywiki/vanilla/base.tid#L2152
See how saq has used the colour macro with palette colors.
```
.tc-import-table .tc-row-warning {
background: <<colour diff-delete-background>>50;
}
```
<<docit>>
!! Transclusion via template
Transcluding via a template is like applying a mask: assuming that the template tiddler contains generic references (like eye holes in a mask), these will be replaced with the target tiddlers values (like the eyes of the person who wears the mask).
A template can be applied to any tiddler, not necessarily the current one. This is achieved using the full notation `{{TargetTiddler||TemplateTiddler}}`. The default `TargetTiddler` is the current tiddler.
<<alert info "Syntax: `{{AnyTiddler||TemplateTiddler}}`" width:"100">>
!! Example
Assume TidA should be transcluded by tiddler template `myTem`, then the transclusion is as follows
```
{{TidA||myTemp}}
```
; How to use Tiddlywiki svg icons with body text?
:Tiddlywiki svg icons are big and when used inside text make extra space between lines. The below css setting helps to use aligned svg images with the same font size.
{{exmp082/macro||template/code}}
* The macro gets a tiddler title contains svg
* The core is a CSS valid color and used as svg fill color
!! Example
{{exmp082/demo||template/full}}
!! Remarks
The svg tiddler should have no content type. This is very important as the conent type is set to `image/svg+xml`, the image will be not shown.
\define makeCSS() width: calc(3em * $(len)$);
\define xtip(label, tip)
<$set name="x" value=<<__tip__>> >
<$list filter="[enlist<x>count[]]" variable="len">
<div class="xwrapper">$label$
<div class="xtip" style=<<makeCSS>>>
$tip$<br>
''Number of words'': <<len>>
</div>
</div>
</$list>
</$set>
\end
; How is it possible to use the TW variables inside a CSS `calc()` function?
There is not any way that works for inline styles, but it works fine if you make a tiddler and tag it with `$:/tags/Stylesheet` and then define the css in that tiddler with whatever wikitext you want.
If you can rearrange your tiddlers to have the css defined in its own place that is a solution.
If you can't than you could use helper macros like this:
```
\define makeCSS() width: calc(3em * $(len)$);
```
* Exampel
This is a sample code shows a variable width div element, its width is set dynamically by a macro through css using TW variable and css `calc` function.
''Note:'' The stylesheet has been defined in [[stylesheet/Exmp017-Tooltip]]
```
\define makeCSS() width: calc(3em * $(len)$);
\define xtip(label, tip)
<$set name="x" value=<<__tip__>> >
<$list filter="[enlist<x>count[]]" variable="len">
<div class="xwrapper">$label$
<div class="xtip" style=<<makeCSS>>>
$tip$<br>
''Number of words'': <<len>>
</div>
</div>
</$list>
</$set>
\end
This is a sample <<xtip "tooltip" "This is a tooltip">> and this is another one <<xtip "next tip" "This is the ''second'' toltip">>.
```
* Result
This is a sample <<xtip "tooltip" "This is a tooltip">> and this is another one <<xtip "next tip" "This is the ''second'' toltip">>.
!! Control Panel > Info > Basics tips
;Default tidlers
* Default tiddlers If you use `[list[$:/StoryList]]` in the default tiddlers it will always load the Home tiddler and the previously open tiddlers
; Username
* Username for signing edits this can not only be used as a user name, but you can change it for a particular edit session.
** For example `Tony V0.3 changes` then you can list tiddlers created and modified for that edit session.
** Consider clicking on the user name in the tiddler subtitles and defining a more descriptive definition in the resulting "user tiddler"
; Title of new tiddlers
* Title of new tiddlers Set to `New {{$:/SiteTitle}} Tiddler` for each new tiddler to include the site title
** For example the ''Recipes'' wiki creates new tiddlers titled `New Recipes Tiddler`
;How to use Google API Fonts in Tiddlywiki?
# <div>
Create a new tiddler named as you like with the tag `$:/tags/RawMarkup` and add the link to your font, e.g:
Example:
```
<link href='http://fonts.googleapis.com/css?family=Poiret+One' rel='stylesheet' type='text/css'>
```
</div>
#<div>
Create another tiddler named as you like with the tag `$:/tags/Stylesheet` and put your css in there, for instance :
```
html span.tc-title{
color: red;
font-family: "Poiret One", "Impact";
}
```
</div>
!!See also
* Google fonts: https://fonts.google.com/
* Sample wiki: http://asciifish.tiddlyspot.com/
* TheDiveO plugins
** [[Font Awesome|http://thediveo.github.io/TW5FontAwesome/]]
** [[Roboto Font|https://github.com/TheDiveO/TW5Roboto]]
<<alert info "The Roboto Font above is an embeded font in TW. Embeding fonts makes TW gets big and heavy. But it is self contained." width:65%>>
Follow these simple steps to use named colors in your palettes or templates:
# create a tiddlerfor your colors, e.g. $:/.mr/colors
# set its type to ''Data dictionary'' (`application/x-tiddler-dictionary`)
# add entries with descriptive color names, specifying a [[valid color format|http://www.w3schools.com/cssref/css_colors_legal.asp]]
# use them in your palette or stylesheets as `{{$:/.mr/colors##color-name}}`
Some example colors:
* using [[standard html color names|http://www.w3schools.com/cssref/css_colornames.asp]]
* sample custom color defined in [[hsla()|http://www.w3.org/wiki/CSS3/Color/HSLA]]
Here's an example using those:
<div style="width:40%">
```css
.fancy{
background:{{$:/.mr/colors##AliceBlue}};
color:{{$:/.mr/colors##crimson}};
border: 2px solid {{$://colors##Beige}};
border-radius: 10px;
padding:5px;
}
```
</div>
Also see [[A Radio Button Macro]]
How to use radio buttons to reveal text in a presistant way?
```
<$radio field="section" value="1"> One</$radio>
<$radio field="section" value="2"> Two</$radio>
<$radio field="section" value="3"> Three</$radio>
<$reveal state="!!section" type="match" text="1">
This is PART ONE
</$reveal>
<$reveal state="!!section" type="match" text="2">
This is PART TWO
</$reveal>
<$reveal state="!!section" type="match" text="3">
This is PART THREE
</$reveal>
```
<$radio field="section" value="1"> One</$radio>
<$radio field="section" value="2"> Two</$radio>
<$radio field="section" value="3"> Three</$radio>
<$reveal state="!!section" type="match" text="1">
This is PART ONE
</$reveal>
<$reveal state="!!section" type="match" text="2">
This is PART TWO
</$reveal>
<$reveal state="!!section" type="match" text="3">
This is PART THREE
</$reveal>
It seems only tiddler have a type: `image/svg+xml` can be set as background image using `datauri` macro.
See: https://groups.google.com/g/tiddlywiki/c/VplcYkL3qTU/m/_rPWQFc8AgAJ
The datauri macro returns a data URI for the content of a tiddler.
It is often used in //stylesheet// tiddlers to reference things like inline images and fonts:
```
background: url(<<datauri "Motovun Jack.jpg">>);
```
The data URI is automatically base64-encoded in the case of a non-text tiddler.
Try the following in a new tiddler tagged `$:/tags/Stylesheet` on https://tiddlywiki.com:
```
\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock
html body.tc-body {
background: url("<<datauri "Tiddler Fishes.svg">>") center center;
}
```
Assume you have a data tiddler (dictionary) and you want to list the properties (name/value or index/value) pairs. One solution is using the `tiddler` widget.
* Use `<$tiddler>` widget
```
<$tiddler tiddler="Data for Example04">
* Ali is {{##Ali}}
* Mohammad is {{##Mohammad}}
* Hirad is {{##Hirad}}
</$tiddler>
```
Because of the surrounding `<$tiddler>...</$tiddler>` widget, you can omit the tiddlername from the index references so that they will be relative to the "currentTiddler"... which has been set by the `<$tiddler>` widget to be the appropriate ~DataTiddler. Thus, you only have to change ONE place, instead of "more than a hundred"
* ''Results''
<$tiddler tiddler="Data for Example04">
* Ali is {{##Ali}}
* Mohammad is {{##Mohammad}}
* Hirad is {{##Hirad}}
</$tiddler>
---
Related tiddlers
<<list-links "[tag[exmp014]]">>
;Is it possible, using wikitext, to set background-color on individual cells?
:Use dynamic style through a macro
!! Code
The below code shows how dynamic style can be defined using wikitext macro and used in different places.
<<code-link "exmp124/macro/table-style">>
;Remarks
: `name` is the css class name and one can call macro and define dynamically several css classes
: `row` matches elements based on their position in a group of row siblings.
: `row` matches elements based on their position in a group of column siblings.
: `bg-color` sets the background color of target cells
The macro can be extended to set other cells properties
!! Example
The below examples show how dynamically one can change the background color of a single cell, specific rows, columns, or a region.
<<content exmp124/sample-table>>
!! More information
More infos about `nth-child()` CSS function can be found at: https://developer.mozilla.org/en-US/docs/Web/CSS/:nth-child#Examples
For getting the property value from a data tiddler (dictionary) using a variable, use the below syntax
```
<$transclude tiddler="data-tiddler" index=<<var-name>> />
```
!! Storing the property value in another variable
If you want to store the property value into another variable you can use the `set` widget as below
```
<$set name="data" tiddler=<<dataTid>> index=<<idx>> >
... the property value can be accessed here using <<data>> variable.
</$set>
```
See also [[DataTiddler Value Set to a Variable]] for similar example.
\define makeCls() $(cls)$ mr-contents
\define setCls(p)
<$set name=cls filter="$p$ +[addprefix[mr-dcls-]]">
<span class=<<makeCls>> > This is a test </span>
</$set>
\end
<style>
.mr-dcls-red{color:red; font-weight:700;}
.mr-dcls-yellow{background-color:#ffff00;}
.mr-contents{border:1px solid blue;padding:5px;}
</style>
; How dynamically set the class attribute of Html tag using Tiddlywiki macros?
: A macro can accepts class names or aliases or part an abbreviated name and then creates the correct class name to set for the desired Html tag. An example is given below.
!! Example
In the below example the class attribute of `span` tag has been set by `makeCls` macro.
* The `setCls` accept class aliases as a single input parameter i.e. `p`
* It then split it using space as delimiter and add the prefix `mr-dcls-` to make the class name
** If `p` is "red yellow" then `mr-dcls-red` and `mr-dcls-yellow` will be created.
* The macro `makeCls` then encapsulates all classes. For our example here the macro output will be `mr-dcls-red mr-dcls-yellow mr-contents`
* Finally the class attribute of `span` tag will be set by a class to `makeCls` macro as `<span class=<<makeCls>>> ... </span>`
```
\define makeCls() $(cls)$ mr-contents
\define setCls(p)
<$set name=cls filter="$p$ +[addprefix[mr-fadeIn-]]">
<span class=<<makeCls>> > This is a test </span>
</$set>
\end
```
The below styles are used in this example
```
<style>
.mr-dcls-red{color:red; font-weight:700;}
.mr-dcls-yellow{background-color:#ffff00;}
.mr-contents{border:1px solid blue;padding:5px;}
</style>
```
<<alert warning "''Note'': The `$p$` in filter operation above, when `p` contains space, is interpreted as a list title (each word as a title).">>
!! Demo
This demo sets two classes to span element `mr-dcls-red mr-dcls-yellow`. The `mr-contens` is always applied.
<$macrocall $name="wikitext-example-without-html"
src="""<<setCls "red yellow">>
"""/>
This demo sets only on class to span element `mr-dcls-yellow`
<$macrocall $name="wikitext-example-without-html"
src="""<<setCls "yellow">>
"""/>
In Tiddlywiki it is possible to override or even overloade a variable. As they have not strict type, overloading is the same as overriding.
The following example renders "Ringo" and ''NOT'' John, //Paul//, or //George//.
<$macrocall $name="wikitext-example-without-html"
src="""><$set name="foo" value="John">
<$set name="foo" value="Paul">
<$set name="foo" value="George">
<$set name="foo" value="Ringo">
<$text text=<<foo>>/>
</$set>
</$set>
</$set>
</$set>
"""/>
A variable that is defined outside a macro can be referred to within the macro using ''either'' `$(varname)$` or `<<varname>>`, depending on context.
The difference is that occurrences of `$(varname)$` are immediately replaced with the current value of the variable, while `<<varname>>` is simply returned unchanged as part of the macro output. Thus these are all valid uses:
```
\define mymacro() <$somewidget param="$(currentTiddler)$" />
\define mymacro() <$somewidget param="TEXTBEFORE $(currentTiddler)$ TEXTAFTER" />
\define mymacro() <$somewidget param=<<currentTiddler>> />
```
but the following is NOT (because it mixes` <<...>>` inside a quoted parameter value where parsing doesn't occur)
```
\define mymacro() <$somewidget param="TEXTBEFORE <<currentTiddler>> TEXTAFTER" />
```
For more details and examples, see: http://pv5.tiddlyspot.com
;general wiki text, including macros
: `<<variable>>`
: `{{transclusion}}`
: @@.warn ~~`<variable>`, `"<variable>"`, `[[<variable>]]`~~@@
;general html element attributes, including widgets, e.g. `$macrocall`
: `<$widget attribute=<<variable>>/>`
: `<$widget attribute=<<callMacroToComputeValue>>/>`
: `<$widget attribute={{transclusion}}/>`
: @@.warn ~~`<$widget attribute="prefix-<<variable>>"/>`~~@@
: @@.warn ~~`<$widget attribute=[[prefix-<<variable>>]]/>`~~@@
: @@.warn ~~`<$widget attribute="prefix-{{transclusion}}"/>`~~@@
;within macro body
: `$macroParameter$`, `"$macroParameter$"`, `[[$macroParameter$]]`
: `$(variable)$` (references a variable from the context of the calling macro)
: `<$widget attribute="prefix-$macroParameter$"/>`
: `<$widget attribute=$macroParameter$/>` (unsafe when having spaces)
: @@.warn ~~`$variable$`, `"$variable$"`, `[[$variable$]]`~~@@
;macro parameter
: `<<macro param:"$macroParameter$">>` (only inside macro)
: @@.warn ~~`<<macro <<variable>> >>`~~@@
: @@.warn ~~`<<macro "<<variable>>" >>`~~@@
: @@.warn ~~`<<macro param:<<variable>> >>`~~@@
: @@.warn ~~`<<macro {{transclusion}}>>`~~@@
: @@.warn ~~`<<macro param:{{transclusion}}>>`~~@@
;in filters
: `[$macroParameter$]` (only filters within macros)
: `[tag<variable>]` (no inner square brackets!)
: `[tag{transclusion}]` (only single curly brackets!)
: @@.warn ~~`[tag[$(variable)$]]`~~@@
: @@.warn ~~`[tag[$(variable)$]]`~~@@
See [[discussion|https://groups.google.com/d/msg/tiddlywiki/_x9CDAFtwQc/Qlng28uWNKIJ]]...
* See also: [[Shorthand syntax summary]]
* See also [[Eric description on brackets|Brackets]]
!! Types of Brackets
<<<
Brackets are used to indicate the ''type of operand'':
* `[]` - square brackets surround ''literal'' values,
* `{}` - curly braces around ''field references'',
* `<>` - angle brackets around ''variable names''.
<<<
!! Single or Double Brackets - `<` vs `<<`
<<<
In ~TiddlyWiki ''content'', ''variables'' and ''macros'' are referenced using `<<variableName>>`. The ''double''-bracket syntax is used to avoid conflicts with standard HTML syntax (i.e., `<b>` starts normal HTML bold formatting, while `<<b>>` embeds the value of a ~TiddlyWiki variable named "b").
However, ''within'' ~TiddlyWiki ''filters'', there is no need to double the brackets, as HTML is not allowed ''within'' the filter, so only single `<variableName>` is used.
Thus, inside a filter we can use a pair of ''single'' angle brackets, like this:
```
<$list filter="[is[current]!has<eachfield>]" variable=null>
```
<<<
!! Brackets within filters
<<<
Why I don't have to wrap `<fieldname>` with `[<fieldname>]` in a filter?
Think of the brackets in filters as part of the operand itself rather than a "container" for the operand. As explained above, the type of bracket indicates the type of operand being used:
* use `[...]` for ''literal'' values, e.g., `[texthere]`
* use `{...}` for ''field'' references, e.g., `{!!fieldname}`
* use `<...>` for ''variables'' e.g. `<currentTiddler>`
Thus, to split the literal text, "sometext", you could write: `[title[sometext]splitbefore[t]removesuffix[t]]`
you would get "some" as a result:
Ex: `<<list-links "[title[sometext]splitbefore[t]removesuffix[t]]">>`
If the value "sometext" is stored in a field named "somefield" in the current tiddler, you could write: `[{!!somefield}splitbefore[t]removesuffix[t]]`
and, if the value "sometext" is stored in a variable named "somevariable", you could write: `[<somevariable>splitbefore[t]removesuffix[t]]`
As a slightly more complex example, suppose the value to split on was also stored in a variable. Then you could write:
`[<somevariable>splitbefore<othervariable>removesuffix<othervariable>]`
<<<
hope this helps,
enjoy,
-e
Eric Shulman
<<docit>>
Ref: https://groups.google.com/d/msg/tiddlywiki/NQ86xj5iRbc/X82H517OAAAJ
; Create a list of videoes from tiddlers tagged with `video`, on click an item in the list, a model window opens and play the video.
!! Solution
To implement this solution, it needs two parts
* a tiddler to list videos
* a template to be used with modal window
!! Part i - List of clickable video titles
The below tiddler creates a list of video titles
<<code-link exmp137/VideoButtons>>
; Remarks
* The $list widget, filters for `[tag[video]]` e.g lists all tiddlers tagged with `video`
* The $button widget, create a clicable title
* use $view caption with fallback handling to show title if no caption is set
* Use `class=" tc-btn-invisible tc-tiddlylink"` to make the button appear as clickable link instead of a button
* The $action-sendmessage widget opens a modal window, using the [[exmp137/VideoTemplate]] template!
* The `currentTiddler` input parameter of $action-sendmessage widget takes the $list variable `currentTiddler` and passes it to the modal window hence to template.
!! Part ii - The template
<<code-link exmp137/VideoTemplate>>
; Remarks
* The iframe tag is used to let embed the video
* The width and height parameters set the width and height of iframe and hence video
* the url is read from the currentTiddler variable passed to template
!! Example i
To test the solution create some tiddler as below
* tag tiddler with `video`
* add field `url` with the address of embeded video! for example for ~YouTube use ~YouTube ''embed'' URL
Sample video tiddlers
<<list-links "[tag[video]tag[exmp137]]">>
See the working example in [[exmp137/VideoButtons]]
!! Example ii
This example uses details widget from html5 instead of modal window! See [[exmp137/video-in-details-widget]]
<<content "exmp137/video-in-details-widget">>
<<docit>>
<$macrocall $name="wikitext-example-without-html"
src="""<$view tiddler="solution" field="created"
format="date"
template="DDD, mmm DDth, YYYY 0hh:0mm:0ss" />
"""/>
''Ref'':
* https://tiddlywiki.com/#ViewWidget
* https://tiddlywiki.com/#Date%20Fields
* https://tiddlywiki.com/#DateFormat
; Problem definition
: Consider parent tiddlers: A, B, C, D, etc. each tagged "parent". Then there are child tiddlers: A1, B1, C2, D2, etc. (they are not tagged "child", but are tagged with the name of the parent tiddler. How create a conditional view template for these child tiddlers?
; Solution
: A view template is required to manage the presentation of child tiddlers, and capture any tiddler that is a child of any of the parent tiddlers, without specifying or knowing the name of the parent tiddlers.
!! Template tiddler
The below code shows a conditional view template tiddler. You can create a tiddler and tagged it with `$:/tags/ViewTemplate`
```
<$list filter="[is[current]tags[]]">
<$list filter="[<currentTiddler>tag[parent]]">
This is a child!
</$list>
</$list>
```
; Remarks
: The first `$list` filters all tiddlers have tag and lists its tags
: The second `$list` filters tags and see if any of them itself is tagged with `parent`
: If the above two conditions met then a message This is a child! is displayed
: You can use any other commands here to create a more sophisticated output.
!! Example
* Create three tiddlers named exmp069/data/Tid01, Tid02, Tid03
* Tag all abobe tiddlers with `parent`
* Create six child tiddlers as exmp069/data/Tid01-1, Tid01-2 and so on
* Use the above conditional view template to act only on child tiddlers, means each tiddler tagged with a tiddler itself is tagged with `parent`, e.g
** main tiddler exmp069/data/Tid01 is tagged with `parent`
** child tiddler exmp069/data/Tid01-1 is tagged with `exmp069/data/Tid01`
<$list filter="[all[current]tag[Links]]">
*''Name'': {{!!wiki-name}}
*''URL'': {{!!url}}
*''Developer'': {{!!developer}}
*''Keywords'': <$list filter="[enlist{!!keywords}join[, ]]" variable=item><<item>></$list>
!! Description
{{!!description}}
</$list>
<$list filter="[all[current]!tag[exclude]tagging[]] +[limit[1]]" variable="null" >
Tiddlers tagged with <$text text=<<currentTiddler>>/>:
<$macrocall $name="list-links" filter="[is[current]tagging[]]" type="ol"/>
</$list>
<!--
Important note: to not acts on all tiddlers, the filter changed from [is[current]tagging[]] to [all[current]!tag[exclude]tagging[]]
-->
Using w3.css frameworks in TW
;How to create a wall of tag pills?
:The tags in a wiki are stored in `filter` field of [[$:/core/Filters/AllTags]]. So you can use it or you can directly use `[tags[]!is[system]sort[title]` filter.
!!Example
Create of wall of tags including 50 tags.
><$macrocall $name="wikitext-example-without-html"
src="""<$list filter="[tags[]!is[system]sort[title]limit[50]]"> <$transclude tiddler="$:/core/ui/TagTemplate"/> </$list>
"""/>
;Note
:"Tiddlywiki tags can be accessed from Sidebar, More tab, Tags">>
;See also
:[[Example in Tiddlywiki.com|https://tiddlywiki.com/#Formatting%20List%20Results%20as%20Tables%20with%20CSS%20-%20Variable%20Column%20Method]]
A wiki demonstrates how to embed web fonts of type woff2 into Tiddlywiki. It has also several common fonts embedded as example.
https://en.wikipedia.org/wiki/WebDAV
WebDAV (Web Distributed Authoring and Versioning) is an extension of the Hypertext Transfer Protocol (HTTP) that allows clients to perform remote Web content authoring operations. WebDAV is defined in RFC 4918 by a working group of the Internet Engineering Task Force.
;See also
:https://webdav.io/webdav/
;Tiddlywiki uses tiddlers to store global variables and parameters. When use temporary tiddlers and when to use state tiddlers for this purpose?
: Tiddlywiki normally uses `$:/state` prefix for state tiddlers and `$:/temp` prefix for temporary tiddlers
* Both `$:/temp` and `$:/state` are ignored when determining if the document is "dirty" (see [[$:/config/SaverFilter]])... and by default both are saved when you save the file (except for `$:/state/popup`, which are NOT saved... see `$:/core/save/all`)
* However, conceptually, `$:/temp` tiddlers should be "throw-away"... able to be discarded when not actually in use, while `$:/state` tiddlers should reasonably be expected to persist across sessions.
* To enforce this difference, I routinely create a tiddler, tagged with `$:/tags/Macro`, containing:<div>
```
\define publishFilter() -[prefix[$:/temp]]
```
</div>
* This variable is automatically included by the `$:/core/save/all` filter. The effect is that `$:/temp` tiddlers are NOT saved when you save the file and are, in effect, automatically discarded at the end of the session.
* Thus, if I want a reveal state to always revert to closed on startup, I will use a `$:/temp` tiddler, but if I want the reveal state to persist across sessions, I will use a `$:/state` tiddler
; How keep state tiddlers using Tiddlywiki on Node.js?
: As [[Mario|https://groups.google.com/d/msg/tiddlywiki/ND6fEBAmxDw/zGtnXHT7FgAJ]] explained, the node server uses a config tiddler [[$:/config/SyncFilter]] to sync info back to the server. As you can see the default setting contains:
```
[is[tiddler]] -[[$:/HistoryList]] -[[$:/Import]] -[[$:/isEncrypted]] -[prefix[$:/status/]] -[prefix[$:/state/]] -[prefix[$:/temp/]]
```
Just remove the `-[prefix[$:/state/]]` element from the filter and the state info will be saved back. .. Or use a different name like `$:/keepstate`.
!! More information
* [[Saving mechanism|https://tiddlywiki.com/prerelease/#SavingMechanism]]
* `The publishFilter` start to work from TW 5.1.22
Widdly provides a minimal self-hosted TiddlyWiki5 server written in Go, original form opennota/widdly, and bring proof of concept flat-file & sqlite backends support from xarnze/widdly with much improvements.
* Download: [[Github|https://github.com/cs8425/widdly/releases]]
* Update release v1.2.2,
And here are some must to be known: https://github.com/cs8425/widdly#important-to-know
! What do set and list widgets?
In conventional programming languages the `set` and `list` widgets can be explained as below:
!! Set widget
The set variable widget assigns a value to a specified variable. The new value of the variable is available to the content within the set variable widget [1].
In conventional programming language set is equal to
```
$set name="x" value="" means
let x=value .... end
```
!! List widget
The list widget displays a sequence of tiddlers that match a tiddler filter [2]. In conventional programming language set is equal to
```
$list filter=".." variable="i"> means
for i=filter
output += ... $i
end
```
---
[1]. https://tiddlywiki.com/#SetWidget<br>
[2]. https://tiddlywiki.com/#ListWidget
The below code is another version of <<tag exmp054>>. This is a rather tough solution, but it has some intresting point from programming point of view
```
\define gt()
$(TidA)$ $(TidB)$ +[nsort[]last[1]remove[$(TidB)$]]
\end
\define is-it-newer(TiddlerA, TiddlerB)
\whitespace trim
<$set name=TidA tiddler=<<__TiddlerA__>> field="modified">
<$set name=TidB tiddler=<<__TiddlerB__>> field="modified">
<$list filter=<<gt>> emptyMessage="no">
yes
</$list>
</$set>
</$set>
\end
> Is `Aa` newer than `Bb`? <<is-it-newer Aa Bb>>
> <$wikify text="""<<is-it-newer Aa Bb>>""" name="result">
<$reveal type="match" text="yes" default=<<result>> >
Yes, Aa is newer
</$reveal>
<$reveal type="match" text="no" default=<<result>> >
No, Aa is older
</$reveal>
</$wikify>
```
!!! Remarks
* The `gt` macro returns the greater one of its parameters
* The `is-it-newer` uses `gt` to see the modification date of which tiddler is newer
* The `$wikify` widget then store the result by `is-it-newer` macro and
* The `$reveal` widgets compare the result by $wikify widget and displays the final result
!! Important note
# The macro `is-it-newer` creates some white spaces and this makes the wikified result is different from `yes` and `no` in `$reveal` widget
# You need to add `\whitespace trim` pargma into `is-it-newer` to get the correct result
# Passing a maco to `text` attribute of `$wikify` without uisng quotes makes wrong wikification, [[see here|https://groups.google.com/d/msg/tiddlywiki/9QQvkJkLogA/GrL2OW9NBgAJ]].
<<alert info "''BTC:'' What I want to say is that I think the `$wikify` widget should never be the widget of choice if it can be done without. When I use it I try questioning if there's a reason why, if I know that it does something that's not possible or more difficult without it.">>
https://wikilabs.github.io/
This is Mario (pmario) playground with some ramblings about TiddlyWiki.
It basically is a "jump off" page to various TiddlyWiki editions, that show my themes and plugins.
The below macro creates a links to an external site. When the label is a CamelCase word, TW confuses and instead of pointing to an external link it interpretes the macro output as internal link.
To address this issue, the `\rules except wikilink` is employed.
!! Example
* With `\rules except wikilink`
** the link created is correct: `TiddlyWiki : https://tiddlywiki.com/`
* Without `\rules except wikilink`
** the link is wrong: `TiddlyWiki : https://tiddlywiki.com/#TiddlyWiki`
```
\define makeLink(site link)
\rules except wikilink
<a href="$link$" target="_blank">$site$</a>
\end
Consider the below example in which a macro output contains some wikitext has been fed to a wikify widget! The widget removes part of formatting:
```
\define mc() This is a `code` and __underline__.
<$wikify name="result" text="""<<mc>>""">
<<result>>
</$wikify>
```
* The output is: "This is a code and underline."
* While it should be: "This is a `code` and __underline__."
How to solve this issue?
!! Solution
In cases like this, the wikiparser does its magic first ...
see the below example, where it wikifies the text field of another tiddler, but viewing it with `<$view tiddler="someTiddler" mode="block" format="text"/>`
```
<$wikify name="something" text="""<$view tiddler="bla" mode="block" format="text"/>""">
<<something>>
</$wikify>
```
The `view` widget here assures that the plain text comes in ...
In the above example here you have no such "helper". So, you need to change macro as below:
```
\define mc()
\rules only
This is a `code` and __underline__.
\end
```
This way, you prevent the parser from kicking in in this macro block and it works. See [[Example 51: Rules Only Pragma]].
!! Remarks
This method is useful when the output of a macro should be written in a tiddler whitout wikifying! In other words the wikitext itself is writte.
!! Example
This tiddler shows an example for search in online dictionaries, databases, search engines. Here the title of tiddler has a word `avarice`. So to use the search is those online sites, just put the below macrocall inside the tiddler.
<<alert info "This example uses a template [[S.S./viewtemplate/lookup]]. This is a conditional template is used for all tiddlers have lookup tag.">>
* See also
<<link-lists filter:"[all[]prefix[Work with Lists]]">>
* The simplest
```
{{{ [tag[slide]] }}}
```
* List widget
```
<$list filter="[tag[slide]sort[title]]"/>
```
* List widget with custom output
```
<$list filter="[tag[ListWidget]sort[title]]">
<<currentTiddler>>
{{||$:/core/ui/ViewTemplate/tags}}
</$list>
```
* List widget with template
```
<$list filter="[tag[ListWidget]sort[title]]" template="$:/core/ui/ViewTemplate/subtitle"/>
```
* The simplest
```
{{{ filter }}}
e.g
{{{ [tag[slide]] }}}
```
<<<
{{{ [tag[slide]] }}}
<<<
Use template with list widget
```
<$list filter="[tag[slide]sort[title]]" template="$:/core/ui/ViewTemplate/subtitle"/>
```
<<<
<$list filter="[tag[slide]sort[title]]" template="$:/core/ui/ViewTemplate/subtitle"/>
<<<
Use a list with inputs
<$macrocall $name="wikitext-example-without-html"
src="""<ul>
<$list filter='One Two Three Four Five Six'>
<li><<currentTiddler>></li>
</$list>
</ul>
"""/>
Use a list widget with links
<$macrocall $name="wikitext-example-without-html"
src="""<ol>
<$list filter="[tag[tutorial]]">
<li><$link to={{!!title}}><$view field="title"/></$link></li>
</$list>
</ol>
"""/>
Use a list widget with links, an empty line cause block mode! Check if the empty line removed
<$macrocall $name="wikitext-example-without-html"
src="""<$list filter="[tag[tutorial]]">
<$link to={{!!title}}><$view field="title"/></$link>
</$list>
"""/>
This is a very intresting and important example and show how you can transclude a lot of tiddlers in on tiddler using list widget
```
<$list filter="[tag[slide]]">
<$link to={{!!title}}><$view field="title"/></$link>
<hr>
<$transclude/>
</$list>
```
<$list filter="[tag[slide]]">
<$link to={{!!title}}><$view field="title"/></$link>
<hr>
<$transclude/>
</$list>
Use a list widget with view widget. Note link widget without parameters automatically links to tiddler title
```
<$list filter='[tag[slide]]'>
<$link><$view field='title'/></$link> - <$view field='modified'/> - <$view field='tags'/><br>
</$list>
```
<$list filter='[tag[slide]]'>
<$link><$view field='title'/></$link> - ''Modified:'' <$view field="modified" format="date" template="DDD DDth MMM YYYY"/> - ''Tags:'' <$view field='tags'/><br>
</$list>
* Using `<<currentTiddler>>` variable
* If you put `<<currentTiddler>>` inside a tiddler it refere to the title of that tiddler, e.g
<$macrocall $name="wikitext-example-without-html"
src="""> <<currentTiddler>>"""/>
* If you use it with list widget it acts as the list variable abd iterate over all tiddlers one by one in the list
<$macrocall $name="wikitext-example-without-html"
src="""<$list filter="[tag[slide]]">
<br><<currentTiddler>>
</$list>
"""/>
* Using `<<currentTiddler>>` variable with ''checkbox''
Here the currentTiddler variable is used to list tiddlers tagged with slide and then you have a check box if clicked, another tag `myTag` will be added to that tiddler, if unchecked the `myTag` will be removed.
```
<$list filter='[tag[slide]]'>
<$checkbox tag=myTag/> <<currentTiddler>><br>
</$list>
```
* Click to add the `myTag` to tiddler.
<<<
<$list filter='[tag[slide]]'>
<$checkbox tag=myTag/> <<currentTiddler>><br>
</$list>
<<<
* Using list variable with ''checkbox''
Here the currentTiddler variable refers to this tiddler (the containing tiddler) and the new variable `ThisItem` refers to list variable.
@@.frmpurple
Note that when you use a variable parameter than inside the list widget `<<currentTiddler>>` refers to the containing tiddler, not the current item on the list.
@@
* Example
Here a list of tiddlers tagged with `slide` is shown and if you click, this tiddler tagged with that item.
```
<span style="color:#c2571a;">
<$list filter='[tag[slide]]' variable=ThisItem>
<$checkbox tiddler=<<currentTiddler>> tag=<<ThisItem>>/>
<<ThisItem>><br>
</$list>
</span>
```
* Click to add the the item as a tag to this tiddler. Here we used a little color!
<<<
<span style="color:#c2571a;">
<$list filter='[tag[slide]]' variable=ThisItem>
<$checkbox tiddler=<<currentTiddler>> tag=<<ThisItem>>/>
<<ThisItem>><br>
</$list>
</span>
<<<
* Using `emptymessage` parameter
If the list returns no results, the content of `emptyMessage` if used will be shown.
* Example
```
<$list filter='[tag[slide2]]' emptyMessage="This list returns ''nothing''! <br>Try with different parameters">
<<currentTiddler>><br>
</$list>
```
* Result
<<<
<$list filter='[tag[slide2]]' emptyMessage="This list returns ''nothing''! <br>Try with different parameters">
<<currentTiddler>><br>
</$list>
<<<
;How to use svg in TW?
:[[PMario|https://groups.google.com/d/msg/tiddlywiki/xoBAOY7OMGY/EKKTDPdIBAAJ]] instruction has beed given as below
!! First Rule: Remove the svg overhead
* Include onle the pure `<svg>` part.
* Remove all additional parameters eg:
** `<?xml version="1.0" encoding="UTF-8"?>` wrapper element
** the whole meta data block
* Depending on the svg editor software you use and how you save the file, an svg file can contain a lot of editor specific stuff, that is irrelevant for TW. The overhead can be significant, in terms of tiddler size and also usability within TW.
!! Second Rule: Use outline paths
* Use ''outline'' paths, so they can be filled!
* <div>
The advantage of the outline is, that we can use //CSS// fill style setting to change the svg color. eg:
```
.tc-image-chevron-left {
fill: green;}
```
</div>
!! Third Rule: Remove all hardcoded styling attributes
* The important part now is, we have to remove every //fill-attributes// from the paths.
* Internl stylings (those have been set in tiddler.svg) would always win, so it would not possible to use css
* Apply css class definitions instead, if you need to style icon elements.
!! Fourth Rule: Use proper default values
* The recommended settings can be as follow:
** `width="22pt" height="22pt"`
** `viewBox="0 0 128 128"`
!! Fifth Rule: Use a proper svg editor
* Depending on the editor, svg files can contain a lot of bloat.
** Make sure, you have a save option similar to: Optimized SVG in InkScape.
** You still have to remove some stuff manually, but the editor specific crap is gone.
!! Sixth Rule: Optimize the svg for size
* You can use: [[SvgOmg|https://jakearchibald.github.io/svgomg/]]. It has a lot of parameters, you can play with, to optimize the image size, without loosing quality.
!! Seventh Rule: Do not embed big images
* They only make your TW file big.
* As a crude rule of thumb, big is >100 kByte
! Examples
<<list-links "[tag[exmp059]] -[<currentTiddler>]">>
''Steve Harding''
<br><br>
Tax Department<br>
Tehran, Iran<br>
No 343<br>
Tel: +98 -21 -123456<br>
Email: [ext[mailto:steve@tax.com]]
; How use the range operator to produce zero padded number?
:Write a macro to add the zeros using addprefix operator
!! Example i
Generate numbers below 100 all padded with zeros as `001, 002, 010, 055, 099, 100`
```
\define zeropad-range(n:10)
<$list filter="[range[1,$n$]]" variable=x >
<$reveal type="lteq" default=<<x>> text="9" >
<$text text= {{{[<x>addprefix[00]]}}} />
</$reveal>
<$reveal type="gt" default=<<x>> text="9" >
<$text text= {{{[<x>addprefix[0]]}}} />
</$reveal>
</$list>
\end
```
!! Remarks
* The `list` widget generates number using `range` operator from 1 upto n.
* The first `reveal` widget check number if it is less than or equal to 9 and padded with two zeros.
* The second `reveal` widget checks number if it is greater than 9 and padded with one zero.
* The `text` widget return a simple number padded with required zeros inside `reveal` widgets.
!! Example ii
Produce number by 1000 padded with zeros to have fixed four digits ie: `0001, 0002, 0055, 0285, 0999, 1000`
```
\define zeropad-range4(n:10)
<$list filter="[range[1,$n$]]" variable=x >
<$reveal type="lteq" default=<<x>> text="9" >
<$text text= {{{[<x>addprefix[000]]}}} />
</$reveal>
<$reveal type="gt" default=<<x>> text="9" >
<$reveal type="lt" default=<<x>> text="99" >
<$text text= {{{[<x>addprefix[00]]}}} />
</$reveal>
</$reveal>
<$reveal type="gt" default=<<x>> text="99" >
<$text text= {{{[<x>addprefix[0]]}}} />
</$reveal>
</$list>
\end
```
>>>>>>> a192026c46575e1131c1412c2eaf1ce470166685